/ad einen Timer einbauen

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 wenn ich /ad mache und eine werbung wie mache ich das man erst nach 60sekunden wieder eine werbung schreiben kann und wenn jemand vor den 60 sekunden nochmal probiert eine zuschreiben das dann da steht "du musst 60sekunden warten und eine werbung schreiben zu können"




    if(strcmp(cmd, "/advertise", true) == 0 || strcmp(cmd, "/ad", true) == 0)
    {
    if(PlayerInfo[playerid][pLevel] >= 3)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] == 0)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du bist noch nicht eingeloggt !");
    return 1;
    }
    if(!IsPlayerInRangeOfPoint(playerid, 5.0, 1188.4054,-912.0315,48.0625) && !IsPlayerInRangeOfPoint(playerid, 5.0, 1207.2928,-917.7825,43.0665))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht am BSN am /ad point.");
    return 1;
    }
    if(PlayerInfo[playerid][pGangJailed] == 1 || PlayerTied[playerid] >= 1)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst jetzt keine Werbung schreiben!");
    return 1;
    }
    GetPlayerName(playerid, sendername, sizeof(sendername));
    new length = strlen(cmdtext);
    while ((idx < length) && (cmdtext[idx] <= ' '))
    {
    idx++;
    }
    new offset = idx;
    new result[128];
    while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
    {
    result[idx - offset] = cmdtext[idx];
    idx++;
    }
    result[idx - offset] = EOS;
    if(!strlen(result))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutzung: (/ad)vertise [text]");
    return 1;
    }
    if ((!adds) && (PlayerInfo[playerid][pAdmin] < 1))
    {
    format(string, sizeof(string), "Bitte Versuch es Später wieder %d sekunden zwischen einer Werbung!", (addtimer/1000));
    SendClientMessage(playerid, COLOR_GRAD2, string);
    return 1;


    }
    new payout = idx * SBizzInfo[5][sbEntranceCost];
    if(GetPlayerMoney(playerid) < payout)
    {
    format(string, sizeof(string), "* Du hast %d Zeichen benutzt, das kostet $%d, du hast nicht genug dabei.", offset, payout);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    return 1;
    }
    GivePlayerMoney(playerid, - payout);
    SBizzInfo[5][sbTill] += payout/3;
    ExtortionSBiz(5, payout);
    format(string, sizeof(string), "Werbung: %s, Kontakt: %s, Telefonnummer: %d", result, sendername,PlayerInfo[playerid][pPnumber]);
    OOCNews(TEAM_Grove_COLOR,string);
    format(string, sizeof(string), "~r~Rechnung: $%d~n~~w~Nachricht hatte: %d Zeichen.", payout, idx);
    GameTextForPlayer(playerid, string, 5000, 5);
    if (PlayerInfo[playerid][pAdmin] < 1){SetTimer("AddsOn", addtimer, 0);adds = 0;}
    }
    }
    else SendClientMessage(playerid,COLOR_RED,"Du brauchst Level 3 um eine Werbung zu schreiben.");
    return 1;
    }


    MfG: NL

  • Hallo,
    bitte rücke den Code erst einmal in die Tags ein, damit
    er besser lesbar ist.
    Also jetzt zu der 60 Sekunden Regel:
    Es gibt natürlich hier auch verschiedene Wege, jedoch würde ich beim Schreiben einer AD Einfach den aktuellen Timestamp mir "holen", dort 60 Sekunden draufsetzen (natürlich auch in der Variable des Spielers speichern) und beim /ad Befehl abfragen, ob der Timestamp des Spielers > als der aktuelle ist, dann einfach ne Message senden und den Befehl "abbrechen".


    Achtung: Wenn die 60 Sekunden Regel für alle Spieler gelten soll, muss es natürlich eine allgemeine Variable sein (also nicht auf den einzelnen Spieler bezogen ;)


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

    Einmal editiert, zuletzt von L0g4n ()

  • Hallo,
    bitte rücke den Code erst einmal in die Tags ein, damit
    er besser lesbar ist.
    Also jetzt zu der 60 Sekunden Regel:
    Es gibt natürlich hier auch verschiedene Wege, jedoch würde ich beim Schreiben einer AD Einfach den aktuellen Timestamp mir "holen", dort 60 Sekunden draufsetzen (natürlich auch in der Variable des Spielers speichern) und beim /ad Befehl abfragen, ob der Timestamp des Spielers > als der aktuelle ist, dann einfach ne Message senden und den Befehl "abbrechen".


    LG

    Kannst du mir da helfen VIA Tv?

  • NightLife
    Wieso sollte ich?
    Das ist ein Support Forum, versuche es einfach selber und wenn du nicht weiter kommst, kannst du ja hier einfach wieder fragen.


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Einfach nach dem einer es abgeschickt hat SetTimer ausführen in der wiki findest du die parameter etc.


    und natürlich auch eine Variable die du dann auf 1 setze und im timer wenn er vorbei ist wieder auf 0 setzt. und natürlich muss eine abfrage mit rein d.h if(var==1)
    {
    SendClientMessage(playerid,-1,"Warte ein bisschen. Eine Werbunge wurde schon abgeschickt.!");
    }

  • ChEcKsZ0R
    Diese Methode ist nicht zu empfehlen, da du dann den Timer jede Sekunde wiederholen lassen müsstest - für jeden Spieler.


    LG

    Main: CPU: Intel Core i5-4440 @ 3,10 GHz | CPU-Cooling: Matterhorn -PURE- | RAM: 16GB Crucial Ballistix Sport DDR3-1600 DIMM CL9-9-9-24 |
    Motherboard: ASRock B85M Pro4 | GPU: Sapphire Radeon R9 390X Nitro 8GB GDDR5 |

    SSD: Samsung SSD 840 Evo 500GB | Power Supply: 550 Watt Corsair CS Series Modular 80+ Gold | Case: beQuiet! Silent Base 800


    As I walk through the valley of the shadow of death
    I take a look at my life and realize there's nothin' left.

  • Warum den ?


    ocmd:ad(playerid,params[])
    {
    new var,ad[128];
    if(sscanf(params,"s",ad)) return ....
    if(var==1)
    {
    SendClientMessage...
    }
    else if(var==0)
    {
    format(ad,sizeof(ad),"Werbung von %s : %s",SpielerName(playerid),ad);
    SendClientMessageToAll(-1,ad);
    SetTimer("ad",60000,false);
    var=1;
    }
    return 1;
    }
    forward ad();
    public ad()
    {
    var=0;
    return 1;
    }

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