[HILFE] Timer spinnt / Befehl spinnt ?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo..


    Ich suche normalerweise keine Hilfe..
    Doch diesmal muss ich mir helfen lassen..


    Das Problem:
    Ich hab das Ganze mit mir selbst ausgetestet.
    Ich gebe mir selbst 1 Wanted.
    Dann geben ich /arrest ein, ich werde zwar in den Knast geportet und sollte da 3 Minuten sein, doch ich komme nach 1 Minute wieder raus?
    Was ist da los?


    Nochmal kurz:


    Man kommt nach 1 Sekunde wieder aus dem Gefängnis raus, obwohl man eigentlich 3 Minuten sitzen müsste.


    Habt ihr ne Idee?
    Hier die Codes:


    Der Befehl: (Bei den ocmd: Befehlen)
    ocmd:arrest(playerid,params[]){ if(!IstSpielerCop(playerid))return SendClientMessage(playerid,WEISS,"[{FF0000}Fehler{FFFFFF}]: Du bist kein Polizeibeamter."); new pID,Float:X,Float:Y,Float:Z; GetPlayerPos(pID, X, Y, Z); if(sscanf(params,"u",pID))return SendClientMessage(playerid,WEISS,"[{FF0000}Fehler{FFFFFF}]: /arrest [ID]"); //if(!IsPlayerInRangeOfPoint(playerid, 5.0, X,Y,Z))return SendClientMessage(playerid,WEISS,"[{FF0000}Fehler{FFFFFF}]: Du befindest dich nicht am /arrest - Punkt."); if(!IsPlayerInRangeOfPoint(playerid, 5.0, X, Y, Z))return SendClientMessage(playerid,WEISS,"[{FF0000}Fehler{FFFFFF}]: Der Spieler ist nicht in deiner Nähe."); if(GetPlayerWantedLevel(pID) == 0)return SendClientMessage(playerid,WEISS,"[{FF0000}Fehler{FFFFFF}]: Der Spieler wird nicht gesucht."); if(GetPlayerWantedLevel(pID) >= 1) { new string[128], WantedZeit = (GetPlayerWantedLevel(pID) * 3), string2[128]; format(string2, sizeof(string2),"Du bist nun für %d Minuten in Haft.", WantedZeit); SendClientMessage(pID,ROT,string2); SetPlayerWantedLevel(pID,0); SetPlayerPos(pID,264.0242,81.5690,1001.0391); SetPlayerInterior(pID,6); ResetPlayerWeapons(pID); SetPVarInt(pID,"Knast",1); SetPVarInt(pID,"Knastzeit",WantedZeit); format(string,sizeof(string),"Der Gesuchte %s wurde von %s in Haft gebracht.",getPlayerName(pID),getPlayerName(playerid)); SendClientMessageToAll(ROT,string); savePlayer(pID); } return 1;}



    Forward..^^ (Oben im Script bei den anderen Forwards..)
    forward TimerKnast();



    Timer wird erstellt.. (OnGameModeInit)
    SetTimer("TimerKnast", 1000, true);



    Der Timer selbst..(Irgendwo im Script..)
    public TimerKnast(){ for(new i = 0; i < MAX_PLAYERS; i++) { if(GetPVarInt(i, "Knast") == 1) { SetPVarInt(i, "KnastZeit", GetPVarInt(i, "KnastZeit") - 1); } if(GetPVarInt(i, "Knast") == 1 && GetPVarInt(i, "KnastTime") == 0) { SetPVarInt(i, "Knast", 0); SetPVarInt(i, "KnastZeit", 0); SendClientMessage(i, GELB, "Polizist: Du bist nun frei."); SetPlayerInterior(i, 0); SpawnPlayer(i); } } return 1;}



    Bitte, habt ihr ne' Idee..


    mfg,
    Dietmar

  • Auch wenn du gebannt bist, helfe ich dir mal da es sein kann das du als Gast wieder mal reinschaust.



    public TimerKnast()
    {
    for(new i = 0; i < MAX_PLAYERS; i++) //Der Timer geht eine Sekunde. Du gehst also jede einzelne Sekunde alle Spieler durch. Ein wenig Serverlastig, hm?
    {
    if(GetPVarInt(i, "Knast") == 1)
    {
    SetPVarInt(i, "KnastZeit", GetPVarInt(i, "KnastZeit") - 1);
    }
    if(GetPVarInt(i, "Knast") == 1 && GetPVarInt(i, "KnastTime") == 0) //Du verwendest immer die Variable "KnastZeit". Aber hier "KnastTime". KnastTime existiert wahrscheinlich nicht und ist deshalb immer 0. Also verwende hier KnastZeit und dein Problem sollte gelöst sein.
    {
    SetPVarInt(i, "Knast", 0);
    SetPVarInt(i, "KnastZeit", 0);
    SendClientMessage(i, GELB, "Polizist: Du bist nun frei.");
    SetPlayerInterior(i, 0);
    SpawnPlayer(i);
    }
    }
    return 1;
    }