Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Piszemy wielojęzyczny plugin!


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 FakeNick

    Zaawansowany

  • Użytkownik

Reputacja: 52
Pomocny

  • Postów:115
  • GG:
  • Lokalizacja:Słupca
Offline

Napisano 14.09.2008 18:24

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 :
[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/lang
Teraz 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.
  • +
  • -
  • 3

#2 berix

    Wszechwidzący

  • Użytkownik

Reputacja: 34
Życzliwy

  • Postów:254
  • Lokalizacja:Ruda sl (slaskie)
Offline

Napisano 16.11.2008 12:17

wszstko spoko dopubi to tylko odnosi sie do
client_print
a co z innymi metodami wyświetlania:

register_menucmd(register_menuid())

len += format()

show_hudmessage()

  • +
  • -
  • 0

#3 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 20.12.2008 13:47

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.

[pl]
MSG_NR_1 = Wiadomosc nr 1 do gracza o nicku %s

Wtedy musimy pamiętać tylko o kolejności:
new playerName[40];
get_user_name(id,playerName,39);
client_print(id,print_center,"%L",LANG_PLAYER,"MSG_NR_1", playerName);

  • +
  • -
  • 2

#4 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 23.04.2013 17:05

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)

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 23.04.2013 17:48

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)

Nic, wyświetli to samo.
  • +
  • -
  • 0

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 25.04.2013 13:56

A ma to wpływ na "przemienianie" języka z eng na pl co np. X sec ?

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych