Piszemy wielojęzyczny plugin!
FakeNick
14.09.2008
Słowem wstępu
W tym krótkim tutorialu postaram pokazać się Wam jak stworzyć wielojęzyczny plugin (np. po angielsku oraz polsku).
Przedstawione tu treści są dla troszeczkę bardziej zaawansowanych, więc jeżeli nigdy nie miałeś do czynienia z pisaniem plugin'ów, zabierz się za moje wcześniejsze tutoriale ;].
Zaczynamy!
Piszemy wielojęzyczny plugin!
Najpierw musimy sporządzić jakiś słownik (plik .txt z którego plugin będzie brał teksty wyświetlane graczowi).
Przykładowy słownik może wyglądać tak :
Będą to wiadomości wyświetlane, czy język gracza to polski.
Dla języka angielskiego będzie to :
Jak już pewnie zauważyliście wiadomość zapisana w słowniku składa się z jej nazwy (MSG_DEAD_PLAYER) i treści (cos).
Teraz możecie stworzyć już własny słownik .
Aby nasz plugin mógł być wielojęzyczny, musimy najpierw zarejestrować słownik dla niego.
Robimy to dzięki komendzie :
Plik .txt musi znajdować się a w
Robimy to wywołując instrukcję :
Instrukcję client_print zapewne już znacie. id to identyfikator gracza. %L mówi silnikowi gry, że ta wiadomość ma zostać pobrana ze słownika.
LANG_PLAYER to instrukcja określająca, że wiadomość ma być w takim języku, jaki gracz ma ustawiony w amx_langmenu.
Ostatni, ale najważniejszy parametr ("JAKAS_WIAD") to nazwa wiadomości w słowniku .
Słowem zakończenia
Mam nadzieję, że ten krótki tutorial pomógł Wam i rozjaśnij sprawę pisania plugin'ów wielojęzycznych.
W tym krótkim tutorialu postaram pokazać się Wam jak stworzyć wielojęzyczny plugin (np. po angielsku oraz polsku).
Przedstawione tu treści są dla troszeczkę bardziej zaawansowanych, więc jeżeli nigdy nie miałeś do czynienia z pisaniem plugin'ów, zabierz się za moje wcześniejsze tutoriale ;].
Zaczynamy!
Piszemy wielojęzyczny plugin!
Najpierw musimy sporządzić jakiś słownik (plik .txt z którego plugin będzie brał teksty wyświetlane graczowi).
Przykładowy słownik może wyglądać tak :
[pl] MSG_DEAD_PLAYER = cos
Będą to wiadomości wyświetlane, czy język gracza to polski.
Dla języka angielskiego będzie to :
[en] MSG_DEAD_PLAYER = something
Jak już pewnie zauważyliście wiadomość zapisana w słowniku składa się z jej nazwy (MSG_DEAD_PLAYER) i treści (cos).
Teraz możecie stworzyć już własny słownik .
Aby nasz plugin mógł być wielojęzyczny, musimy najpierw zarejestrować słownik dla niego.
Robimy to dzięki komendzie :
register_dictionary("nazwa_słownika.txt")nazwa_slownika to nazwa pliku słownika.
Plik .txt musi znajdować się a w
addons/amxmodx/data/langTeraz chcemy, aby wiadomość wypisywana dla gracza była pobierana z naszego słownika.
Robimy to wywołując instrukcję :
client_print(id,print_center,"%L",LANG_PLAYER,"MSG_DEAD_PLAYER")Pewnie po obejrzeniu tego kawałka kodu złapaliście się za głowę, ale już spieszę z wyjaśnieniem go.
Instrukcję client_print zapewne już znacie. id to identyfikator gracza. %L mówi silnikowi gry, że ta wiadomość ma zostać pobrana ze słownika.
LANG_PLAYER to instrukcja określająca, że wiadomość ma być w takim języku, jaki gracz ma ustawiony w amx_langmenu.
Ostatni, ale najważniejszy parametr ("JAKAS_WIAD") to nazwa wiadomości w słowniku .
Słowem zakończenia
Mam nadzieję, że ten krótki tutorial pomógł Wam i rozjaśnij sprawę pisania plugin'ów wielojęzycznych.
berix
16.11.2008
wszstko spoko dopubi to tylko odnosi sie do
client_printa co z innymi metodami wyświetlania:
register_menucmd(register_menuid())
len += format()
show_hudmessage()
R3X
20.12.2008
Działa ze wszystkimi funkcjami operującymi na ciągach formatujących.
Warto też wspomnieć o pliku common.txt, zawiera przetłumaczone na wiele języków różne przydatne słowa/komunikaty - głównie do menu.
Słownikowe frazy mogą też zawierać instrukcje formatujące.
Warto też wspomnieć o pliku common.txt, zawiera przetłumaczone na wiele języków różne przydatne słowa/komunikaty - głównie do menu.
Słownikowe frazy mogą też zawierać instrukcje formatujące.
Wtedy musimy pamiętać tylko o kolejności:[pl]
MSG_NR_1 = Wiadomosc nr 1 do gracza o nicku %s
new playerName[40]; get_user_name(id,playerName,39); client_print(id,print_center,"%L",LANG_PLAYER,"MSG_NR_1", playerName);
GT Team 23.04.2013
Jeszcze jedno pytanie, co się stanie gdy zamiast tak :
new playerName[40]; get_user_name(id,playerName,39) client_print(id,print_center,"%L",LANG_PLAYER,"MSG_NR_1", playerName)
dam tak :
new playerName[40]; get_user_name(id,playerName,39); client_print(id,print_center,"%L", id ,"MSG_NR_1", playerName)
sebul
23.04.2013
Nic, wyświetli to samo.Jeszcze jedno pytanie, co się stanie gdy zamiast tak :
new playerName[40]; get_user_name(id,playerName,39) client_print(id,print_center,"%L",LANG_PLAYER,"MSG_NR_1", playerName)
dam tak :
new playerName[40]; get_user_name(id,playerName,39); client_print(id,print_center,"%L", id ,"MSG_NR_1", playerName)