Invouk 91 Odesláno: 9. Duben, 2017 Share Odesláno: 9. Duben, 2017 (upraveno) Popis problému: Mám problém, že máme mód a spravili sme si multilanguage systém no problém je, že nám to nejako nejde viz. Chyby/varování kompilátoru a při běhu: V hre to zobrazí ale bez %s alebo iných charakterov, takže iba čístý text,Problém je len pri prenášani argumentov u prenášaní Kód: stock SCMF(playerid, colour, stringCZ[], stringSK[], stringEN[], va_args<>) { switch(GetPlayerLang(playerid)) { case CZ: { new out[256 + 1]; va_format(out, sizeof(out), stringCZ, va_start); SendClientMessage(playerid, colour, out); } case SK: { new out[256 + 1]; va_format(out, sizeof(out), stringSK, va_start); SendClientMessage(playerid, colour, out); } case EN: { new out[256 + 1]; va_format(out, sizeof(out), stringEN, va_start); SendClientMessage(playerid, colour, out); } } return 1; } Dodatečné poznámky: GetPlayerLang(playerid); Vracia hodnoty CZ / SK / EN Edited 10. Duben, 2017 by eXpresS Link to comment Share on other sites More sharing options...
0 Hlavní moderátor vEnd 279 Odesláno: 10. Duben, 2017 Hlavní moderátor Share Odesláno: 10. Duben, 2017 Můžeš nám ukázat, jak tu funkci voláš, a co myslíš tím "Vracia hodiny CZ / SK / EN"? Z toho, co jsi napsal, mi není nějak jasné, s čím máš vlastně problém. Link to comment Share on other sites More sharing options...
0 Administrátor Ewwe 434 Odesláno: 10. Duben, 2017 Administrátor Share Odesláno: 10. Duben, 2017 Můžeš nám ukázat, jak tu funkci voláš, a co myslíš tím "Vracia hodiny CZ / SK / EN"? Z toho, co jsi napsal, mi není nějak jasné, s čím máš vlastně problém. funkc GetPlayerLang vrací CZ enebo SK nebo NE Link to comment Share on other sites More sharing options...
0 Scydo 397 Odesláno: 10. Duben, 2017 Share Odesláno: 10. Duben, 2017 va_start musí mít startovní hodnotu par. Link to comment Share on other sites More sharing options...
0 Invouk 91 Odesláno: 10. Duben, 2017 Author Share Odesláno: 10. Duben, 2017 va_start musí mít startovní hodnotu par. Môžeš mi to prosím ťa nejako lepšie definovať, tento spôsob cez YSI som len niekde našiel, a tak som ti nejako prerobil ale funguje to kto vie jako, alebo ak máte lepší nápad než bez YSI kludne. Link to comment Share on other sites More sharing options...
0 Scydo 397 Odesláno: 10. Duben, 2017 Share Odesláno: 10. Duben, 2017 Spíše si udělej fci individuálně na každý jazyk, protože takhle u delších textů, bude ta fce ohromně dlouhá. Link to comment Share on other sites More sharing options...
0 Tanga 131 Odesláno: 10. Duben, 2017 Share Odesláno: 10. Duben, 2017 (upraveno) sprav si pole stringy[pocet_jazykov][max_velkost_stringu]Pošli mu vždy ten slovnesky, ale pri poslani ho nahraď za ten prislušny jazyk čo ma (vyhladaš ten string čo pošleš v slovenskom jazyku a len vratiš string z vedlajšieho stlpca (ineho jazyka). SendClientMessage(playerid, color, Translate(language(playerid), "Toto sa pošle"); .. stock Translate(Lang:lang, string[]) { for (...) { miesto = 0; // miesto je poloha slovenskeho stringu } return poleStringov[_:lang][miesto]; } .. new poleStringov[][] = {{"Toto sa pošle"}, {"This will be sent"}, {"Esto se mandará"}}; enum jazyky { SK, EN, ES }; Zaberie to viac RAM, ale bude to prehladnejšie a lahšie na upravu. Nebudeš tam mať žiadne define (MSG_EN_2), ale pri posielani textu presne uvidiš po slovensky aky to je text. Edited 10. Duben, 2017 by Tanga Link to comment Share on other sites More sharing options...
0 Invouk 91 Odesláno: 11. Duben, 2017 Author Share Odesláno: 11. Duben, 2017 (upraveno) Zaujímavý spôsob, ale chcel by som použiť to čo mám, bytočne načítavať stringy, všetký keď bude X tisíc slóv / písmenTakže by som bol rád ak by sa oparvilo poprípade inak spravilo to moje. stock SCML(playerid, color, lcz[], lsk[], len[]) { switch(GetPlayerLang(playerid)) { case CZ:SendClientMessage(playerid, color, lcz); case SK:SendClientMessage(playerid, color, lsk); case EN:SendClientMessage(playerid, color, len); } return 1; } Toto nám pohode ide, ale ako neviem si len poradiť s formátovaním ako prenášať poprípade tie premmenné cez stock do odosielanie správ. Edited 11. Duben, 2017 by eXpresS Link to comment Share on other sites More sharing options...
0 Scydo 397 Odesláno: 12. Duben, 2017 Share Odesláno: 12. Duben, 2017 Zaujímavý spôsob, ale chcel by som použiť to čo mám, bytočne načítavať stringy, všetký keď bude X tisíc slóv / písmen Tangovo řešení je 100x lepší. Takhle, podle tvého, budeš mít ve formátování trojnásobek proměnných na dané specifikátory a v tom se pak už později nerozeznáš. O rychlosti, a prosté pitomosti ani nemluvě. Link to comment Share on other sites More sharing options...
Dotaz
Invouk 91
Popis problému:
Mám problém, že máme mód a spravili sme si multilanguage systém no problém je, že nám to nejako nejde viz.
Chyby/varování kompilátoru a při běhu:
V hre to zobrazí ale bez %s alebo iných charakterov, takže iba čístý text,
Problém je len pri prenášani argumentov u prenášaní
Kód:
Dodatečné poznámky:
Vracia hodnoty CZ / SK / EN
Edited by eXpresSLink to comment
Share on other sites
8 odpovědí na tuto otázku
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now