/knastzeit

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
  • Hey Leute,
    ich möchte gerne eine neuen Befehl erstellen aber habe immoment keinen Plan wie ich das anstellen soll.
    Also der Befehl soll /knastzeit sein.


    Ich habe bereits den einbuchten Befehl und einen automatische Funktion per Timer die den "Knasti" wieder rausholt.
    Nun weiß ich aber nicht wie ich:
    1. Abrufen kann wv. Zeit noch bleibt,bis der Häftling entlassen wird.
    2. Wie ich ich das in den Befehl reinmache.


    Ich denk mal das müsste ja auch wieder mit einem Timer oder so gehen der das irgendwie aktualiesiert aber wie genau geht das?


    Hier mal mein einbuchten Befehl falls ihr den brauchen solltet:
    ocmd:einbuchten(playerid,params[]) //Einbuchten für LSPD,FBI und Army
    {
    new pID;
    new wantedlevel = GetPlayerWantedLevel(pID);
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,BLAU,"/einbuchten [ID]");
    if(!IstSpielerInFraktion(playerid,1) && (!IstSpielerInFraktion(playerid,2)) && (!IstSpielerInFraktion(playerid,3)))return SendClientMessage(playerid,ROT,"Du bist kein LSPD/FBI oder Armysoldat!");
    {
    if(!IsPlayerInRangeOfPoint(playerid,15,1798.1405,-1584.4061,13.4781))return SendClientMessage(playerid,ROT,"Du musst am Knast sein!");
    new test = GetPlayerVehicleID(playerid);
    GetPlayerVehicleID(pID);
    if(!IsPlayerInVehicle(pID,test))return SendClientMessage(playerid,ROT,"Der Spieler sitzt nicht in deinem Auto!");
    {
    new w = GetPlayerWantedLevel(pID);
    if(!HatSpielerWanted(pID,w<1))return SendClientMessage(playerid,ROT,"Dieser Spieler hat keine Wanteds!");
    {
    if(IsPlayerConnected(pID))
    {
    SetPlayerPos(pID,1771.8785,-1547.4343,9.9117);
    SendClientMessage(playerid,BLAU,"Du hast den Spieler erfolgreich eingebuchtet!");
    SendClientMessage(pID,BLAU,"Du wurdest eingebuchtet und musst nun eine gewisse Zeit im Knast einsitzen!");
    GivePlayerMoney(playerid,500*wantedlevel);
    SetPVarInt(pID,"Knast",1);
    Frei[pID] = 240*wantedlevel; //Pro Wanted 3 min. sitzen!
    SetPlayerWantedLevel(pID,0);
    }
    }
    }
    }
    return 1;
    }


    //Edit ich muss auch rausfinden wie man den Timer so speichert,dass ich ihn bei OnPlayerSpawn wieder aufrufen kann wenn der Spieler reloggt/stirbt.
    Er soll sich ja nicht "rauscheaten" können ^^

  • oben ins script:



    forward knastzeit(pID);
    new Frei[MAX_PLAYERS] = -1; //das durch die alte ersetzen


    dann erstellst du dir unten im script eine neue funktion:



    public knastzeit(pID)
    {
    if(Frei[pID] == 0)
    {
    //das was passiert wenn er seine zeit abgesessen hat
    Frei[pID] = -1;
    }
    else
    {
    Frei[pID]--;
    SetTimerEx("knastzeit",60000,0,"i",pID);
    }
    return 1;
    }


    und in deinem einbuchten command:



    SetTimerEx("knastzeit",60000,0,"i",pID);


    und ersetzt "Frei[pID] = 240*wantedlevel"
    durch "Frei[pID] = 3*wantedlevel", da mein lösungsvorschlag mit minuten arbeitet


    dann der befehl:



    if(!strcmp(cmdtext,"/knastzeit",true))
    {
    if(Frei[playerid] == -1) return SendClientMessage(playerid,0xFFFFFFFF,"Du sitzt nicht im Knast");
    new string[256];
    format(string,sizeof(string),"Du musst noch %i Minuten im Knast sitzen", Frei[playerid]);
    SendClientMessage(playerid,0xFFFFFFFF,string);
    return 1;
    }


    //edit


    wegen dem aus dem knast cheaten unter onplayerspawn:



    if(Frei[playerid] != -1)
    {
    //hier der knastport
    SetTimerEx("knastzeit",60000,0"i",playerid);
    }

    3 Mal editiert, zuletzt von SmD ()