Jump to content

návod [Návod] Náhodný text.


rEf

Recommended Posts

Verze 2013

 

 

Zdravím trochu jsem se nudil a tak jsem si udělal do modů Náhodné texty no dám vám to i sem...

Jak to funguje?

Každých 10 minut se do chatu vypíše '' Bla bla bla náhodný text zza $bla bla bla ''.
Pokud hráč napíše jako první náhodný text, automaticky dostane peníze a náhodný text se vypne což znamená že pokud někdo napíše další ten náhodný text už to nic udělá.
Pokud žádný hráč nenapíše náhodný text automaticky se vypne do 2 minut což znamená že pokud někdo napíše náhodný text už to nic neudělá.

Dělal jsem to chvilku nejspíš to jde i lépe tak tady to máte i trochu popsané. ( icon_e_biggrin.gif )

1. Někam nahoru do modů.

 


new RandomCode1[MAX_PLAYERS]; // Náhodný text číslo 1.

new RandomCode2[MAX_PLAYERS]; // Náhodný text číslo 2.

new RandomCode3[MAX_PLAYERS]; // Náhodný text číslo 3.

new RandomCodeStopTimer[MAX_PLAYERS]; // Pro Timer který vypne náhodný text v případě že ho nikdo do 2 minut nenapíše nebo pokud ho hráč napíše aby se za 2 minuty nevypnul bude zničen.

2. Do public OnFilterScriptInit() nebo public OnGamemodeInit() někam nahoru.




SetTimer("RandomCode", 600000, true); // 600000 = 10 minut

3. Někam do modů spíše nahoře no nevím. ( icon_e_biggrin.gif )




forward RandomCode(); // Forward.

public RandomCode()

{

new string[256];

new rcode = random(3); // Vybere jeden ze 3 nahodných textu.

switch(rcode)

{

case 0:

{

for (new i = 0; i < GetMaxPlayers(); i++) {

RandomCode1[i] = 1;

RandomCodeStopTimer[i] = SetTimer("RandomCodeStop", 120000, false); // Za 2 minuty náhodný text vypne pokud nikdo neodpovi.

} // Zapne všem hráčum náhodný text číslo 1 a stop timer.

format(string, sizeof(string), "[ {C2A2DA}Text{FFFFFF} ] Kdo první napíše náhodný text do 2m. '' a5bXOq56i '' získá {33AA33}$50 000{FFFFFF}.");

SendClientMessageToAll(0xFFFFFFAA,string);

}

case 1:

{

for (new i = 0; i < GetMaxPlayers(); i++) {

RandomCode2[i] = 1;

RandomCodeStopTimer[i] = SetTimer("RandomCodeStop", 120000, false); // Za 2 minuty náhodný text vypne pokud nikdo neodpovi.

} // Zapne všem hráčum náhodný text číslo 2 a stop timer.

format(string, sizeof(string), "[ {C2A2DA}Text{FFFFFF} ] Kdo první napíše náhodný text do 2m. '' eBo13zEtp '' získá {33AA33}$55 000{FFFFFF}.");

SendClientMessageToAll(0xFFFFFFAA,string);

}

case 3:

{

for (new i = 0; i < GetMaxPlayers(); i++) {

RandomCode3[i] = 1;

RandomCodeStopTimer[i] = SetTimer("RandomCodeStop", 120000, false); // Za 2 minuty náhodný text vypne pokud nikdo neodpovi.

} // Zapne všem hráčum náhodný text číslo 3 a stop timer.

format(string, sizeof(string), "[ {C2A2DA}Text{FFFFFF} ] Kdo první napíše náhodný text do 2m. '' fIXk54fg6 '' získá {33AA33}$35 000{FFFFFF}.");

SendClientMessageToAll(0xFFFFFFAA,string);

}

}

return 1;

}

forward RandomCodeStop(); // Forward.

public RandomCodeStop() // Tento Public nastaví hodnoty RandomCode 1-3 na 0 ciže kdo napíše náhodný text po 2 minutách nic to neudělá.

