Unjail Befehl funktioniert nicht

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 mein Unjail Befehl funktioniert derzeit nicht



    ocmd:unjail(playerid, params[])
    {
    new time;
    if(PlayerInfo[playerid][pLoggedIn]==false)return 1;
    if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
    {
    new pID, string[128];
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid,COLOR_RED,"/unjail [ID][Zeit]");
    {
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_BUSBLUE, "Dieser Spieler ist offline");
    format(string,sizeof(string),"Du wurdest von %s aus dem Gefängnis entlassen",getPlayerName(playerid));
    SendClientMessage(pID,COLOR_BUSBLUE,string);
    PlayerInfo[pID][pJailTime]=0;
    }



    }
    else
    {
    SendClientMessage(playerid, COLOR_BUSBLUE, "Du bist kein Polizist.");



    }
    return 1;
    }


    Der Timer wird immer wieder aufgerufen obwohl er eig gestoppt werden sollte.


    Hiermit wird er gestartet



    jailTimer[playerid] = SetTimerEx("SetPlayerUnjail", 1000, 1, "d",pID);
    if(jailTimer[playerid] == -1) KillTimer(jailTimer[playerid]);


    und gestoppt werden soll er hier




    forward SetPlayerUnjail(playerid);
    public SetPlayerUnjail(playerid)
    {
    PlayerInfo[playerid][pJailTime]--;
    if(PlayerInfo[playerid][pJailTime]>0)
    {
    new string[128];
    new Time = PlayerInfo[playerid][pJailTime], Min = Time/60, Sek = Time - Min*60;
    format(string,sizeof(string),"%d Minuten %d Sekunden",Min,Sek);
    GameTextForPlayer(playerid,string,2000,3);

    }
    else
    {
    GameTextForPlayer(playerid,"Versuche ein besserer Mensch zu sein",5000,3);
    if(jailTimer[playerid] != -1)
    KillTimer(jailTimer[playerid]);
    jailTimer[playerid] = -1;
    SetPlayerPos(playerid,1552.8430,-1675.3510,16.195);
    SetPlayerInterior(playerid,0);



    }
    return 1;
    }

  • Wenn du durch den /unjail Befehl die Zeit auf 0 setzen lässt, wird nochmal (durch Zeile 4 vom Timer) eine Einheit abgezogen, somit ist die Jail-Time -1. Verschiebe Zeile 4 vom Timer mal in die if-Abfrage, also zwischen Zeile 6 und 7.


    //edit:



  • Ja, aber das wird ja auch aufgerufen wenn du den Befehl nicht verwendest.
    Du hast in deinem Startpost gemeint das dein unjail Befehl nicht funktioniert bzw. der Timer immer wieder gestartet wird.


    Mit dem Befehl kannst du ja auch Spieler aus dem Gefängnis rausholen die beispielsweise noch eine Stunde absitzen müssen, da wird der Timer nicht gekillt und deswegen kommt es da zu Problemen :)


    Mit freundlichen Grüßen
    JustMe.77 8)

  • So sollte das ganze theoretisch funktionieren.