Jump to content

návod Multi jazyk pre GM [**]


Recommended Posts

Hm.. Zaujímavý návod.. Veľa návodov čo som videl bolo v príkaze že ked pLang == 0 tak mu pošle správu v tom jazyku, else pLang == 1 tak mu pošle tiež v inom :d Ja som chcel tiež urobiť Multi Lang GM ale nechcelo sa mi stým if pLang blabla babrať :d Toto je lepšie, možno využijem ;) Dobrý návod.

Link to comment
Share on other sites

  • Hlavní moderátor

Jsem rád, že jednou za čas přibude dobrý návod. Díky ti za to. A taky za to, že dokážeš, na rozdíl od mnoha jiných, dodržet předepsanou šablonu.

Link to comment
Share on other sites

Hezké použití definic. Doporučuji do formSCM použít nějakou existující variantu SendClientMessageFormat, pokud má lepší správu bufferu; nebude aspoň potřeba _size. Taky by bylo hezké, kdyby SCM podporovalo klasický idiom return SendClientMessage(...);, ale to se dá zařídit:

stock USE_VALUE(val) return val;
#define SCM(%0,%1,%2) USE_VALUE(GetPlayerLang(%0) == 0 ? SendClientMessage(%0, %1, %2_SK) : GetPlayerLang(%0) == 1 ? SendClientMessage(%0, %1, %2_CZ) : 0)

 

Něco podobného jsem taky udělal, akorát místo definic to používá funkce a kontroluje adresu řetězce v paměti při zjišťování překladu.

Link to comment
Share on other sites

Proč nepoužít new? Např.

new
    Language[2][2][] = { // [0 = Čeština, 1 = Angličtina][počet řádků]
    {
        "Vítej %s",
        "Auto"
    },
    {
        "Welcome %s",
        "Car"
        // nebo do includu např. #include <languages/en.pwn> s obsahem "Welcome %s", "Car"
    }
};

Použití např. nastavíme Jazyk:

new
    lang[MAX_PLAYERS];

default bude 0 tudíž Čeština
nastavíme Jazyk

lang[playerid] = 0; // nebo 1 což je Angličtina

a použití bude

Language[lang[playerid]][0] // pochopitelně 0 je řádek Vítej, Welcome
Language[lang[playerid]][1] // 1 je řádek Auto, Car

např.

format(cesta, sizeof(cesta), Language[lang[playerid]][0], PlayerName(playerid));

Zkouška:

 

Edited by rEf
Link to comment
Share on other sites

před 5 hodinami, rEf said:

Proč nepoužít new? Např.


new
    Language[2][2][] = { // [0 = Čeština, 1 = Angličtina][počet řádků]
    {
        "Vítej %s",
        "Auto"
    },
    {
        "Welcome %s",
        "Car"
        // nebo do includu např. #include <languages/en.pwn> s obsahem "Welcome %s", "Car"
    }
};

Použití např. nastavíme Jazyk:


new
    lang[MAX_PLAYERS];

default bude 0 tudíž Čeština
nastavíme Jazyk


lang[playerid] = 0; // nebo 1 což je Angličtina

a použití bude


Language[lang[playerid]][0] // pochopitelně 0 je řádek Vítej, Welcome
Language[lang[playerid]][1] // 1 je řádek Auto, Car

např.


format(cesta, sizeof(cesta), Language[lang[playerid]][0], PlayerName(playerid));

Zkouška:

 

 

 

Ano, pri 10 textových reťazcoch o dĺžke 25 znakov možno...

Ale čo keď bude v móde 100 000 textov o dĺžke 500-10000 znakov (hovorím teraz o dialogoch) :d nemyslím že by to bolo lepšie ;)

Edited by Quiter
Link to comment
Share on other sites

Podľa mňa by sa dal ten návod zlepšiť. Rozhodne by som kód nedával do spoileru, ale do code, takto sa to zle číta.

Link to comment
Share on other sites

 Quitertak 10 000 znaku na řádek nehrozí -_- a 100 000 řádků taky jen tak nehrozí pokud tam nemáš *** ... :-D A i kdyby samozřejmě s přiměřeným stringem který to pobere jak by se to chovalo ti teď neřeknu ještě jsem to nezkusil.

No až budu mít čas tak to vyzkouším.

wd2kf3O.png

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...