Timer Funktion

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 zusammen bin auf eure Hilfe angewiesen komme auch gleich zum punkt undzwar habe ich hier diesen Befehl


    COMMAND:job(playerid,params[])
    {
    #pragma unused params
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pAutoLic] != 1)return SendClientMessage(playerid,GRAU,"Du hast keinen Führerschein.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    new string[128],jobtimer = Spieler[playerid][pJobSperre]-gettime(),jobinviteid = ReturnJobInviteID(playerid);
    if(jobinviteid == -1)return SendClientMessage(playerid,GRAU,"Du kannst hier keinen Job annehmen!");
    if(!isPlayerInJob(playerid,0))return SendClientMessage(playerid,GRAU,"Du bist bereits in einem Job tätig.");
    if(Spieler[playerid][WorkInJob] != 0)return SendClientMessage(playerid,GRAU,"Du arbeitest momentan und kannst somit keinen Job annehmen! (Kündigen mit /quitjob)");
    if(gettime() < jobtimer)
    {
    format(string,sizeof(string),"Du kannst erst in %i:%02d Minuten wieder einen neuen Job annehmen!",floatround(jobtimer/60),floatround(jobtimer%60));
    return SendClientMessage(playerid,GRAU,string);
    }
    if(Spieler[playerid][pPersoLic] == 0)return SendClientMessage(playerid,GRAU,"Du besitzt keinen Personalausweis.");
    if(Spieler[playerid][pBankkonto] == 0)return SendClientMessage(playerid,GRAU,"Du brauchst ein Bankkonto um einen Arbeitsvertrag zu unterschreiben.");
    Spieler[playerid][pWorkLess] = 0;
    Spieler[playerid][pJobSperre] = gettime()+(60*60*2);
    Spieler[playerid][pJob] = JOBinvitePUNKTE[jobinviteid][jID];
    format(string,sizeof(string),"Herzlichen Glückwunsch zum neuen Job (%s)",SpielerJob(playerid));
    SendClientMessage(playerid,GRUEN,string);
    SendClientMessage(playerid,GELB,"Info: Falls du mal einen Befehl nicht weißt '/hilfe'");
    SendClientMessage(playerid,GELB," Du hast nun eine zwei Stündige Jobsperre.");
    return 1;
    }



    so, wenn ich jetzt aber /quitjob eingebe kann ich den Job direkt kündigen..



    COMMAND:quitjob(playerid,params[])
    {
    #pragma unused params
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    if(isPlayerInJob(playerid,0))return SendClientMessage(playerid,GRAU,"Du hast keinen Job!");
    if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,GRAU,"Du kannst den Job nur außerhalb eines Fahrzeugs kündigen!");
    SendClientMessage(playerid,WEISS,"Du hast deinen Job gekündigt!");
    Spieler[playerid][pJob] = 0;
    Spieler[playerid][WorkInJob] = 0;
    JobExit(playerid);
    return 1;
    }



    Mir ist bewusst das beim /quitjob befehl eine Abfrage fehlt (Timer) ich weiss aber nicht wie ich diese da reinstelle..
    hoffe ihr könnt mir helfen :/

  • Ich weiß nicht genau was du haben willst, aber ich denke das hier:

    Spoiler anzeigen
    COMMAND:job(playerid,params[])
    {
    #pragma unused params
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pAutoLic] != 1)return SendClientMessage(playerid,GRAU,"Du hast keinen Führerschein.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    new string[128],jobtimer = Spieler[playerid][pJobSperre]-gettime(),jobinviteid = ReturnJobInviteID(playerid);
    if(jobinviteid == -1)return SendClientMessage(playerid,GRAU,"Du kannst hier keinen Job annehmen!");
    if(!isPlayerInJob(playerid,0))return SendClientMessage(playerid,GRAU,"Du bist bereits in einem Job tätig.");
    if(Spieler[playerid][WorkInJob] != 0)return SendClientMessage(playerid,GRAU,"Du arbeitest momentan und kannst somit keinen Job annehmen! (Kündigen mit /quitjob)");
    if(gettime() < jobtimer)
    {
    format(string,sizeof(string),"Du kannst erst in %i:%02d Minuten wieder einen neuen Job annehmen!",floatround(jobtimer/60),floatround(jobtimer%60));
    return SendClientMessage(playerid,GRAU,string);
    }
    if(Spieler[playerid][pPersoLic] == 0)return SendClientMessage(playerid,GRAU,"Du besitzt keinen Personalausweis.");
    if(Spieler[playerid][pBankkonto] == 0)return SendClientMessage(playerid,GRAU,"Du brauchst ein Bankkonto um einen Arbeitsvertrag zu unterschreiben.");
    Spieler[playerid][pWorkLess] = 0;
    Spieler[playerid][pJobSperre] = gettime()+(60*60*2);
    Spieler[playerid][pJob] = JOBinvitePUNKTE[jobinviteid][jID];
    format(string,sizeof(string),"Herzlichen Glückwunsch zum neuen Job (%s)",SpielerJob(playerid));
    SendClientMessage(playerid,GRUEN,string);
    SendClientMessage(playerid,GELB,"Info: Falls du mal einen Befehl nicht weißt '/hilfe'");
    SendClientMessage(playerid,GELB," Du hast nun eine zwei Stündige Jobsperre.");
    Spieler[playerid][pJobQuitSperre] = gettime()+(60*5); //5 Minuten bis der Spieler /quitjob machen kann
    return 1;
    }

    Spoiler anzeigen
    COMMAND:quitjob(playerid,params[])
    {
    #pragma unused params
    if(Spieler[playerid][pJobQuitSperre] > gettime()) return SendClientMessage(playerid,GRAU,"Du kannst den Job erst nach 5 Minuten kündigen."); //Nachricht
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    if(isPlayerInJob(playerid,0))return SendClientMessage(playerid,GRAU,"Du hast keinen Job!");
    if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,GRAU,"Du kannst den Job nur außerhalb eines Fahrzeugs kündigen!");
    SendClientMessage(playerid,WEISS,"Du hast deinen Job gekündigt!");
    Spieler[playerid][pJob] = 0;
    Spieler[playerid][WorkInJob] = 0;
    Spieler[playerid][pJobQuitSperre] = 0;
    JobExit(playerid);
    return 1;
    }


    Außerdem musst du bei dem enum welches mit "Spieler" verknüpft ist (also dort wo zum Beispiel "pTazerd" drin steht), noch "pJobQuitSperre," hinzufügen.

  • Das Problem mit gettime() ist das es weiterläuft auch wenn der Spieler offline ist. Sofern es nicht gewollt ist, sollte man einen Timer(60sec) durch alle spieler gehen und jeweils den Wert hinzufügen oder abziehen je nachdem wie man das ganze Hand haben möchte.


  • Das Problem mit gettime() ist das es weiterläuft auch wenn der Spieler offline ist. Sofern es nicht gewollt ist, sollte man einen Timer(60sec) durch alle spieler gehen und jeweils den Wert hinzufügen oder abziehen je nachdem wie man das ganze Hand haben möchte.


    Das ist in Ordnung das das weiterläuft.. wie mach ich das jetzt aber, das man diese 2 std. erst abwarten muss.
    Momentan kann ich den Job direkt nach /join kündigen..

  • Dann einfach so:
    COMMAND:job(playerid,params[])
    {
    #pragma unused params
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pAutoLic] != 1)return SendClientMessage(playerid,GRAU,"Du hast keinen Führerschein.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    new string[128],jobtimer = Spieler[playerid][pJobSperre]-gettime(),jobinviteid = ReturnJobInviteID(playerid);
    if(jobinviteid == -1)return SendClientMessage(playerid,GRAU,"Du kannst hier keinen Job annehmen!");
    if(!isPlayerInJob(playerid,0))return SendClientMessage(playerid,GRAU,"Du bist bereits in einem Job tätig.");
    if(Spieler[playerid][WorkInJob] != 0)return SendClientMessage(playerid,GRAU,"Du arbeitest momentan und kannst somit keinen Job annehmen! (Kündigen mit /quitjob)");
    if(jobtimer > 0)
    {
    format(string,sizeof(string),"Du kannst erst in %i:%02d Minuten wieder einen neuen Job annehmen!",floatround(jobtimer/60),floatround(jobtimer%60));
    return SendClientMessage(playerid,GRAU,string);
    }
    if(Spieler[playerid][pPersoLic] == 0)return SendClientMessage(playerid,GRAU,"Du besitzt keinen Personalausweis.");
    if(Spieler[playerid][pBankkonto] == 0)return SendClientMessage(playerid,GRAU,"Du brauchst ein Bankkonto um einen Arbeitsvertrag zu unterschreiben.");
    Spieler[playerid][pWorkLess] = 0;
    Spieler[playerid][pJobSperre] = gettime()+(60*60*2);
    Spieler[playerid][pJob] = JOBinvitePUNKTE[jobinviteid][jID];
    format(string,sizeof(string),"Herzlichen Glückwunsch zum neuen Job (%s)",SpielerJob(playerid));
    SendClientMessage(playerid,GRUEN,string);
    SendClientMessage(playerid,GELB,"Info: Falls du mal einen Befehl nicht weißt '/hilfe'");
    SendClientMessage(playerid,GELB," Du hast nun eine zwei Stündige Jobsperre.");
    return 1;
    }


    COMMAND:quitjob(playerid,params[])
    {
    #pragma unused params
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    if(isPlayerInJob(playerid,0))return SendClientMessage(playerid,GRAU,"Du hast keinen Job!");
    if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,GRAU,"Du kannst den Job nur außerhalb eines Fahrzeugs kündigen!");
    new jobtimer = Spieler[playerid][pJobSperre]-gettime();
    if(jobtimer > 0)
    {
    format(string,sizeof(string),"Du kannst erst in %i:%02d Minuten wieder einen neuen Job annehmen!",floatround(jobtimer/60),floatround(jobtimer%60));
    return SendClientMessage(playerid,GRAU,string);
    }
    SendClientMessage(playerid,WEISS,"Du hast deinen Job gekündigt!");
    Spieler[playerid][pJob] = 0;
    Spieler[playerid][WorkInJob] = 0;
    JobExit(playerid);
    return 1;
    }

  • Warum machst du die Abfragen vom Knast, etc. in jeden Befehl? :o


    Mach es doch so:
    public OnPlayerCommandReceived(playerid, cmdtext[]){
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(Spieler[playerid][pInPrison] == 1)return SendClientMessage(playerid,GRAU,"Du bist im Prison.");
    if(Spieler[playerid][pFriedhof] == 1)return SendClientMessage(playerid,GRAU,"Du bist Tot.");
    if(Spieler[playerid][pDeath] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(Spieler[playerid][pJailed] != 0)return SendClientMessage(playerid,GRAU,"Du bist im Gefängnis.");
    if(Spieler[playerid][pTazerd] == 1)return SendClientMessage(playerid,GRAU,"Du bist K.O/getazert.");
    if(Spieler[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    return 1;
    }


    COMMAND:quitjob(playerid,params[])
    {
    #pragma unused params
    if(isPlayerInJob(playerid,0))return SendClientMessage(playerid,GRAU,"Du hast keinen Job!");
    if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,GRAU,"Du kannst den Job nur außerhalb eines Fahrzeugs kündigen!");
    new jobtimer = Spieler[playerid][pJobSperre]-gettime();
    if(jobtimer > 0)
    {
    format(string,sizeof(string),"Du kannst erst in %i:%02d Minuten wieder einen neuen Job annehmen!",floatround(jobtimer/60),floatround(jobtimer%60));
    return SendClientMessage(playerid,GRAU,string);
    }
    SendClientMessage(playerid,WEISS,"Du hast deinen Job gekündigt!");
    Spieler[playerid][pJob] = 0;
    Spieler[playerid][WorkInJob] = 0;
    JobExit(playerid);
    return 1;
    }


    So dann halt alle Commands..
    Dadurch sparst du eine Menge Zeilen & Zeit..


    Jeffry: Das kann man hinzufügen.. Das wär immer noch besser als das dauernd in jeden Befehl zu klatschen

    Mit freundlichen Grüßen
    ErikSon



    Scripte kleine Systeme auf Anfrage umsonst!
    Per PN könnt ihr mir gerne Scriptingfragen stellen.

    Einmal editiert, zuletzt von ErikSon ()

  • Danke Jeffry habe es jetzt so gemacht
    [pwnif(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,GRAU,"Du kannst den Job nur außerhalb eines Fahrzeugs kündigen!");
    new string[128],jobtimer = Spieler[playerid][pJobSperre]-gettime();
    if(jobtimer > 0)
    {
    format(string,sizeof(string),"Du hast einen zwei stündigen Arbeitsvertrag unterschrieben! Du kannst erst in %i:%02d Minuten deinen Vertrag auflösen!",floatround(jobtimer/60),floatround(jobtimer%60));
    return SendClientMessage(playerid,GRAU,string);
    }][/pwn]


    und es funktioniert