befehle nur alle 20 sekunen möglich machen wie?

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
  • Abend, frage steht oben, also ich will, das man einem befehl bur alle 20 sekunden eingeben/funktioniert, und das dan auch eine Nachricht kommt, "Nur alle 20 sekunden" oder so, wie macht man das?


    if(strcmp(cmdtext,"/dm1",true)==0)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "%s ist DM1 beigetreten! (/dm1)Desert Eagle", name);
    SendClientMessageToAll(0xAA3333AA, string);
    SetPlayerPos(playerid,-2119.2554,-194.4700,35.3203);
    ResetPlayerWeapons(playerid);
    GameTextForPlayer(playerid,"Welcome to /DM1",4000,6);
    GivePlayerWeapon(playerid, 24 ,8000);
    return 1;
    }

  • Das klappt auch problemlos ohne Timer, man brauch dafür nur GetTickCount() benutzen. Für sowas brauch man definitiv keinen Timer ...


    new BefehlFrei[MAX_PLAYERS];
    BefehlFrei[playerid] = GetTickCount() + 20 * 1000; // Wenn der Befehl ausgeführt wurde , sperren wir ihn für 20 Sekunden


    if( BefehlFrei[playerid] < GetTickCount() ) { // Befehl noch nicht wieder frei ! }

  • Da gibts eigentlich nicht viel zu erklären.
    Mit GetTickCount bekommst du einen Wert zurück,der besagt welche "Zeit" wir gerade haben.Wie ein Datum kannst es dir vorstellen für irgendeinen Tag, nur eben für eine Zeit. Der Tick repräsentiert also irgendeinen Zeit, genau genommen die,wann er abgefragt wurde.Die Serveruhr,die den Tick zurück liefert,läuft ständig weiter und erhöht sich pro ms ( 1 tick = ms ) um 1.
    Wenn du also weisst, welchen Tick wir gerade haben und du rechnest 20 * 1000 Ticks drauf ( also 20 Sekunden ) , dann weisst du, welchen Tick wir in 20 Sekunden haben. Jetzt brauchst du nur noch Abfragen,ob der Tick schon erreicht wurde. Das ist natürlich nur eine Abfrage ob der aktuell zurückgelieferte Tick größere oder kleiner ist,da die Serveruhr ja ständig weiter läuft.


    Einen Nachteil hat GetTickCount allerdings schon,kannst ihn ja hier nachlesen:
    http://wiki.sa-mp.com/wiki/GetTickCount
    Glaube das Problem haben nur die wenigstens,denn wieso sollt ein Server mehr als 24 Tage ohne Neustart laufen :-O ...