Jump to content

návod Jak udělat vícejazyčný příkaz


MarcoCZ

Recommended Posts

[TUT] Jak udělat vícejazyčný příkaz 

 

 

Je to velmi jednoduchý Tutorial 

 

 

1)

 

Nadefinujeme si pár věcí

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //definie DCMD
new Jazyk[MAX_PLAYERS] = 0; //Nastaví defaultní jazyk na češtinu
#define ZELENA 0x31A021FF //Nadefinovaná zelená barva

2)

 

public OnPlayerConnect(playerid)

SendClientMessage(playerid, ZELENA, "Původní jazyk je Čeština");
SendClientMessage(playerid, ZELENA, "Pokud budete chtít změnit jazyk použíte příkaz podle jazyku [ /english /slovak /czech ] "); //Zde je příkaz při připojení , že si můžete změnit jazyk pomocí příkazu

3)

 

public OnPlayerCommandText(playerid, cmdtext[])

dcmd(czech,5,cmdtext);
dcmd(english,7,cmdtext);
dcmd(slovak,6,cmdtext);
dcmd(help,4,cmdtext);

4)

 

Vložíme někde na konec MODU

dcmd_czech(playerid , params[]){
    #pragma unused params
Jazyk[playerid] = 0; //Nastaví jazyk na Češtinu [0]
SendClientMessage(playerid,0xC0C0C0FF,"Vybrál sis český jazyk");
    return 1;
}
//----------------------------------------------------------------------------------------------------------------
dcmd_english(playerid , params[])
{
    #pragma unused params
Jazyk[playerid] = 1; //Nastaví jazyk na Angličtina [1]
SendClientMessage(playerid,0xC0C0C0FF,"You selectet english language");
    return 1;
}
//----------------------------------------------------------------------------------------------------------------
dcmd_slovak(playerid , params[])
{
    #pragma unused params
Jazyk[playerid] = 2; //Nastaví jazyk na Slovenština [2]
SendClientMessage(playerid,0xC0C0C0FF,"Vybrál si si slovensky jazyk");
    return 1;
}
//----------------------------------------------------------------------------------------------------------------
dcmd_help(playerid , params[])
{
    #pragma unused params
switch (Jazyk[playerid])
        {
            case 0: //Napíše zprávu pokud má jazyk vybraný CZ
            {
                SendClientMessage(playerid,0xFFD400AA,"Zde bude váš řádek č.1");
                SendClientMessage(playerid,0xFFD400AA,"Zde bude váš řádek č.2");
            }
            case 1: //Napíše zprávu pokud má jazyk vybraný EN
            {
                SendClientMessage(playerid,0xFFD400AA,"This is line 1");
                SendClientMessage(playerid,0xFFD400AA,"This is line 2");
            }
            
            case 2: //Napíše zprávu pokud má jazyk vybraný SK
            {
                SendClientMessage(playerid,0xFFD400AA,"Tu bude váš riadok č.1");
                SendClientMessage(playerid,0xFFD400AA,"Tu bude váš riadok č.2");
            }
        }
return 1;
}
Jak to vypadá celé ? 

#include <a_samp>
//----------------------------------------------------------------------------------------------------------------
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //definie DCMD
new Jazyk[MAX_PLAYERS] = 0; //Nastaví defaultní jazyk na češtinu
#define ZELENA 0x31A021FF //Nadefinovaná zelená barva

