timer problem -
tommzy09 - 11.08.2014
hey guys, i have an arrest command that is supposed to put a player in jail for 30 seconds when a cop arrests them
it does put the player in jail perfectly but it doesnt release them after 30 seconds.
i cant seem to find what went wrong, i get no compile errors, which is good for the 6400 lines my gamemode now has
this is my /ar command
Код:
COMMAND:ar(playerid, params[])
{
if(GetPlayerColor(playerid) == 0x0259EAAA)
{
new toplayer;
if(!sscanf(params, "ui", toplayer))
{
if(IsPlayerConnected(toplayer))
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X,Y,Z);
if(GetPlayerColor(toplayer) == 0x0259EAAA) return SendClientMessage(playerid, 0xAA3333AA, "You can't Arrest your Squad Mates!");
if(GetPlayerColor(toplayer) == 0xFFFFFFFF) return SendClientMessage(playerid, 0xAA3333AA, "This Player isn't Wanted!");
if(GetPlayerState(toplayer) == PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xAA3333AA, "You Can only Arrest Criminals who are on Foot!");
if(GetPlayerState(toplayer) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, 0xAA3333AA, "You Can only Arrest Criminals who are on Foot!");
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xAA3333AA, "You Cannot Arrest a Criminal while in a Vehicle!");
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER) return SendClientMessage(playerid, 0xAA3333AA, "You Cannot Arrest a Criminal while in a Vehicle!");
if(IsPlayerInRangeOfPoint(toplayer, 5.0, X,Y,Z))
{
new string[64];
new name[MAX_PLAYER_NAME], PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
GetPlayerName(toplayer, PlayerName, sizeof(PlayerName));
format(string, sizeof(string), "Officer %s Has Arrested and Jailed you for 60 Seconds!", name);
SendClientMessage(playerid, 0x0259EAAA, string);
format(string, sizeof(string), "%s Has Been Arrested!", PlayerName);
SendClientMessageToAll(0x0259EAAA, string);
SetPlayerPos(toplayer, 264.6288,77.5742,1001.0391);
SetPlayerInterior(toplayer, 6);
SetPlayerColor(toplayer, 0xFFFFFFFF);//Civilian Color
SetPlayerWantedLevel(toplayer, 0);
ResetPlayerWeapons(toplayer);
jailed[toplayer] = 1;
//SetTimerEx("UnJail",60000,false,"i",playerid); // original timer
SetTimerEx("UnJail", 30000, 0, "i", playerid); // new timer
return 1;
}
else return SendClientMessage(playerid, 0x0259EAAA, "You Are Not Near The Player.");
}
else return SendClientMessage(playerid, 0x0259EAAA, "Player Is Not Connected.");
}
else return SendClientMessage(playerid, 0x0259EAAA, "USAGE: /ar [PlayerId/PartOfName]");
}
else return SendClientMessage(playerid, 0x0259EAAA, "You Are Not Cop!");
}
my forward
Код:
forward UnJail(playerid);
and now the public
Код:
public UnJail(playerid)
{
for(new i; i < MAX_PLAYERS; i++)
{
if(jailed[i] == 1)
{
new pname[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(i, pname, sizeof(pname));
SetPlayerPos(i, 255.2078,86.6854,1002.4453);
SetPlayerInterior(i, 6);
SetPlayerFacingAngle(i, 90);
format(string, sizeof(string), "%s (%d) has been Released from Jail.", pname, i);
SendClientMessageToAll(0xFFFFFFFF, string);
jailed[i] = 0;
}
return 1;
}
return 1;
}
Re: timer problem -
kamiliuxliuxliux - 11.08.2014
In public you have a playerid parameter. So why you loop through all players and unjail them, when timer should work for only one player?
Re: timer problem -
Stinged - 11.08.2014
You're using SetTimerEx, where you can (You also did) add playerid, why would you use a loop?
pawn Код:
public UnJail(playerid)
{
if(jailed[playerid] == 1)
{
new pname[MAX_PLAYER_NAME];
new string[60]; // 48 is too small for "(24 character name) (%d) has been Released from Jail."
GetPlayerName(playerid, pname, sizeof(pname));
SetPlayerPos(playerid, 255.2078,86.6854,1002.4453);
SetPlayerInterior(playerid, 6);
SetPlayerFacingAngle(playerid, 90);
format(string, sizeof(string), "%s (%d) has been Released from Jail.", pname, playerid);
SendClientMessageToAll(0xFFFFFFFF, string);
jailed[playerid] = 0;
}
// You don't have to return anything (not 100% sure, but that's what I do and it works just fine)
}
Re: timer problem -
tommzy09 - 11.08.2014
thanks for the help guys

problem is solved!