Kill Timer when Player Death
#1

hi, i have code when you type /tie and the player tied up, i make timer when tied player not killed in 5 minutes his got Uncuffed by Anti Tie Abuse. then how can i killtimer when the tied player died not in 5 minutes
Код:
CMD:tie(playerid, params[])
{
	new otherid, string[120];
	if (sscanf(params, "d", otherid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}/Tie [playerid]");
	if(!IsPlayerConnected(otherid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}That player are not connected.");
	if(!ProxDetectorS(5.0, playerid, otherid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}That player is not close enough.");
	if(GetPlayerTeam(otherid) == playerid) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}That player are in your team!.");
	if(PlayerInfo[playerid][pRope] < 1) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}You don't have any rope!.");
	if(IsPlayerCuffed(playerid) == true) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}You are tied, can't use any commands");
	if(IsPlayerCuffed(otherid) == true) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}That player are already tied!");
	if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}You cannot tie when you are in vehicle.");
    if(IsPlayerInAnyVehicle(otherid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}You cannot tie that player when in vehicle.");
	{
		SetPlayerCuffed(otherid, true);
		format(string, sizeof(string), "[SERVER]: {FFFFFF}You have been tied by %s(%d)!", GetName(playerid), playerid);
		SendClientMessage(otherid, 0xB0B0B0AA, string);
		format(string, sizeof(string), "[SERVER]: {FFFFFF}You have tie %s(%d)!", GetName(otherid), otherid);
		SendClientMessage(playerid, 0xB0B0B0AA, string);
		PlayerInfo[playerid][pRope]--;
		SetTimerEx("AntiTieAbuse",300000,0,"i",otherid);
	}
	return 1;
}

forward AntiTieAbuse(playerid);
public AntiTieAbuse(playerid)
{
	SetPlayerCuffed(playerid, false);
	format(string, sizeof(string), "[ANTI-ABUSE]: {FFFFFF}Player %s(%d) has been untied after 5 minutes tied!", GetName(playerid), playerid);
	SendClientMessageToAll(COLOR_YELLOW, string);
	KillTimer(AntiTieAbuse[playerid]);
}
Reply
#2

I'd recommend using a global timer that uses variables as timers, that way you'll only need to kill the timer when the gamemode is being turned off.

pawn Код:
new AntiTieAbuse[MAX_PLAYERS];
forward PlayerVars();

public OnGameModeInit()
{
    SetTimer("PlayerVars", 1000, true);
    return 1;
}

CMD:tie(playerid, params[])
{
    new otherid, string[120];
    if (sscanf(params, "d", otherid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}/Tie [playerid]");
    if(!IsPlayerConnected(otherid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}That player are not connected.");
    if(!ProxDetectorS(5.0, playerid, otherid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}That player is not close enough.");
    if(GetPlayerTeam(otherid) == playerid) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}That player are in your team!.");
    if(PlayerInfo[playerid][pRope] < 1) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}You don't have any rope!.");
    if(IsPlayerCuffed(playerid) == true) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}You are tied, can't use any commands");
    if(IsPlayerCuffed(otherid) == true) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}That player are already tied!");
    if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}You cannot tie when you are in vehicle.");
    if(IsPlayerInAnyVehicle(otherid)) return SendClientMessage(playerid, 0xB0B0B0AA, "[SERVER]: {FFFFFF}You cannot tie that player when in vehicle.");
    {
        SetPlayerCuffed(otherid, true);
        format(string, sizeof(string), "[SERVER]: {FFFFFF}You have been tied by %s(%d)!", GetName(playerid), playerid);
        SendClientMessage(otherid, 0xB0B0B0AA, string);
        format(string, sizeof(string), "[SERVER]: {FFFFFF}You have tie %s(%d)!", GetName(otherid), otherid);
        SendClientMessage(playerid, 0xB0B0B0AA, string);
        PlayerInfo[playerid][pRope]--;
        AntiTieAbuse[otherid] = 300; //5 Minutes
    }
    return 1;
}

public PlayerVars()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i)
        {
            if(AntiTieAbuse[i] > 1)
            {
                AntiTieAbuse[i] --;
            }
            if(AntiTieAbuse[i] == 1)
            {
                AntiTieAbuse[i] = 0;
                //code here
            }
        }
    }
    return 1;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)