//----------------------------------------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, ZELENA, "Původní jazyk je Čeština");
SendClientMessage(playerid, ZELENA, "Pokud budete chtít změnit jazyk použíte příkaz podle jazyku [ /english /slovak /czech ] "); //Zde je příkaz při připojení , že si můžete změnit jazyk pomocí příkazu
return 1;
}
//----------------------------------------------------------------------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(czech,5,cmdtext);
dcmd(english,7,cmdtext);
dcmd(slovak,6,cmdtext);
dcmd(help,4,cmdtext);
return 0;
}
//----------------------------------------------------------------------------------------------------------------
dcmd_czech(playerid , params[])
{
#pragma unused params
Jazyk[playerid] = 0; //Nastaví jazyk na Češtinu [0]
SendClientMessage(playerid,0xC0C0C0FF,"Vybrál sis český jazyk");
return 1;
}
//----------------------------------------------------------------------------------------------------------------
dcmd_english(playerid , params[])
{
#pragma unused params
Jazyk[playerid] = 1; //Nastaví jazyk na Angličtina [1]
SendClientMessage(playerid,0xC0C0C0FF,"You selectet english language");
return 1;
}
//----------------------------------------------------------------------------------------------------------------
dcmd_slovak(playerid , params[])
{
#pragma unused params
Jazyk[playerid] = 2; //Nastaví jazyk na Slovenština [2]
SendClientMessage(playerid,0xC0C0C0FF,"Vybrál si si slovensky jazyk");
return 1;
}
//----------------------------------------------------------------------------------------------------------------
dcmd_help(playerid , params[])
{
#pragma unused params
switch (Jazyk[playerid])
{
case 0: //Napíše zprávu pokud má jazyk vybraný CZ
{
SendClientMessage(playerid,0xFFD400AA,"Zde bude váš řádek č.1");
SendClientMessage(playerid,0xFFD400AA,"Zde bude váš řádek č.2");
}
case 1: //Napíše zprávu pokud má jazyk vybraný EN
{
SendClientMessage(playerid,0xFFD400AA,"This is line 1");
SendClientMessage(playerid,0xFFD400AA,"This is line 2");
}

case 2: //Napíše zprávu pokud má jazyk vybraný SK
{
SendClientMessage(playerid,0xFFD400AA,"Tu bude váš riadok č.1");
SendClientMessage(playerid,0xFFD400AA,"Tu bude váš riadok č.2");
}
}
return 1;
}
//----------------------------------------------------------------------------------------------------------------

 

 

 

ODZKOUŠENO ! SÁM JSEM TO TESTOVAL :)

Link to comment
Share on other sites

Dobré, len pár maličkostí, akože by to nefungovalo.

Tagy sa nepoužívajú.
+REP tu neexistuje.
Hore ti chýbajú includy, takže skript by sám o sebe nefungoval. (Aj keď v "JAK TO VYZERÁ CELÉ ich máš.
Prilož pri použití includu aj link na neho.
Pragma neraď v tutoriáloch.
Ajtak by to nefungovalo - ak nepoužijem žiadny príkaz na tvorbu jazyka a potom help, tak padne server. Keď sa pripojím nenastavuješ mi totiž môj jazyk.


4/5*100%

Link to comment
Share on other sites

Dobré, len pár maličkostí, akože by to nefungovalo.

 

Tagy sa nepoužívajú.

+REP tu neexistuje.

Hore ti chýbajú includy, takže skript by sám o sebe nefungoval. (Aj keď v "JAK TO VYZERÁ CELÉ ich máš.

Prilož pri použití includu aj link na neho.

Pragma neraď v tutoriáloch.

Ajtak by to nefungovalo - ak nepoužijem žiadny príkaz na tvorbu jazyka a potom help, tak padne server. Keď sa pripojím nenastavuješ mi totiž môj jazyk.

 

 

4/5*100%

 

Jo tak +rep tady asi není , nevím , ale zdálo se mi že jo :d nevadí :) žádny include tam nemám . a mě to funguje normálně . Nevím proč tobě ne. Mě to načte v pohodě . To při připojení nastaví automaticky 0 ,a to zmamená že je to čeština :) Ale jinak dík :p

Link to comment
Share on other sites

PANE BOŽE!!! to už nikdo neumíte dělat Stocky ?!?
 

stock SendMessage(playerid,COLOR,CZ[],SK[])
{
switch (Jazyk[playerid])
{
case 1: SendClientMessage(playerid,COLOR,CZ);
case 2: SendClientMessage(playerid,COLOR,SK);
}
}

SendMessage(playerid,COLOR_RED,"AHOJ ČESKY!","AHOJ SLOVENSKY !");

1/10 zbytečnej návod 
Link to comment
Share on other sites

spacey-bitch-please.gif  facepalmer.gif




-------------------
Druhé kolo:
washe.gif

Ešte raz:
NEBUDE TO FUNGOVAŤ
1.Tvoj jazyk je otrasný - slovenština neexistuje, selectet tiež nie a aj si zle preložil tie vety v iných jazykoch.
2. Includ tam používaš DCMD, ktorý si nenapísal a A_SAMP, ktorý si nenapísal a na DCMD si nedal link.
3. Vyskúšaj si tvoj skript-fungovať nebude. Ako som písal, skúsim ešte raz:
Ak si nastavil hráčovi 0 pri kompilácii, tak pri connecte nie - príd, daj si anglinu, odpoj sa a pripoj. Vualá - angličtina znova ;).
 

