In ein Befehl eine Warte Zeit einfügen

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 Community,


    Ich bräuchte mal eine kurze Hilfe bei einen Befehl wo ich gerne eine Wartezeit einfügen möchte von 2 Minuten nachdem man den Befehl ausgeführt hat.
    >>


    if(strcmp(cmd, "/stuck", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:slx, Float:sly, Float:slz;
    GetPlayerPos(playerid, slx, sly, slz);
    SetPlayerPos(playerid, slx, sly, slz+2);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }


    Hoffe man kann mir helfen :)


    gruß
    mcbeat

  • Ich habs jetz so gemacht


    Bei Forward:
    forward stucktimer(playerid);


    und beim Befehl

    if(strcmp(cmd, "/stuck", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:slx, Float:sly, Float:slz;
    GetPlayerPos(playerid, slx, sly, slz);
    SetPlayerPos(playerid, slx, sly, slz+2);
    SetTimer("stucktimer", 30000, 0);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }


    Scheint aber noch was zufehlen oder hab etwas falsch gemacht^^

  • forward stucktimer(playerid);



    if(strcmp(cmd, "/stuck", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:slx, Float:sly, Float:slz;
    GetPlayerPos(playerid, slx, sly, slz);
    SetPlayerPos(playerid, slx, sly, slz+2);
    SetTimerEx("stucktimer", 30000, 0, "i", playerid);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }


    public stucktimer(playerid)
    {
    //weiterer Code!
    }

  • Variable erstellen.
    z.B. new schonEINGEGEBENfragezeichen;


    forwards:
    forward timer(playerid);


    Dan beim CMD:
    if(strcmp......
    {
    if(schonEINGEGEBENfragezeichen == 1) { return SendClientMessage(playerid,0xFFFFFFFF,"Du musst noch warten!"); }
    else
    {
    // bla bla bla
    // variable den wert 1 zuteilen
    schonEINGEGEBENfragezeichen = 1;
    // und hier der Timer:
    SetTimerEx("timer",30000,false,"d",playerid);
    }
    }


    Timer:
    public timer(playerid)
    {
    schonEINGEGEBENfragezeichen = 0;
    }


    Sollte so funktionieren.

  • Wenn du Timer für einzelnde Spieler benutzt, nutze SetTimerEx.
    Sind es Timer die den ganzen Server betreffen benutze SetTimer.

  • Das weiß ich soweit,


    Meine Frage ist wie ich ein Timer in ein Befehl einbaue am besten wäre eine Komplette vorlage das ichs nur kopieren muss.


    Bekomm nur Fehler wenn ich die sachen einbaue die hier beschrieben wurde bzw weiß ich nicht was man
    bei


    public stucktimer(playerid)
    {
    //weiterer Code!
    }


    noch eingeben muss.

  • Wieso fragst du den noch mal nach was bei dem timer public reinkommt wen ich es doch schon gepostet habe?
    Siehe mein Post.
    wen du ihn dir genau anschaust hättest du dir die pn gespart^^

  • Sowie ich das Verstehe muss ich den CMD
    if(strcmp(cmd, "/stuck", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:slx, Float:sly, Float:slz;
    GetPlayerPos(playerid, slx, sly, slz);
    SetPlayerPos(playerid, slx, sly, slz+2);
    TogglePlayerControllable(playerid, 1);
    return 1;
    }
    }


    umschreiben in


    if(strcmp(cmd, "/stuck", true) == 0)
    {
    if(stucktimer == 1) { return SendClientMessage(playerid,0xFFFFFFFF,"Du musst noch warten!"); }
    else
    if(IsPlayerConnected(playerid))
    {
    new Float:slx, Float:sly, Float:slz;
    GetPlayerPos(playerid, slx, sly, slz);
    SetPlayerPos(playerid, slx, sly, slz+2);
    TogglePlayerControllable(playerid, 1);
    return 1;
    stucktimer = 1;
    SetTimerEx("timer",30000,false,"d",playerid);
    }
    }


    oder?


    Ich bekomme dann aber nur Fehler mit playerids usw von anderen Script Codes

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • forward StuckTimer(id);
    Public OnPlayerConnect(playerid)
    usedstuck[playerid] = 0;
    if(strcmp(cmd, "/stuck", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(usedstuck[playerid] == 1)
    {
    return 1;
    }
    new Float:slx, Float:sly, Float:slz;
    GetPlayerPos(playerid, slx, sly, slz);
    SetPlayerPos(playerid, slx, sly, slz+2);
    TogglePlayerControllable(playerid, 1);
    usedstuck[playerid] = 1;
    SetTimerEx("StuckTimer", 120000, false, %d, playerid);
    return 1;
    }
    }


    public StuckTimer(id)
    {
    usedstuck[id] = 0;
    return 1;
    }

  • Wenn du willst, dass ein ein Befehl erst wieder nacht 2 Minuten ausführbar ist, dann mach folgendes:


    Oben:


    forward DelayTimer(playerid);



    dein Command umschreiben in:


    if(strcmp(cmd, "/stuck", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetPVarInt(playerid,"Delay") == 0)
    {
    new Float:slx, Float:sly, Float:slz;
    GetPlayerPos(playerid, slx, sly, slz);
    SetPlayerPos(playerid, slx, sly, slz+2);
    SetTimerEx("DelayTimer", 120000, 0, "d", playerid);
    TogglePlayerControllable(playerid, 1);
    SetPVarInt(playerid,"Delay",1);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_GRAD2,"Du musst immer 2 Minuten warten bevor du den Befehl erneut ausführen kannst.");
    return 1;
    }
    }
    return 1;
    }



    und ganz unten:



    public DelayTimer(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    SetPVarInt(playerid,"Delay",0)
    }
    }