This code isn't working as it should
#1

pawn Код:
forward ReduceWantedLevel(playerid);
public ReduceWantedLevel(playerid)
{
    if(GetPlayerWantedLevel(playerid) >= 1)
    {
        SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) -1);
    }
    else if(GetPlayerWantedLevel(playerid) == 0) return KillTimer(ReduceTimer[playerid]);
    return 1;
}
public OnPlayerUpdate(playerid)
{
    if(GetPlayerWantedLevel(playerid) >= 1)
    {
        ReduceTimer[playerid] = SetTimerEx("ReduceWantedLevel", 120000, false, "i", playerid);
    }
In this code if a player has a wanted level of 1+ he's supposed to lose a wanted level star every 1 minute .
But instead he's losing all his wanted level stars
Reply
#2

Because it keeps calling the timer.
pawn Код:
// OnPlayerConnect:
ReduceTimer[playerid] = -1;

// OnPlayerUpdate:
if(GetPlayerWantedLevel(playerid) >= 1 && ReduceTimer[playerid] == -1)
{
    ReduceTimer[playerid] = SetTimerEx("ReduceWantedLevel", 120000, false, "i", playerid);
}

forward ReduceWantedLevel(playerid);
public ReduceWantedLevel(playerid)
{
    if (GetPlayerWantedLevel(playerid) >= 1) SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) -1);
    else
    {
        KillTimer(ReduceTimer[playerid]);
        ReduceTimer[playerid] = -1;
    }
}
Reply
#3

Ehm i am not sure, but this should be a solution Konstantinos?

pawn Код:
// OnPlayerConnect:
ReduceTimer[playerid] = -1;

// OnPlayerUpdate:
if(GetPlayerWantedLevel(playerid) >= 1 && ReduceTimer[playerid] == -1)
{
    ReduceTimer[playerid] = SetTimerEx("ReduceWantedLevel", 120000, false, "i", playerid);// And btw. 1 minute = 60000
    //You are still calling this on every playerupdate
    ReduceTimer[playerid] = 0; // you should add this to block another calling
}

forward ReduceWantedLevel(playerid);
public ReduceWantedLevel(playerid)
{
    if (GetPlayerWantedLevel(playerid) >= 1) SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) -1);
    else
    {
        KillTimer(ReduceTimer[playerid]);// This is pointless because you are running this timer only once. (If i am wrong, then correct me please)
        ReduceTimer[playerid] = -1;
    }
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)