Link to comment
Share on other sites

 

PANE BOŽE!!! to už nikdo neumíte dělat Stocky ?!?

 

stock SendMessage(playerid,COLOR,CZ[],SK[])
{
switch (Jazyk[playerid])
{
case 1: SendClientMessage(playerid,COLOR,CZ);
case 2: SendClientMessage(playerid,COLOR,SK);
}
}

 

SendMessage(playerid,COLOR_RED,"AHOJ ČESKY!","AHOJ SLOVENSKY !");

 

1/10 zbytečnej návod 

 

Každý se nějak učí ne ? 

Link to comment
Share on other sites

Každý se nějak učí ne ? 

Ano nebudu googlit a budu tady dělat Machra že umím udělat 90 řádku navíc :)

 

 

 

 

-------------------

Druhé kolo:

 

 

Ešte raz:

NEBUDE TO FUNGOVAŤ

Tak keď si taký tak aj ja budem:

1.Tvoj jazyk je otrasný - slovenština neexistuje, selectet tiež nie.

2. Includ tam používaš DCMD, ktorý si nenapísal a A_SAMP, ktorý si nenapísal.

3. Vyskúšaj si tvoj skript-fungovať nebude. Ako som písal, skúsim ešte raz:

Ak si nastavil hráčovi 0 pri kompilácii, tak pri connecte nie - príd, daj si anglinu, odpoj sa a pripoj. Vualá - angličtina znova ;).

/=======================/

Tyvole:D jsem se od tebe nakazil že taky kritizuju :d

Link to comment
Share on other sites

spacey-bitch-please.gif  facepalmer.gif

 

 

 

 

-------------------

Druhé kolo:

washe.gif

 

Ešte raz:

NEBUDE TO FUNGOVAŤ

Tak keď si taký tak aj ja budem:

1.Tvoj jazyk je otrasný - slovenština neexistuje, selectet tiež nie.

2. Includ tam používaš DCMD, ktorý si nenapísal a A_SAMP, ktorý si nenapísal.

3. Vyskúšaj si tvoj skript-fungovať nebude. Ako som písal, skúsim ešte raz:

Ak si nastavil hráčovi 0 pri kompilácii, tak pri connecte nie - príd, daj si anglinu, odpoj sa a pripoj. Vualá - angličtina znova ;).

 

Je to těžší psát na NTB rychle , sorry za mojí češtinu :) A jo jako to si snad každý pokročilý pawner potom dokáže nakodovat , to že když se odpojí tak při načtení se mu zase nastaví jazyk který si zvolil ve hře . Podívej se prosím pořádně , DMCD je tam nadefinované

 

Více

 

1)

Nadefinujeme si pár věcí

#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1 //definie DCMD
new Jazyk[MAX_PLAYERS] = 0; //Nastaví defaultní jazyk na češtinu
#define ZELENA 0x31A021FF //Nadefinovaná zelená barva

Ano nebudu googlit a budu tady dělat Machra že umím udělat 90 řádku navíc :)

 

A tak to stačí pro začátečníka ne ? A pokročilý pawner si pak z toho umí udělat i další věci  

Link to comment
Share on other sites

A tak to stačí pro začátečníka ne ? A pokročilý pawner si pak z toho umí udělat i další věci  

WOOOOT?! jake další věci ?

 

Tím bylo myšleno , že například si nastaví že po odpojení se mu to uloží do ini souboru (v registraci)

Link to comment
Share on other sites

Wilson, musel som :d.
Keby to bola chybička, tak dobre...
Ale skript nebude fungovať a to už stojí za kritiku :d.

*Si nastaví do ini súboru v registraci :d :d :d.
Ten čo pozerá návod na takýto skript, registráciu nemá ;).
*Jaký pokročilý pawner si to opraví???
Je to presne 16 znakov, to by ťa nezabilo napísať.

Link to comment
Share on other sites

Neco pro tebe :)

 

stock SendMessage(playerid,COLOR,CZ[],SK[])
{
    switch (Jazyk[playerid])
	{
	case 1: SendClientMessage(playerid,COLOR,CZ);
	case 2: SendClientMessage(playerid,COLOR,SK);
	}
}

