Megírtam neked, már csak tesztelnem kell. Délután kirakom ide
Szerk:
itt van, könnyen testreszabható, fent elég a difiniált dolgokat átírni.
Hogyha 3-nál több/kevesebb pálya közül szeretnél szavaztatni, akkor lent az \'ErtekReset\'-nél is át kell írni, az nem nagy dolog van egy kis leírás róla.
#include <a_samp>
#include <zcmd>
#define SZAVAZAS_IDO 15 // ide írd, hogy automatikusan hány percenként induljon az új szavazás.
#define SZAVAZO_IDO 3 // ide írd, hogy hány másodpercig tartson a szavazás. (( ha letelt, utána vált pályát ))
#define DIALOG_SZAVAZAS 53 // ide írd a dialog ID-jét, hogy a módban lévõ dialogokkal ne keveredjen össze.
#define SZAVAZDIALOG ShowPlayerDialog(i, DIALOG_SZAVAZAS, DIALOG_STYLE_LIST, \"Szavazás\",\"Pálya1\\nPálya2\\nPálya3\",\"Szavaz\",\"\") // elég itt átírni a szavazós dialogot!
forward szavazas();
forward SzavazoIdo();
new szavazastimer;
new bool:szavazhat[MAX_PLAYERS];
new szavazatok[3]; // a négyzetes zárójelbe akkora számot írj, amennyi pályára lehet szavazn
new nyertespalya = 0;
public szavazas()
{
for(new i;i < MAX_PLAYERS; i++)
{
szavazhat = true;
SZAVAZDIALOG;
}
KillTimer(szavazastimer);
SetTimer(\"SzavazoIdo\",1000*SZAVAZO_IDO,false);
ErtekReset();
}
public SzavazoIdo()
{
SendClientMessageToAll(-1,\"[szavazás] a szavazás ideje letelt!\");
szavazastimer = SetTimer(\"szavazas\",1000*60*SZAVAZAS_IDO,false);
new str1[15];
new str2[15];
new str3[15];
format(str1,sizeof(str1),\"* Pálya1: %d\",szavazatok[0]);
format(str2,sizeof(str2),\"* Pálya2: %d\",szavazatok[1]);
format(str3,sizeof(str3),\"* Pálya3: %d\",szavazatok[2]);
SendClientMessageToAll(-1, \" ------ SZAVAZATOK ------\");
SendClientMessageToAll(-1, str1);
SendClientMessageToAll(-1, str2);
SendClientMessageToAll(-1, str3);
SendClientMessageToAll(-1, \" \");
for(new i; i < sizeof(szavazatok); i++){ if(szavazatok > nyertespalya) nyertespalya = i;}
for(new ix; ix < MAX_PLAYERS; ix++)
{
szavazhat[ix] = false;
}
if(nyertespalya == szavazatok[0])
{
SendClientMessageToAll(-1,\"Az 1. pálya nyert\");
// ha az 1. pálya a nyertes, akkor ez történjen
}
else if(nyertespalya == szavazatok[1])
{
SendClientMessageToAll(-1,\"A 2. pálya nyert\");
// ha a 2. pálya a nyertes, akkor ez történjen
}
else if(nyertespalya == szavazatok[2])
{
SendClientMessageToAll(-1,\"A 3. pálya nyert\");
// ha a 3. pálya a nyertes, akkor ez történjen
}
}
public OnFilterScriptInit()
{
print(\" * Szavazás rendszer betöltve!\");
szavazastimer = SetTimer(\"szavazas\",1000*60*SZAVAZAS_IDO,false);
return 1;
}
CMD:szavazas(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return 0;
KillTimer(szavazastimer);
for(new i;i < MAX_PLAYERS; i++)
{
SZAVAZDIALOG;
szavazhat = true;
}
SetTimer(\"SzavazoIdo\",1000*SZAVAZO_IDO,false);
ErtekReset();
return 1;
}
public OnFilterScriptExit(){return 1;}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case DIALOG_SZAVAZAS:
{
new name[30];
GetPlayerName(playerid, name, 40);
if(listitem == 0)
{
if(szavazhat[playerid] == false) return SendClientMessage(playerid, -1, \"Elkéstél..\");
new string[128];
format(string, sizeof(string), \"[szavazás] %s a(z) 1. pályára szavazott!\",name);
SendClientMessageToAll(-1,string);
szavazatok[0] ++;
}
if(listitem == 1)
{
if(szavazhat[playerid] == false) return SendClientMessage(playerid, -1, \"Elkéstél..\");
new string[128];
format(string, sizeof(string), \"[szavazás] %s a(z) 2. pályára szavazott!\",name);
SendClientMessageToAll(-1,string);
szavazatok[1] ++;
}
if(listitem == 2)
{
if(szavazhat[playerid] == false) return SendClientMessage(playerid, -1, \"Elkéstél..\");
new string[128];
format(string, sizeof(string), \"[szavazás] %s a(z) 3. pályára szavazott!\",name);
SendClientMessageToAll(-1,string);
szavazatok[2] ++;
}
}
}
return 1;
}
stock ErtekReset()
{
szavazatok[0] = 0;
szavazatok[1] = 0;
szavazatok[2] = 0; // addig folytasd ameddig el nem érsz a szavazatok változó maximális értékéig! (( Figyelem! ha a változónak pl: 5-ös értéke van, akkor 0-4ig számozható! ))
}