Jail Problem

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
  • Hi,
    dank Bluefire habe ich nun ein kleines Knastsystem.
    Das Problem ist nur, dass man nicht frei kommt.
    Der Timer läuft, aber bei 0 passiert nichts. Wieso?

    dcmd_arrest(playerid, params[])
    {
    new id, price, time;
    if(sscanf(params, "uii", id, price, time)) SendClientMessage(playerid, COLOR_RED, "Benutze /arrest [SpielerID] [Strafe] [Zeit]");
    else if(gTeam[playerid] != 1) SendClientMessage(playerid, COLOR_RED, "Du bist kein Polizist!");
    else if(id == INVALID_PLAYER_ID || id == playerid || IsPlayerNPC(id)) SendClientMessage(playerid, COLOR_RED, "Ungültiger Spieler");
    else if(!IsPlayerInRangeOfPoint(playerid, 8.0, 267.6492,78.5978,1001.0391)) SendClientMessage(playerid, COLOR_GREY, "Du bist nicht beim Gefängnis.");
    else if(gTeam[id] == 1) SendClientMessage(playerid, COLOR_RED, "Du kannst keinen Polizisten einsperren!");
    else if(price < 1 || price > 2000) SendClientMessage(playerid, COLOR_RED, "Die Strafe muss zwischen 1 und 2000 liegen!");
    else if(time < 1 || time > 60) SendClientMessage(playerid, COLOR_RED, "Die Zeit muss zwischen 1 und 60 Minuten liegen!");
    else
    {
    new Float:sX, Float:sY, Float:sZ;
    GetPlayerPos(id, sX, sY, sZ);
    if(IsPlayerInRangeOfPoint(id, 6.0, sX, sY, sZ))
    {
    new str[256];
    ResetPlayerWeapons(id);
    GivePlayerMoney(id, -price);
    format(str, sizeof(str), "Du wurdest für %d$ und %d Minuten in den Knast gesperrt!",price, time);
    SendClientMessage(id, COLOR_RED, str);
    SendClientMessage(playerid, COLOR_GREEN, "Spieler erfolgreich eingesperrt.");
    GameTextForPlayer(id, str, 5000, 5);
    pInfo[id][pJail] = 1;
    pInfo[id][pJailTime] = time*60000;
    pInfo[id][pWanted] = 0;
    SetPlayerInterior(id, 6);
    SetPlayerPos(id, 264.6373,77.3694,1001.0391);
    SetPlayerWantedLevel(id, 0);
    format(str, sizeof(str), "~r~K~w~nast...");
    if(GetPlayerWantedLevel(id) <= 0 || pInfo[id][pWanted] <= 0)
    {
    SendClientMessage(playerid, COLOR_RED, "Der Spieler hat keine Wanteds!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Der Spieler ist nicht in deiner Nähe!");
    return 1;
    }
    }
    return 1;
    }



    //1000ms Timer
    if(pInfo[i][pJail] == 1 && pInfo[i][pJailTime] >= 0)
    {
    pInfo[i][pJailTime]-1;
    if (pInfo[i][pJailTime] <= 0)
    {
    pInfo[i][pJail] = 0;
    SetPlayerPos(i, 268.6285,85.9074,1001.0391);
    SetPlayerInterior(i, 6);
    GameTextForPlayer(i, "~g~Frei~w~heit!", 5000, 5);
    }
    }


    Eigentlich ist doch alles da oder?
    Jede Sekunde wird geprüft ob der Spieler im Knast sitzt, wenn ja wird jede Sekunde eine Sekunde abgezogen.
    Wenn 0 erreicht ist soll er Frei kommen...



    //Eingerückt

    Einmal editiert, zuletzt von JayTheSheep ()

  • if(pInfo[i][pJail] == 1 && pInfo[i][pJailTime] >0)
    {
    pInfo[i][pJailTime]--;
    if (pInfo[i][pJailTime] == 0)
    {
    pInfo[i][pJail] = 0;
    SetPlayerPos(i, 268.6285,85.9074,1001.0391);
    SetPlayerInterior(i, 6);
    GameTextForPlayer(i, "~g~Frei~w~heit!", 5000, 5);
    }
    }

  • Nächstes mal markieren bitte wo du was geändert hast ;)


    QQ: Bei pInfo[i][pJailTime]--;

  • Vorher war das auch schon so sorry,
    hatte das nur mal gemacht um es zu testen..
    Aber funktioniert so auch nicht :/


    /E: Obwohl, er hat auch das
    pInfo[i][pJailTime] >= 0
    zu
    pInfo[i][pJailTime] >0
    gemacht, aber ich bin mir nicht sicher ob das war bringt :O

  • jetzt kommt eine dämliche frage xD
    Stimmen die Koords?

  • Ich hab den Timer von der Fahrprüfung benutzt, da er auch im 1 Sekunde Takt läuft..

    public abfahrpunkte()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i,5,1327.6830,-1730.1995,13.2577))
    {
    if(schulung[i] == 1)
    {
    SetPlayerCheckpoint(i,1315.3927,-1570.0785,13.2578, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 2;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1315.3927,-1570.0785,13.2578))
    {
    if(schulung[i] == 2)
    {
    SetPlayerCheckpoint(i,1360.0347,-1292.8630,13.1581, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 3;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1360.0347,-1292.8630,13.158))
    {
    if(schulung[i] == 3)
    {
    SetPlayerCheckpoint(i,1378.9243,-963.0936,33.8114, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 4;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1378.9243,-963.0936,33.8114))
    {
    if(schulung[i] == 4)
    {
    SetPlayerCheckpoint(i,1228.5854,-928.4598,42.4234, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 5;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1228.5854,-928.4598,42.4234))
    {
    if(schulung[i] == 5)
    {
    SetPlayerCheckpoint(i,1092.2350,-945.8711,42.4999, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 6;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1092.2350,-945.8711,42.4999))
    {
    if(schulung[i] == 6)
    {
    SetPlayerCheckpoint(i,1080.3909,-1134.8901,23.5314, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 7;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1080.3909,-1134.8901,23.5314))
    {
    if(schulung[i] == 7)
    {
    SetPlayerCheckpoint(i,942.6838,-1141.2279,23.5735, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 8;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,942.6838,-1141.2279,23.5735))
    {
    if(schulung[i] == 8)
    {
    SetPlayerCheckpoint(i,939.9207,-1311.9944,13.2567, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 9;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,939.9207,-1311.9944,13.2567))
    {
    if(schulung[i] == 9)
    {
    SetPlayerCheckpoint(i,1054.5863,-1328.6691,13.2579, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 10;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1054.5863,-1328.6691,13.2579))
    {
    if(schulung[i] == 10)
    {
    SetPlayerCheckpoint(i,1328.3143,-1408.0988,13.2099, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 11;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1328.3143,-1408.0988,13.2099))
    {
    if(schulung[i] == 11)
    {
    SetPlayerCheckpoint(i,1299.7639,-1840.5442,13.2578, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 12;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1299.7639,-1840.5442,13.2578))
    {
    if(schulung[i] == 12)
    {
    SetPlayerCheckpoint(i,1404.9907,-1804.8547,13.4218, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 13;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1404.9907,-1804.8547,13.4218))
    {
    if(schulung[i] == 13)
    {
    TakingLesson[i] = 0;
    DestroyVehicle(Fahrschulauto);
    pInfo[i][pCarLic] = 1;
    DisablePlayerCheckpoint(i);
    SetPlayerInterior(i, 6);
    SetPlayerPos(i, 373.5085,184.7913,1008.8798);
    SendClientMessage(i, COLOR_GREEN, "Du hast deine Fahrprüfung bestanden, Glückwunsch!");
    schulung[i] = 0;
    }
    }
    if(pInfo[i][pJail] == 1 && pInfo[i][pJailTime] > 0)
    {
    pInfo[i][pJailTime]--;
    if (pInfo[i][pJailTime] <= 0)
    {
    pInfo[i][pJail] = 0;
    SetPlayerPos(i, 268.6285,85.9074,1001.0391);
    SetPlayerInterior(i, 6);
    GameTextForPlayer(i, "~g~Frei~w~heit!", 5000, 5);
    }
    }
    }
    }

  • kein wunder da else if so zusagen ein return einbaut^^
    mach mal so
    public abfahrpunkte()
    {
    for(new i=0; i<MAX_PLAYERS; i++)
    {


    if(pInfo[i][pJail] == 1 && pInfo[i][pJailTime] > 0)
    {
    pInfo[i][pJailTime]--;
    if (pInfo[i][pJailTime] <= 0)
    {
    pInfo[i][pJail] = 0;
    SetPlayerPos(i, 268.6285,85.9074,1001.0391);
    SetPlayerInterior(i, 6);
    GameTextForPlayer(i, "~g~Frei~w~heit!", 5000, 5);
    }
    }
    if(IsPlayerInRangeOfPoint(i,5,1327.6830,-1730.1995,13.2577))
    {
    if(schulung[i] == 1)
    {
    SetPlayerCheckpoint(i,1315.3927,-1570.0785,13.2578, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 2;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1315.3927,-1570.0785,13.2578))
    {
    if(schulung[i] == 2)
    {
    SetPlayerCheckpoint(i,1360.0347,-1292.8630,13.1581, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 3;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1360.0347,-1292.8630,13.158))
    {
    if(schulung[i] == 3)
    {
    SetPlayerCheckpoint(i,1378.9243,-963.0936,33.8114, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 4;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1378.9243,-963.0936,33.8114))
    {
    if(schulung[i] == 4)
    {
    SetPlayerCheckpoint(i,1228.5854,-928.4598,42.4234, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 5;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1228.5854,-928.4598,42.4234))
    {
    if(schulung[i] == 5)
    {
    SetPlayerCheckpoint(i,1092.2350,-945.8711,42.4999, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 6;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1092.2350,-945.8711,42.4999))
    {
    if(schulung[i] == 6)
    {
    SetPlayerCheckpoint(i,1080.3909,-1134.8901,23.5314, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 7;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1080.3909,-1134.8901,23.5314))
    {
    if(schulung[i] == 7)
    {
    SetPlayerCheckpoint(i,942.6838,-1141.2279,23.5735, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 8;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,942.6838,-1141.2279,23.5735))
    {
    if(schulung[i] == 8)
    {
    SetPlayerCheckpoint(i,939.9207,-1311.9944,13.2567, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 9;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,939.9207,-1311.9944,13.2567))
    {
    if(schulung[i] == 9)
    {
    SetPlayerCheckpoint(i,1054.5863,-1328.6691,13.2579, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 10;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1054.5863,-1328.6691,13.2579))
    {
    if(schulung[i] == 10)
    {
    SetPlayerCheckpoint(i,1328.3143,-1408.0988,13.2099, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 11;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1328.3143,-1408.0988,13.2099))
    {
    if(schulung[i] == 11)
    {
    SetPlayerCheckpoint(i,1299.7639,-1840.5442,13.2578, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 12;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1299.7639,-1840.5442,13.2578))
    {
    if(schulung[i] == 12)
    {
    SetPlayerCheckpoint(i,1404.9907,-1804.8547,13.4218, 5.0);
    SendClientMessage(i, COLOR_YELLOW2, "Checkpoint erreicht weiter zum nächsten.");
    schulung[i] = 13;
    }
    }
    else if(IsPlayerInRangeOfPoint(i,5,1404.9907,-1804.8547,13.4218))
    {
    if(schulung[i] == 13)
    {
    TakingLesson[i] = 0;
    DestroyVehicle(Fahrschulauto);
    pInfo[i][pCarLic] = 1;
    DisablePlayerCheckpoint(i);
    SetPlayerInterior(i, 6);
    SetPlayerPos(i, 373.5085,184.7913,1008.8798);
    SendClientMessage(i, COLOR_GREEN, "Du hast deine Fahrprüfung bestanden, Glückwunsch!");
    schulung[i] = 0;
    }
    }
    }
    }

  • was genau ist denn das problem???? kommt er nicht vom fleg weg oder kann er sich danach nicht mehr bewegen oder was isst den das problem???


    wenn er sich nicht mehr bewegen kann dann mach doch einfach


    TogglePlayerControllable(playerid, 1);


    mfg The_OTTO

  • Lies doch erstmal alles, bevor du sowas schreibst :D
    Also:
    Der Timer läuft einfach nicht ab.
    Wenn man zum Beispiel 1 Minute macht und die ganze Zeit /time macht, geht die Zeit zwar runter, in der .ini Datei bleibt sie aber irgendwie gleich.
    Und wenn die Zeit abgelaufen ist dann passiert nichts, also sie läuft nicht ab xD