Language

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Post Reply
User avatar
Vebsteris
Jau po truputį tampa savu
Posts: 195
Joined: 2011 Aug 20 14:08

Language

Post by Vebsteris »

Kaip padaryti, kai nusistatai serveryje kalba lietuvių, sakykim, spausdintų kokį nors tekstą, su client_print pvz.?

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Language

Post 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
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
Vebsteris
Jau po truputį tampa savu
Posts: 195
Joined: 2011 Aug 20 14:08

Re: Language

Post 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.

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Language

Post 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)
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
Vebsteris
Jau po truputį tampa savu
Posts: 195
Joined: 2011 Aug 20 14:08

Re: Language

Post 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

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Language

Post 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.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
Vebsteris
Jau po truputį tampa savu
Posts: 195
Joined: 2011 Aug 20 14:08

Re: Language

Post 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");}

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot], Bing [Bot] and 2 guests