Ez maradhat a helyén, mert csak annak a játékosnak nullázza aki épp feljön szóval nem mindenkinek.
Voted[playerid] = 0;
Amúgy is Voted[playerid] ezt nem is tudnád az OnGameModeInit alá rakni. Ez pedig megint rossz helyen van, ezt is helyezd át.
Vote = false;
Megoldás:
public OnGameModeInit() { //Vagy OnFilterScriptInit
Vote = false;
YesVotes = 0;
NoVotes = 0;
return 1;
}
public OnGameModeExit() { //Vagy OnFilterScriptExit
Vote = false;
YesVotes = 0;
NoVotes = 0;
return 1;
}
VoteTimer(playerid) ez alá megint csak felesleges a Voted[playerid] = 0;Megoldás:
forward VoteTimer();
public VoteTimer() {
new string[255];
format(string, 128, \"{FFA600}* A szavazás lezárult! {dddddd}(%d igen, %d nem)\", YesVotes, NoVotes);
SCMToAll(-1, string);
Vote = false;
NoVotes = 0;
YesVotes = 0;
for(new i = 0; i < MAX_PLAYERS; i++) {
if(!IsPlayerConnected(i)) continue;
Voted = 0;
}
return 1;
}
És az hogy ha már szavazott szerintem felesleges úgy ellenõrizni, hogy ha igen akkor 1 ha nem akkor 2 elé lenne egy értéket adni neki.
Igenre szavazott:
if(Voted[playerid] == 1) return SendClientMessage(playerid, -1, \"Már szavaztál\");
Voted[playerid] = 1;
Nemre szavazott:
if(Voted[playerid] == 1) return SendClientMessage(playerid, -1, \"Már szavaztál\");
Voted[playerid] = 1;
És ha lezárult a szavazás minenkinek visszaállítani 0-ra ami már fentebb leírtam .Vagy Voted[playerid] is mehetne bool változóban.