Ü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ó. ^^