{

SendClientMessageToAll(-1, "[ {C2A2DA}Text{FFFFFF} ] Nikdo nenapsal náhodný text do 2 minut, náhodný text byl zrušen.");

for (new i = 0; i < GetMaxPlayers(); i++) { // Nastaví všem hráčum na serveru na 0.

RandomCode1[i] = 0; // Vypne náhodný text číslo 1.

RandomCode2[i] = 0; // Vypne náhodný text číslo 2.

RandomCode3[i] = 0; // Vypne náhodný text číslo 3.

}

return 0;

}

4. Do public OnPlayerText(playerid, text[]).




if(RandomCode1[playerid] == 1){ // Pokud je zapnutý.

if(!strcmp(text, "a5bXOq56i", true)) // Napíše tento text do chatu.

{

format(string, sizeof(string), "[ {C2A2DA}Text{FFFFFF} ] Jako první napsal náhodný text '' a5bXOq56i '' hráč %s získal {33AA33}$50 000{FFFFFF}.",Jmeno(playerid));

SendClientMessageToAll(0xFFFFFFAA,string);

GivePlayerMoney(playerid, 50000); // Dá peníze.

for (new i = 0; i < GetMaxPlayers(); i++) // Pro všechny hráče.

{

KillTimer(RandomCodeStopTimer[i]); // Zruší timer který měl za 2 minuty vypnout náhodný text nebot hráč už odpovědel.

RandomCode1[i] = 0; // Nastaví na 0 ciže na vypnuto pokud jeden z hráču napíše dobře jako první.

}

}

}

//

if(RandomCode2[playerid] == 1){ // Pokud je zapnutý.

if(!strcmp(text, "eBo13zEtp", true)) // Napíše tento text do chatu.

{

format(string, sizeof(string), "[ {C2A2DA}Text{FFFFFF} ] Jako první napsal náhodný text '' eBo13zEtp '' hráč %s získal {33AA33}$55 000{FFFFFF}.",Jmeno(playerid));

SendClientMessageToAll(0xFFFFFFAA,string);

GivePlayerMoney(playerid, 55000); // Dá peníze.

for (new i = 0; i < GetMaxPlayers(); i++) // Pro všechny hráče.

{

KillTimer(RandomCodeStopTimer[i]); // Zruší timer který měl za 2 minuty vypnout náhodný text nebot hráč už odpovědel.

RandomCode2[i] = 0; // Nastaví na 0 ciže na vypnuto pokud jeden z hráču napíše dobře jako první.

}

}

}

//

if(RandomCode3[playerid] == 1){ // Pokud je zapnutý.

if(!strcmp(text, "fIXk54fg6", true)) // Napíše tento text do chatu.

{

format(string, sizeof(string), "[ {C2A2DA}Text{FFFFFF} ] Jako první napsal náhodný text '' fIXk54fg6 '' hráč %s získal {33AA33}$35 000{FFFFFF}.",Jmeno(playerid));

SendClientMessageToAll(0xFFFFFFAA,string);

GivePlayerMoney(playerid, 35000); // Dá peníze.

for (new i = 0; i < GetMaxPlayers(); i++) // Pro všechny hráče.

{

KillTimer(RandomCodeStopTimer[i]); // Zruší timer který měl za 2 minuty vypnout náhodný text nebot hráč už odpovědel.

RandomCode3[i] = 0; // Nastaví na 0 ciže na vypnuto pokud jeden z hráču napíše dobře jako první.

}

}

}

No a to je vše pak už si to jen upravte podle sebe icon_e_smile.gif S pozdravem Ref.

 

 

 

Update 2017

Možná bych udělal takový menší update protože by mě bylo líto kdyby to vážně někdo používal v dnešní době...

Píše to konkrétně různé znaky včetně písmen (je to udělané jako includ).

V případě že máte nějaké upomínky jak zjednodušit cokoliv konkrétně ve scriptu níže klidně můžete psát.

Jinak PlayerName si snad každý dokáže sepsat + RandomEx stock a SCMTAF je zjednodušená zpráva SCMTA přes formát.

new
    Random_text[9] = "none";

