25.04.2012, 19:40
Try this:
pawn Код:
#include <a_samp>
#define COLOR 0x0000FFFF
new PlayerHasVoted[MAX_PLAYERS], Votes, IsVoteRunning, VoteTimer;
public OnFilterScriptInit()
{
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
public OnPlayerConnect(playerid)
{
PlayerHasVoted[playerid] = 0;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(PlayerHasVoted[playerid] == 1)
{
PlayerHasVoted[playerid] = 0;
Votes --;
}
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(strcmp("/hl", cmdtext, true) == 0)
{
if(IsVoteRunning == 1)
{
SendClientMessage(playerid, COLOR, "There is another vote running!");
return 1;
}
else
{
new Name[MAX_PLAYER_NAME], string[256];
GetPlayerName(playerid, Name, sizeof(Name));
format(string, sizeof(string), "%s is voting to heal everyone, type /vote to vote!", Name);
SendClientMessageToAll(COLOR, string);
IsVoteRunning = 1;
VoteTimer = SetTimer("VoteFunction", 60000, false); // After 1 minute
}
return 1;
}
if(strcmp("/vote", cmdtext, true) == 0)
{
if(IsVoteRunning == 0)
{
SendClientMessage(playerid, COLOR, "There is no vote running!");
}
else if(PlayerHasVoted[playerid] == 1)
{
SendClientMessage(playerid, COLOR, "You have already voted!");
}
else
{
new Name[MAX_PLAYER_NAME], string[64];
PlayerHasVoted[playerid] = 1;
Votes ++;
format(string, sizeof(string), "%s has voted (%d/7)!", Name, Votes);
SendClientMessageToAll(COLOR, string);
if(Votes == 7)
{
KillTimer(VoteTimer);
IsVoteRunning = 0;
Votes = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerHasVoted[i] == 1)
{
PlayerHasVoted[i] = 0;
}
SetPlayerHealth(i, 100.0);
}
SendClientMessageToAll(COLOR, "Votes have reached 7! Everyone's health has been restored!");
}
}
}
return 0;
}
forward VoteFunction();
public VoteFunction() // Here 1 minute has passed and vote is ending.
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(PlayerHasVoted[i] == 1)
{
PlayerHasVoted[i] = 0;
}
}
new string[256];
format(string, sizeof(string), "TIMEOUT! 60 seconds have passed and we got only %d vote(s)", Votes);
SendClientMessageToAll(COLOR, string);
IsVoteRunning = 0;
Votes = 0;
return 1;
}