Befehl für 'ne bestimmte Zeit "sperren"

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
  • if(strcmp(cmd, "/advertise", true) == 0 || strcmp(cmd, "/ad", true) == 0)
    {
    if(PlayerInfo[playerid][pLevel] >= 2)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht eingeloggt!");
    return 1;
    }
    if(!IsPlayerInRangeOfPoint(playerid,3.0,1479.4088,-1682.9487,14.0469))
    {
    SendClientMessage(playerid, COLOR_GREY, "Du bist nicht am AD Punkt!");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[64];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GREY, "Benutzung: /ad(vertise) [Text]");
    return 1;
    }
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), "Bitte versuch es nach %d Sekunden wieder!", (addtimer/1000));
    SendClientMessage(playerid, COLOR_GREY, string);
    return 1;


    }
    new payout = idx * 5;
    if(GetPlayerMoney(playerid) < payout)
    {
    format(string, sizeof(string), "* Du hast %d characters benutzt das kostet $%d, du hast nicht genug.", offset, payout);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }
    GivePlayerMoney(playerid, - payout);
    format(string, sizeof(string), "Werbung: %s, Von: %s | Ph: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_GROVE_COLOR,string);
    format(string, sizeof(string), "~r~Abzug $%d~n~~w~Nachricht hat: %d Characters erreicht", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
    }
    }
    else SendClientMessage(playerid,COLOR_GREY,"Du musst Level 3 sein, um eine Werbung schreiben zu können!");
    return 1;
    }


    new addtimer = 60000;


    Wie kann ich das machen, dass man nur alle 60Sek oder halt bei anderen Befehl auch, nach 'ner bestimmten Zeit den Befehl wieder benutzen kann?
    Hier bei der Werbung z.B. klappt das irgendwie nicht, man kann die ganze Zeit machen.


    Ich bedanke mich schonmal für jede Hilfe.

  • Zu den anderen news:
    new ADVERTTIME[MAX_PLAYERS];
    und in deinem Befehl dann noch:
    ADVERTTIME[playerid]=1; //damit er auf genutzt gestellt ist


    In deinem Befehl natürlich bevor es umgestellt wird abfragen ob es 0 oder 1 ist und ihm dann weiterleiten, entweder ihm den Befehl gestatten oder einfach nur returnen


    dann fügst du in deinem Timer noch ein, dass es wieder auf 0 gesetzt werden soll and done.