// do OnGameModeInit: SetTimer("Show_random_text", 60000*6, true);

forward Show_random_text();
public Show_random_text(){
    format(Random_text, 9, "%c%c%c%c%c%c%c%c",
    Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter());
    SCMTAF(-1, "Napiš jako první do chatu [ %s ] a získej náhodnou částku.", Random_text);
    return true;
}

stock randomText_OnPlayerText(playerid, text[]){ // do OnPlayerText: randomText_OnPlayerText(playerid, text);
    if(strcmp(Random_text, "none", true)){
        if(!strcmp(text, Random_text, true)){
            new
                amount = RandomEx(3000,5000);
    
            SCMTAF(-1, "Hráč %s(%d) napsal jako první do chatu [ %s ] a získal $%d.", PlayerName(playerid), playerid, Random_text, amount);
            format(Random_text, 9, "none");
            GivePlayerMoney(playerid, amount);
        }
    }
    return true;
}

stock Get_random_letter(){
    return 65 + random(52);
}
Edited by rEf
Link to comment
Share on other sites

Copy & Paste tutorial vhodný akurát tak pre Dobar Dan-a. Nedávaj celý kod ale vysvetli to slovami teoreticky ako na to a aké funkcie, proste aby sa to nedalo skopírovať :)

Link to comment
Share on other sites

Já osobně mam v modů jenom zatím to co tu vidíš ale každý si muže sám přidělat, i já sám si přidělám nemusí každý mít vše co sem dám stejné tak jako to mam já v modů.

Link to comment
Share on other sites

  • Administrátor

Ty frajer .... 4 cykly string do scm 256 GetMaxPlayers v cyklech.... To není zrovna dobrý...

 

Dalo by se to udělat v jednom cyklu

Do SCM jen 128 znaků

GetMaxPlayers načítá hodnotu z cfg.. takže je tam nějaká přístupová doba... V každým projetí cyklu ? úúúúúúúú...

Link to comment
Share on other sites

  • 3 years later...

Možná bych udělal takový menší update protože by mě bylo líto kdyby to vážně někdo používal v dnešní době...

Píše to konkrétně různé znaky včetně písmen (je to udělané jako includ).

V případě že máte nějaké upomínky jak zjednodušit cokoliv konkrétně ve scriptu níže klidně můžete psát.

Jinak PlayerName si snad každý dokáže sepsat + RandomEx stock a SCMTAF je zjednodušená zpráva SCMTA přes formát.

new
    Random_text[9] = "none";
    
// do OnGameModeInit: SetTimer("Show_random_text", 60000*6, true); 

forward Show_random_text();
public Show_random_text(){
	format(Random_text, 9, "%c%c%c%c%c%c%c%c",
	Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter(), Get_random_letter());
	SCMTAF(-1, "Napiš jako první do chatu [ %s ] a získej náhodnou částku.", Random_text);
	return true;
}

stock randomText_OnPlayerText(playerid, text[]){ // do OnPlayerText: randomText_OnPlayerText(playerid, text);
	if(strcmp(Random_text, "none", true)){
	    if(!strcmp(text, Random_text, true)){
	        new
	            amount = RandomEx(3000,5000);
	            
	        SCMTAF(-1, "Hráč %s(%d) napsal jako první do chatu [ %s ] a získal $%d.", PlayerName(playerid), playerid, Random_text, amount);
	        format(Random_text, 9, "none");
	        GivePlayerMoney(playerid, amount);
	    }
        }
	return true;
}

stock Get_random_letter(){
    return 65 + random(52);
}
Edited by rEf
Link to comment
Share on other sites

  • Globální moderátor

Lze to ještě zjednodušit na 

for(new i = 0; i < 8; i ++) // 9 - 1 kvůli nulovému znaku
  Random_text[i] = 65 + random(52);


Text:

if(!Random_text[0])
{
    strcmp...
    Random_text[0] = 0;

}

A uživatel potom upravuje jen svoji délku v cyklu

 

fajnšmekr by si všiml, že se jedná o znaky ASCII, tak by využil jiného "datového" typu

Edited by HighPrint
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...