Knastzeit speichern.

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
  • Ich hab grad ein kleines Problem, wiedermal ^^


    Also das ist mein Knastsystem:


    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,COLOR_RED,"Du bist kein LSPD Beamter");
    new pID, rang, kminuten;
    if(sscanf(params,"uii",pID,rang,kminuten))return SendClientMessage(playerid,COLOR_RED,"/knast [ID] [Geld] [Minuten]");
    if(GetPlayerWantedLevel(pID) >= 1)
    {
    if(Spielerdistanz(playerid,pID) < 5)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0,190.2161,178.3430,1003.0234))
    {
    SetPlayerPos(pID,198.0773,161.7927,1003.0300);
    new string[128];
    format(string,sizeof(string),"Du hast %s eingesperrt. +%i$",SpielerName(playerid),rang);
    SendClientMessage(playerid,COLOR_WHITE,string);
    GivePlayerMoney(playerid,rang);
    format(string,sizeof(string),"Du wurdest von Officer %s für %i Minuten in den Knast eingesperrt. -%i$",SpielerName(playerid),kminuten,rang);
    SendClientMessage(playerid,COLOR_WHITE,string);
    GivePlayerMoney(pID,-rang);
    SetPlayerWantedLevel(pID,0);
    format(string,sizeof(string),"Officer %s hat %s in den Knast eingesperrt. Gute Arbeit!",SpielerName(playerid),SpielerName(pID));
    SendClientMessage(playerid,COLOR_NEWS,string);
    SetTimerEx("InKnast", kminuten, 0, "i", pID);
    SetPVarInt(pID,"Knast",1);


    }
    else SendClientMessage(playerid,COLOR_RED,"Du bist nicht bei den Zellen");
    }
    else SendClientMessage(playerid,COLOR_RED,"Der Spieler steht nicht neben dir!");
    }
    else SendClientMessage(playerid,COLOR_RED,"Der Spieler hat keine Wanted´s!");
    return 1;
    }




    Mein Problem ist das das ganze nicht gespeichert wird, was ja klar ist weil nur ein Timer da ist.


    Meine Überlegung wie ich es lösen würde:
    eine Variable die die minuten beinhaltet und ein Timer der jede Minute -1 zählt. und bei OnPlayerDisconnect die Variable speichern und bei OnGameModeInit abfragen ob die Variable >0 ist und dann halt einknasten oder nicht ^^.



    MeinProblem:


    Ich weis nicht welche "Art" von Varible ich verwenden muss und habe noch nie mit Dini gearbeitet.


    Währe schön wenn mir das jmnd. erklären könnte :)


    mfg
    fenestro

  • Du könntest es so machen das du beim einknasten die Zeit schon in eine Variable speicherst für den Spieler bzw. z.B. so:

    SetPVarInt(playerid,"KnastZeit",kminuten);


    Bei OnPlayerConnect bzw. dann wenn der Account geladen wird bei dir im Script fragst du ab

    if(GetPVarInt(playerid,"KnastZeit") >= 1);
    SetPVarInt(playerid,"InKnast",1);


    So, im Timer wenn der Timer -1 zählt ich denke mal du hast einen Public für den Timer, dann schreibst du dort noch mit rein

    SetPVarInt(playerid,"KnastZeit",GetPVarInt(playerid,"KnastZeit") -1);


    Speichern & Laden tust du die Variablen wie jede andere PVar auch :)
    Ich hoffe ich konnte dir helfen, falls es Probleme gibt sag bescheid :)


    // Ungetestet!


  • KnastZeit=gettime()+(60*kminuten)


    Dieser Timer sorgt dafür das die "kminuten" auch wirklich als Minuten dargestellt & ausgelesen werden :)
    Das heist wenn ein Cop nun ein geben würde: /knast 0 1 50


    Dann würde der Verbrecher 50 Minuten sitzen. Der Timer ist übrigens auch gut für einen
    Timeban Befehl oder andere Befehle mit Minutentimern zu benutzen.