Page 1 of 1

Language

Posted: 2011 Nov 25 19:30
by Vebsteris
Kaip padaryti, kai nusistatai serveryje kalba lietuvių, sakykim, spausdintų kokį nors tekstą, su client_print pvz.?

Re: Language

Posted: 2011 Nov 25 19:37
by aaarnas
public plugin_init() { register_dictionary("langfile.txt") }

client_print(id, print_chat, "%L", id, "LANG_TEXT")
client_print(0, print_chat, "%L", LANG_PLAYER, "LANG_TEXT")

langfile.txt:

[en]
LANG_TEXT = Hello

[lt]
LANG_TEXT = Labas

Re: Language

Posted: 2011 Nov 25 19:43
by Vebsteris
Blin sufailinau galvodamas. ;D Pasakysiu pilnai ko man reikia.

Turiu tą ad_manager pluginą.

http://forums.alliedmods.net/showthread.php?t=27814

Ir man reikia, kad būtų skirtingi .ini failai, su skirtingomis kalbomis.

Re: Language

Posted: 2011 Nov 25 19:51
by aaarnas
Jei nori su multilangual daryti, tai teks visus tuos tekstus rašyti tame lang failiuke. Kitu atveju visai kitaip reikės pluginą kurti. Su pačiu multilangual nepadarysi, teks jį pačiam daryti, kad skaitytų tam tikrą ini failiuką reikiamam vartotojui.

Kad gauti vartotojo kalbą, tai su funkcija:

Code: Select all

new lang[4]get_user_info(id, "lang", charsmax(lang), lang)

Re: Language

Posted: 2011 Nov 25 20:02
by Vebsteris
Aišku. Pats bandysiu pasidaryti tada. O galima padaryti su if, else, sakykim:

Code: Select all

if(lang == en) {}
Aišku, čia neteisingas būdas man atrodo. ;D

Re: Language

Posted: 2011 Nov 25 20:56
by aaarnas
if(equal(lang, "en"))
arba
if(lang[0] == 'e' && lang[1] == 'n')

Jei labai daug kalbų, tai galima dar su switch žaisti, bet užteks equal.

Geriausia tai susirašyti ini faile panašiai kaip ir lang faile pvz:
[en]
rašau visus angliškus

[lt]
rašai visus lietuviškus.

Po to užkrauni į cellarray (arba trie) ir tikrini pagal tai ar yra tokia kalba užkrauta, tai rodai tokias žinutes, ne tai kitu atveju. Na čia kaip padarysi taip. Daryk ir išmoksi.

Re: Language

Posted: 2011 Nov 25 21:20
by Vebsteris
Na su cellarray aš dar nemoku. Bet radau kodą, tik neišsprendžiu kaip lang padaryti.

Code: Select all

#include <amxmodx>#include <amxmisc> #define PLUGIN "Easy Advertiser"#define VERSION "1.3.1"#define AUTHOR "Aver" #define MAX_ADS 32 new gCvarTime;new gMsgSayText; new Array:gAdvertisements;new gAdvertisement; public plugin_init(){    register_plugin(PLUGIN, VERSION, AUTHOR);        gCvarTime = register_cvar("ea_time", "45");    gMsgSayText = get_user_msgid("SayText");        gAdvertisements = ArrayCreate(192, MAX_ADS);        set_task(10.0, "LoadAdvertisements");} public LoadAdvertisements(){    new file[64];        get_configsdir(file, charsmax(file));    formatex(file, charsmax(file), "%s/easy_advertiser.ini", file);        if(file_exists(file))    {               new fHandle = fopen(file, "rt");                if(!fHandle)            return;                new szLine[192];                for(new i; i < MAX_ADS && !feof(fHandle); i++)        {            fgets(fHandle, szLine, charsmax(szLine));                        if(!szLine[0] || szLine[0] == ' ' || szLine[0] == ';')            {                i--;                continue;            }                        ArrayPushString(gAdvertisements, szLine);        }                set_task(get_pcvar_float(gCvarTime), "ShowAdvertisement");                fclose(fHandle);    }    else        log_amx("Brak pliku 'easy_advertiser.ini' na serwerze");} public ShowAdvertisement(){    if(gAdvertisement >= ArraySize(gAdvertisements))        gAdvertisement = 0;        new szText[192];    formatex(szText, charsmax(szText), "%a", ArrayGetStringHandle(gAdvertisements, gAdvertisement));        if(contain(szText, "[team]") != -1 && contain(szText, "[/team]") != -1)    {        replace_all(szText, charsmax(szText), "[team]", "^x03");        replace_all(szText, charsmax(szText), "[/team]", "^x01");    }        if(contain(szText, "[green]") != -1 && contain(szText, "[/green]") != -1)    {        replace_all(szText, charsmax(szText), "[green]", "^x04");        replace_all(szText, charsmax(szText), "[/green]", "^x01");    }        new players[32], num;    get_players(players, num, "ch");        if(contain(szText, "[you]") != -1)    {        for(new i; i < num; i++)        {            new szTemp[192], szName[32];            copy(szTemp, charsmax(szTemp), szText);            get_user_name(players[i], szName, charsmax(szName));            replace_all(szTemp, charsmax(szTemp), "[you]", szName);            message_begin(MSG_ONE, gMsgSayText, {0,0,0}, players[i]);            write_byte(players[i]);            write_string(szTemp);            message_end();        }    }    else    {        for(new i; i < num; i++)        {            message_begin(MSG_ONE, gMsgSayText, {0,0,0}, players[i]);            write_byte(players[i]);            write_string(szText);            message_end();        }    }        gAdvertisement++;    set_task(get_pcvar_float(gCvarTime), "ShowAdvertisement");}