stock ShowPlayerDialogEx(playerid,ID,STYLE,NADPIS[],NADPIS2[],TEXT[],TEXT2[],BUTTON1[],BUTTON2[],BUTTONsk[],BUTTONsk2[])
{
    switch(Jazyk[playerid])
    {
	case 1: ShowPlayerDialog(playerid,ID,STYLE,NADPIS,TEXT,BUTTON1,BUTTON2);
	case 2: ShowPlayerDialog(playerid,ID,STYLE,NADPIS2,TEXT2,BUTTONsk,BUTTONsk2);
    }
	return 1;
}

stock GameTextForPlayerEx(playerid,CZ[],EN[],Cas,Styl)
{
    switch(Jazyk[playerid])
    {
	case 1: GameTextForPlayer(playerid,CZ,Cas,Styl);
	case 2: GameTextForPlayer(playerid,EN,Cas,Styl);
    }
   	return 1;
}

stock SendMessageAll(COLOR,CZ[],EN[])
{
     for(new i = 0;i<MAX_PLAYERS;i++)
      {
       if(IsPlayerConnected(i))
	{
         switch(Jazyk[i])
         {
         case 1: SendClientMessage(i,COLOR,CZ);
         case 2: SendClientMessage(i,COLOR,EN);
         }
	}
       }
       return 1;
}

Wilson, musel som :d.
Keby to bola chybička, tak dobre...
Ale skript nebude fungovať a to už stojí za kritiku :d.

*Si nastaví do ini súboru v registraci :d :d :d.
Ten čo pozerá návod na takýto skript, registráciu nemá ;).

J chápu :d ale podle mě by fungoval  . . .

Link to comment
Share on other sites

Bolo by príjemné, keby si zmazal z hlavného príspevku
 

ODZKOUŠENO ! SÁM JSEM TO TESTOVAL :)

----------------------------------------------------------------------------
, pretože funkčné to rozhodne nie je a hento nie je pravda.

 

J chápu :d ale podle mě by fungoval  . . .

--------------------------------------------------------

Skús si to - nefungoval by.
Keď sa hráč pripojí, nepridelí mu jazyk 0.
Čiže predošlý hráč s jazykom angličtina na svojom ID zanechá angličtinu a ten čo sa pripojí na rovnaké ID ju bude mať tiež :crazy: .

Link to comment
Share on other sites

Najlepší je language system, ktorý bude načítavať priamo zo súboru ako tie vaše blbé stocky .. (návod nič moc).

Mr. Wilszon35, sprav stock (ShowPlayerDialogExkde bude 10 jazykov + použitie, to som zvedavý ako by to hnusne vyzeralo  :p

Podmienky pre príklad (použitie) pre Wilszona: Každý "nadpis" viac ako 15 znakov, každý "hlavný text" minimálne 50 znakov :d

Link to comment
Share on other sites

Najlepší je language system, ktorý bude načítavať priamo zo súboru ako tie vaše blbé stocky .. (návod nič moc).

Mr. Wilszon35, sprav stock (ShowPlayerDialogExkde bude 10 jazykov + použitie, to som zvedavý ako by to hnusne vyzeralo  :p

Podmienky pre príklad (použitie) pre Wilszona: Každý "nadpis" viac ako 15 znakov, každý "hlavný text" minimálne 50 znakov :d

Ted si mi to nandal !:d

Ješte že jsem optimista :)

Link to comment
Share on other sites

 

PANE BOŽE!!! to už nikdo neumíte dělat Stocky ?!?

 

stock SendMessage(playerid,COLOR,CZ[],SK[])
{
switch (Jazyk[playerid])
{
case 1: SendClientMessage(playerid,COLOR,CZ);
case 2: SendClientMessage(playerid,COLOR,SK);
}
}

 

SendMessage(playerid,COLOR_RED,"AHOJ ČESKY!","AHOJ SLOVENSKY !");

 

1/10 zbytečnej návod 

 

nemusí to být nutně stock může to být funkce

 

SendMessage(playerid,COLOR,CZ[],SK[])
{
switch (Jazyk[playerid])
{
case 1: SendClientMessage(playerid,COLOR,CZ);
case 2: SendClientMessage(playerid,COLOR,SK);
}
}

Otvor okno a vyskoč :d :d :d a #include <a_samp> si kde nechal :d :d :d

[iNAK PEKNY TUT]

includ a_samp je základ všeho pokud neni použit jiný includ tak se počíta s tim že nikdo neni tak blbej a to nahoře si smaže :d

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