Befehl darf nur jede 15 Sec. genützt werden

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 habe nen /Kiste'n Befehl und dieser darf nur jede 15 Sekunden genützt werden.
    Jedoch weiß ich nicht, wie ich das genau Scripten soll....

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/Kiste", cmdtext, true, 10) == 0)
    {
    aufbrechen1[playerid] = 1;
    SetTimerEx("aufbrechen3",15000, false,"i",playerid);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    var0 = CreateObject(964,x+3,y,z-1,0,0,0);
    WLabel = Create3DTextLabel("Benutze /waffen",0xFFFFFFFF,x+3,y,z,7,0);
    return 1;
    }


    Danke im Vorraus ;)

  • Du machst global eine variabel diese ist standartmäßig auf 0.
    dann den timer setzen wenn der befehl benutzt wurde, du setzt die variabel dann auch auf 1 sodass er den befehl dann nicht mehr nutzen kann.
    nach 15 sekunden wird der public aufgerufen(Funkname des Timers) und dort kannst du die variabel wieder auf 0 setzen.


    bei den befehl fragst du ab ob die variabel auf 0 ist, wenn ja kann das passieren was du machen willst.


    wenn sie auf 1 ist kommt eine nachricht das er noch warten muss bis die 15 sekunden um sind.

  • Habs so:


    oben:
    forward kiste3(playerid);
    new kiste1[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    kiste1[playerid] = 0;
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/Kiste", cmdtext, true, 10) == 0)
    {
    SetTimerEx("kiste3",15000, false,"i",playerid);
    kiste1[playerid] = 1;
    aufbrechen1[playerid] = 1;
    SetTimerEx("aufbrechen3",15000, false,"i",playerid);
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    var0 = CreateObject(964,x+3,y,z-1,0,0,0);
    WLabel = Create3DTextLabel("Benutze /waffen",0xFFFFFFFF,x+3,y,z,7,0);
    return 1;
    }


    public kiste3(playerid)
    {
    if(kiste1[playerid] == 1)
    {
    SendClientMessage(playerid,0xFF6400FF,"Du hast bereits eine Kiste. Bitte warte 15 Sekunden!");
    }
    return 1;
    }

  • ne, die abfrage machst du oben rein. ob er eine kiste hat(bei dein befehl).


    im public einfach nur die variabel auf 0 setzen.

  • Es kommt drauf an soll es nur der Spieler alle 15 sec nutzen oder an sich wenn einmal genutzt muss jeder warten
    wenn das zweite gedacht ist dann so:

    new kisteadd = 0;
    forward KisteOn();


    if(!kisteadd)
    {
    }


    SetTimer("KisteOn", addtimer, 0);kisteadd = 0;


    public KisteOn()
    {
    adds=1;
    return 1;
    }


    so ungefähr


    mfg
    GeForce