SA-MP Forums Archive
timer problem - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: timer problem (/showthread.php?tid=551253)



timer problem - 1fret - 17.12.2014

Im trying to make a reduceplayerwantedlevel system that reduces the player wanted level i made a forward and i also added a timer but it only reduces the player level once and then it stop it doesnt do it again can someone tell me whats the problem with the code?
pawn Код:
//the timer
SetTimer("ReduceWantedLevel",6000,true);// thats not the real time(6000) jus used it to test

forward ReduceWantedLevel(playerid);
public ReduceWantedLevel(playerid)
{
    for(new i = 0; i < MAX_PLAYERS;i++)
    {
    if(GetPlayerWantedLevel(i) == 0) return 1;
    else if(GetPlayerWantedLevel(i) >= 40)
    {
        SetPlayerWantedLevel(i, 35);
        SendClientMessage(i, yellow,"test");
        return 1;
    }
    else if(GetPlayerWantedLevel(i) == 35)
    {
        SetPlayerWantedLevel(i, 30);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 5 wanted levels.[level 30] ");
        return 1;
    }
    else if(GetPlayerWantedLevel(i) == 30)
    {
        SetPlayerWantedLevel(i, 28);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 2 wanted levels.[level 28] ");
        return 1;
    }
    else if(GetPlayerWantedLevel(i) == 28)
    {
        SetPlayerWantedLevel(i, 20);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 8 wanted levels.[level 20] ");
        return 1;
    }
    else if(GetPlayerWantedLevel(i) == 20)
    {
        SetPlayerWantedLevel(i, 15);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 5 wanted levels.[level 15] ");
        return 1;
    }
    else if(GetPlayerWantedLevel(i) == 15)
    {
        SetPlayerWantedLevel(i, 10);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 5 wanted levels.[level 10] ");
    }
    else if(GetPlayerWantedLevel(i) == 10)
    {
        SetPlayerWantedLevel(i, 9);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 1 wanted levels.[level 9] ");
    }
    else if(GetPlayerWantedLevel(i) == 9)
    {
        SetPlayerWantedLevel(i, 8);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 1 wanted levels.[level 8]");
    }
    else if(GetPlayerWantedLevel(i) == 8)
    {
        SetPlayerWantedLevel(i, 7);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 1 wanted levels.[level 7]");
    }
    else if(GetPlayerWantedLevel(i) == 7)
    {
        SetPlayerWantedLevel(i, 6);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 1 wanted levels.[level 6]");
    }
    else if(GetPlayerWantedLevel(i) == 5)
    {
        SetPlayerWantedLevel(i, 4);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 1 wanted levels.[level 4]");
    }
    else if(GetPlayerWantedLevel(i) == 4)
    {
        SetPlayerWantedLevel(i, 3);
        SendClientMessage(i,yellow, "[WANTED]: You have lost 1 wanted levels.[level 3]");
    }
    else if(GetPlayerWantedLevel(i) == 2)
    {
        SetPlayerWantedLevel(i, 1);
        SendClientMessage(i, yellow, "[WANTED]: You have lost 1 wanted levels.[level 1]");
    }
    else if(GetPlayerWantedLevel(i) == 1)
    {
        SetPlayerWantedLevel(i, 0);
        SendClientMessage(i,yellow, "[WANTED]: You have now lost your wanted levels [Innocent]");
    }
    }
    return 1;
}



Re: timer problem - Schneider - 17.12.2014

Wanted-levels are only from 0 to 6...

Setting it to a level higher than '6' will probably set it automatically back to '6' and since don't have an
else if(GetPlayerWantedLevel(i) == 6) in your code, it will do nothing.


Re: timer problem - Threshold - 18.12.2014

You are using a 'playerid' parameter when you have used a 'SetTimer' function. Parameters are only acceptable for use with the 'SetTimerEx' function. In this case, you are doing a loop for all players, so a 'playerid' parameter is unnecessary.

pawn Код:
forward ReduceWantedLevel();
public ReduceWantedLevel()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        new original = GetPlayerWantedLevel(i);
        switch(original)
        {
            case 0: continue;
            case 1 .. 10: SetPlayerWantedLevel(i, (original - 1));
            case 11 .. 20: SetPlayerWantedLevel(i, (original - 5));
            case 21 .. 28: SetPlayerWantedLevel(i, (original - 8));
            case 29, 30: SetPlayerWantedLevel(i, (original - 2));
            default: SetPlayerWantedLevel(i, (original - 5));
        }
        new var = GetPlayerWantedLevel(i), fstr[55];
        format(fstr, sizeof(fstr), "[WANTED]: You have lost %d wanted levels. [Level %d]", (original - var), var);
        SendClientMessage(i, yellow, (var) ? (fstr) : ("[WANTED]: You have now lost your wanted levels [Innocent]"));
    }
    return 1;
}