Szerző Téma: [Leírás/Segédlet] Hogyan épül fel egy reakciószkript?  (Megtekintve 2704 alkalommal)

[Leírás/Segédlet] Hogyan épül fel egy reakciószkript?
« Dátum: 2012. december 03. - 00:23:35 »
+1 Show voters
Üdv :)

Azért nyitottam meg a témát mert nem csak reakciótesztnél használhatók a funkciók.  :)


Kezdjünk is bele..


Szkript elején létrehozunk egy bool változót amivel majd szabályozzuk hogy ha valaki beírta a megfelelõ karaktereket akkor a többi játékos ne kapja meg a nyereményt.

 
new bool:reakcio;

 
Létrehozunk egy tömböt, amibe írunk egy pár lehetõséget.
 
new karakterek[][] =
{
\"kutya\", \"macska\", \"krokodil\", \"viziló\", \"sas\"
};

 
Létrehozunk egy sima sztring változót amiben majd tároljuk az épp aktuális szót/karaktereket.
 
new szoveg[20];

 
Létrehozunk egy parancsot, amivel elindítunk egy reakciótesztet (idõzítõbe is meg lehet írni természetesen)
 
CMD:reakcioteszt(playerid)
{
new str[128];
    new rand = random(sizeof(karakterek));
format(szoveg, 100, karakterek[rand]);
format(str, 128, \"Reakció teszt! Szöveg: %s\", szoveg);
SendClientMessageToAll(-1, str);
reakcio = true;
return 1;
}

 
Mi mit jelent:
 
new str[128];

 
Létrehozunk egy változót amit majd a szöveg kiírására használunk.
 
new rand = random(sizeof(karakterek));

 


Létrehozunk egy \'rand\' nevû változót, amiben tárolunk egy szöveget/karaktert a \'karakterek\' tömbbõl véletlenszerûen

 
format(szoveg, 20, karakterek[rand]);

 
Formázzuk a \'szoveg\' nevû változót és a karakterek tömbbõl véletlenszerûen tároljuk benne a szöveget/karaktert.
 
format(str, 128, \"Reakció teszt! Szöveg: %s\", szoveg);

 


Formázzuk a \'str\' változónkat és tároljuk benne az adott szöveget, a \'szoveg\' változóval együtt. (Így fog kinézni: Reakció teszt! Szöveg: krokodil)

 
SendClientMessageToAll(-1, str);

 
Elküldjük minden játékosnak a szöveget.
 
reakcio = true;

 
A bool változónk értékét true-ra(igazra) állítjuk
Most jöhet maga a szöveg/karakter beírása. :)
 
public OnPlayerText(playerid, text[])
{
if(reakcio == true)
{
if(!strcmp(text, szoveg, true))
{
    new str[128];
   new pName[24];
   GetPlayerName(playerid, pName, 24);
   format(str, 128, \"%s megnyerte a reakciótesztet, nyereménye: 5000$\", pName);
   SendClientMessageToAll(-1, str);
   GivePlayerMoney(playerid, 5000);
   reakcio = false;
   return 0;
}
}
return 1;
}

 
Magyarázat:
 
if(reakcio == true)

 
Ha a \'reakcio\' változó értéke true(igaz) [tehát beírtuk a parancsot]
 
if(!strcmp(text, szoveg, true))

 
Ha a beírt szöveg, és a \'szoveg\' változó értéke megyegyezik (ezt ugye a parancsba elmentettük)
 
new str[128];

 
Létrehozunk egy változót amit majd a szöveg kiírására használunk
 
new pName[24];

 
Létrehozunk egy változót a nevünknek.
 
GetPlayerName(playerid, pName, 24);

 
Elmentjük a nevünket a pName változóba (ezután használhatjuk bárhol)
 
format(str, 128, \"%s megnyerte a reakciótesztet, nyereménye: 5000$\", pName);

 
Formázzuk az \'str\' változót és tároljuk benne a szöveget a nevünkkel együtt.
 
SendClientMessageToAll(-1, str);

 
Kiírjuk minden játékosnak a szöveget.
 
GivePlayerMoney(playerid, 5000);

 
Adunk a játékosnak 5000$-t.
 
reakcio = false;

 
A \'reakcio\' változó értékét átállítjuk false-ra(hamisra)

Tehát a játékos csak akkor kap pénzt ha a változó értéke true(igaz), és miután 1 valaki beírta a parancsot megkapja a pénzt és a változó értéke false(hamis) lesz.


Remélem érthetõ a dolog, nem csak erre hanem sok más egyéb dologra is használható. ^^

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal