Wie kann ich Timer setzen?

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,


    wie kann ich einfügen das nur jeder Spieler jede 3 stunden 1x ausrauben kann bzw... er soll nur jede stunde /kammeraubrechen machen können.!



    if(strcmp(cmd,"/kammeraufbrechen",true) == 0)
    {
    if(IsPlayerInRangeOfPoint(playerid,2.0,1583.8921,-1649.0535,19.8792))
    {
    SendClientMessageToAll(0x9B00FFFF, "NEWS: Die Waffenkammer der LSPD wurde aufgebrochen!");
    ShowPlayerDialog(playerid,DIALOG_WAFFENKAMMER,DIALOG_STYLE_LIST,"Waffenkammer","Deagle\nMP5\nM4\nSniper","Nehmen","Abbrechen");
    return 1;
    }
    }

  • oben im Script
    new ausbruch[MAX_PLAYERS];



    dann so:



    forward ausbrechen(playerid);





    if(strcmp(cmd,"/kammeraufbrechen",true) == 0)
    {
    if(ausbruch[playerid] == 1)return SendClientMessage(playerid,ROT,"Du darfst noch nicht in die Waffen kammer.");
    if(IsPlayerInRangeOfPoint(playerid,2.0,1583.8921,-1649.0535,19.8792))
    {
    SetTimer("ausbrechen",3600000,0);
    SendClientMessageToAll(0x9B00FFFF, "NEWS: Die Waffenkammer der LSPD wurde aufgebrochen!");
    ShowPlayerDialog(playerid,DIALOG_WAFFENKAMMER,DIALOG_STYLE_LIST,"Waffenkammer","Deagle\nMP5\nM4\nSniper","Nehmen","Abbrechen");
    return 1;
    }
    }


    public ausbrechen(playerid)
    {
    ausbruch[playerid] = 0;
    new string[128];
    format(string,sizeof(string),"Der LSPD kann nun geraubt werden (waffenkammer)");
    SendClientMessageToAll(ROT,string);
    return 1;
    }


    Ungetestet hier im Forum egschrieben!1

  • Womit speicherst du denn deine Spieler Daten?


    Du musst ja speichern, wann er Spieler das letzte mal das gemacht hat und es dann auch wieder laden.


    Bei OnPlayerConnect bzw. PlayerLogin, LoginPlayer, Sonst was:
    SetPVarInt(playerid, "KammerAufgebrochen", Load(....)),
    Bei OnplayerDisconnect oder OnPlayerSave, SavePlayer,PlayerSave:
    Save(GetPVarInt(playerid, "KammerAufgebrochen");



    Und dein Script Command machste dann so:


    if(!strcmp(cmd, "/kammeraufbrechen", true))
    if(IsPlayerInRangeOfPoint(playerid, 2.0, 1583.8921, -1649.0535, 19.8792))
    {
    if(GetPVarInt(playerid, "KammerAufgebrochen") <= gettime())
    return SendClientMessage(playerid, 0x9B00FFFF, "Du kannst die Kammer nur jede Stunde ausrauben.");
    SetPVarInt(playerid, "KammerAufgebrochen", gettime() + 3600);
    SendClientMessageToAll(0x9B00FFFF, "NEWS: Die Waffenkammer der LSPD wurde aufgebrochen!");
    return ShowPlayerDialog(playerid, DIALOG_WAFFENKAMMER, DIALOG_STYLE_LIST, "Waffenkammer", "Deagle\nMP5\nM4\nSniper", "Nehmen", "Abbrechen");
    }

    Miete mich (nicht) :love:

    Einmal editiert, zuletzt von Bubelbub ()

  • Danke..


    @Blood ich habe alles so gemacht 0 Fehler aber habe ein Problem kann es nochmals aufbrechen ?? xD also hat nicht wirklich was gebracht ich kann den Befehl immer wieder erneut eingeben! Das sollte dann eigl kommen " du hast schon eben die waffenkammer aufgebrochen und musst 1 stunde warten" hmm... hilfe pleas

  • Meins ist richtig nunnoch den befehl so ändern:
    if(strcmp(cmd,"/kammeraufbrechen",true) == 0)
    {
    if(ausbruch[playerid] == 1)return SendClientMessage(playerid,ROT,"Du darfst noch nicht in die Waffen kammer.");
    if(IsPlayerInRangeOfPoint(playerid,2.0,1583.8921,-1649.0535,19.8792))
    {
    SetTimer("ausbrechen",3600000,0);
    ausbruch[playerid] = 1;
    SendClientMessageToAll(0x9B00FFFF, "NEWS: Die Waffenkammer der LSPD wurde aufgebrochen!");
    ShowPlayerDialog(playerid,DIALOG_WAFFENKAMMER,DIALOG_STYLE_LIST,"Waffenkammer","Deagle\nMP5\nM4\nSniper","Nehmen","Abbrechen");
    return 1;
    }
    }

  • Blood ok hat geklappt danke :) evtl kann man noch einfügen das man +4 wanteds bekommt wie geht das ;D ??

  • Blood ok hat geklappt danke :) evtl kann man noch einfügen das man +4 wanteds bekommt wie geht das ;D ??


    SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 4);


    Aber als Hinweis:
    Blood´s Script speichert das nicht.
    D.h. einfach neu einloggen und schon kann man die wieder ausrauben :!:

    Miete mich (nicht) :love:


  • SetPlayerWantedLevel(playerid, GetPlayerWantedLevel(playerid) + 4);


    Aber als Hinweis:
    Blood´s Script speichert das nicht.
    D.h. einfach neu einloggen und schon kann man die wieder ausrauben :!:


    Nicht nur das.
    Das von Bubelbub erspart resourcen macht sich zwar nicht bemerkbar bei so nen kurzen Code.
    Aber wenn das ganze Script so unsauber ist wie der Befehl von blood dann wirds nen Lagg Paradise.

    RFT

  • Nicht nur das.
    Das von Bubelbub erspart resourcen macht sich zwar nicht bemerkbar bei so nen kurzen Code.
    Aber wenn das ganze Script so unsauber ist wie der Befehl von blood dann wirds nen Lagg Paradise.


    Why :O? Ich hab einfach sein Befehl genommen und paar sachen eingefügt




    achjaaa jetzt weiß ich was du meinst yo, aber der Befehl funktz ;D

  • Why :O? Ich hab einfach sein Befehl genommen und paar sachen eingefügt


    Player Variablen sind nicht 24/7 im Arbeitsspeicher.
    Sie werden gelöscht wenn sie gelöscht sind.
    Außerdem werden diese nur gesetzt wenn du sie setzt.
    Beim PlayerDisconnect verschwinden sie auch.


    D.h. du hast die Zahl von "ausrauben[MAX_PLAYERS]" nicht 24/7 im Arbeitsspeicher.
    Sondern nur ab und zu eine Variable.


    Bei 10 Spielern dauerhaft ist also weniger Arbeitsspeicher wie bei dauerhaft 500 Spielern == Dein Script :!:

    Miete mich (nicht) :love: