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