19.03.2015, 16:44
Well this script detects if a player is near the mine and then start counting from 1 to 10 and when it reaches 10 then it blows and resets but its not working,i got problem with timers
Код:
CMD:placemine(playerid,params[])
{
new Float:MineX,Float:MineY,Float:MineZ;
if(MinePlaced[playerid] == 1)
return SendClientMessage(playerid,COLOR_INDIANRED,"You have already place a mine somewhere.");
GetPlayerPos(playerid,MineX,MineY,MineZ);
MineObject = CreateObject(1252,MineX,MineY,MineZ-1,0.0, 0.0, 96.0);
for(new i = 0; i < MAX_PLAYERS; i++)
MineLabel[i] = CreatePlayer3DTextLabel(i,"MINE HERE",COLOR_INDIANRED, MineX, MineY, MineZ,20.0);
MinePos[playerid][0] = MineX;
MinePos[playerid][1] = MineY;
MinePos[playerid][2] = MineZ;
SendClientMessage(playerid,COLOR_PURPLE,"You have placed a mine.");
MineTimerUpdate[playerid] = SetTimer("MineTimer", 1000, true);
MinePlaced[playerid] = 1;
return 1;
}
Код:
forward MineTimer(playerid);
public MineTimer(playerid)
{
new string[64];
for(new i = 0; i < MAX_PLAYERS; i++)
if(IsPlayerInRangeOfPoint(i, 2.0, MinePos[playerid][0], MinePos[playerid][1], MinePos[playerid][2]) || MineCount[i] >= 10)
{
if(GetPlayerState(i) != PLAYER_STATE_WASTED)
{
CreateExplosion(MinePos[i][0], MinePos[i][1], MinePos[i][2], 7, 25.0);
SendClientMessage(i,COLOR_INDIANRED,"You got blown away by a land mine.");
DestroyObject(MineObject);
KillTimer(MineTimerUpdate[i]);
KillTimer(MineCountUpdate[i]);
DeletePlayer3DTextLabel(i,MineLabel[i]);
MinePlaced[i] = 0;
MineCount[i] = 0;
}
}
else if(IsPlayerInRangeOfPoint(i, 10.0, MinePos[playerid][0], MinePos[playerid][1], MinePos[playerid][2]))
{
MineCountUpdate[i] = SetTimerEx("MineCounting",1000,true,"i",i);
format(string,sizeof(string),"DANGER!\n %i",MineCount);
UpdatePlayer3DTextLabelText(i,MineLabel[i], COLOR_RED,string);
}
else
{
MineCount[i] = 0;
format(string,sizeof(string),"MINE HERE");
UpdatePlayer3DTextLabelText(i,MineLabel[i], COLOR_INDIANRED, string);
KillTimer(MineCountUpdate[i]);
}
return 1;
}
forward MineCounting(playerid);
public MineCounting(playerid)
{
MineCount[playerid]++;
}


