Jail-system bugt rum :D

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
  • Moin,


    ich wollte euch mal fragen, was da an meine system falsch ist:

    ocmd:knastzeit(playerid,params[])
    {
    if(Jailed[playerid]==1)
    {
    new zeit=GetPVarInt(playerid,"Knastzeit"),string[50];
    format(string,50,"Du bist noch %d min im Knast!",zeit);
    SendClientMessage(playerid,COLOR_GREEN,string);
    }
    return 1;
    }
    ocmd:jail(playerid,params[])
    {
    new pID;
    if(GetPVarInt(playerid,"Fraktion")== 1 || GetPVarInt(playerid,"Fraktion")== 2)
    {
    if(sscanf(params,"i",pID))return SendClientMessage(playerid,COLOR_GRAD2,"INFO: /jail [ID]");
    {
    if(GetPlayerWantedLevel(pID)>0)
    {
    new playerState = GetPlayerState(pID),knastzeit;
    if(playerState == PLAYER_STATE_PASSENGER)
    {
    SetPlayerPos(pID,743.8172,-1351.5823,13.5000);
    knastzeit = GetPlayerWantedLevel(pID)*10*60000;
    SetPVarInt(pID,"Knastzeit",knastzeit);
    //SetTimer("knasttimer",1000,1);
    SetTimerEx("knasttimer",1000,1,"d",pID);
    Jailed[pID]=1;

    }
    }
    }
    }
    return 1;
    }


    forward knasttimer(pID);
    public knasttimer(pID)
    {
    if(GetPVarInt(pID,"Knastzeit")<0)
    {
    new knastzeit;
    knastzeit--;
    SetPVarInt(pID,"Knastzeit",knastzeit);
    SpielerSpeichern(pID);
    }
    else
    {
    OnPlayerSpawn(pID);
    SetPVarInt(pID,"Knastzeit",0);
    SendClientMessage(pID,COLOR_RED,"Du bist nun nichtmehr im Gefängnis, benimm dich in nächter Zeit!!");
    Jailed[pID]=0;
    }
    return 1;
    }


    Danke :D :love:

  • Zuerst könntest du vielleicht verraten was denn nicht funktioniert.
    Damit würdest du es uns leichter machen.


    //edit: Ich kann dir aber mal die Sachen sagen dir mir momentan auffallen:


    1. Benutze am Besten in Zeile 16 "(sscanf(params,"i",pID))" anstatt dem 'i' ein 'u', somit kannst du auch Spielernamen verwenden.
    2. Mal angenommen ich habe 5 Wanteds. Laut deiner Rechnung wäre ich dann 5*10*60000 = 3000000 Milisekunden im Knast, das wären 50 Minuten.
    3. Du fragst in Zeile 40 ab, ob die Knastzeit eines Spielers kleiner ist als 0. Da ich 50 Minuten im Knast hocke ist sie natürlich nicht kleiner als 0 und werde somit sofort entlassen.
    4. Deinem Script nach zu urteilen, wird der Timer den du für die Knastzeit des Spielers gesetzt hast niemals aufhören. Verwende dafür doch bitte die KillTimer-Funktion, dafür hat man sie auch.

    Einmal editiert, zuletzt von Darklight ()

  • Okay danke ^^ das hab ich übersehen, wie funzt diese killtimer funktion KillTImer(timerid) ja welche id denn??
    der timer steht oben und hier würde ich den timer dann killen:



    else
    {
    OnPlayerSpawn(pID);
    SetPVarInt(pID,"Knastzeit",0);
    KillTimer( ?? );
    SendClientMessage(pID,COLOR_RED,"Du bist nun nichtmehr im Gefängnis, benimm dich in nächter Zeit!!");
    Jailed[pID]=0;
    }