/gmx mit countdown

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, liebe Scripter
    Kann mir vll jemand den /gmx Command ändern?
    Ich habe mir das so Forgestellt..Wenn ich /gmx eingebe sollte unter der Geldanzeige ein Countdown gestartet werden der 60 sec. läuft und wenn die
    60 sec. um sind soll der Gmx Kommen
    Kann mir jemand so was scripten?


  • // UNTER DIE INCLUDES:
    new count = 60;
    forward GmxCount(playerid);


    // OnPlayerCommandText:
    if(strcmp(cmdtext,"/gmx",true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 1) // bei GF nur, weiss ja nicht was du hast.
    {
    new gmxtimer = SetTimer("GmxCount",100,1);
    SendClientMessage(playerid,0xFFFFFFFF,"Gmx Countdown wurde gestartet.");
    }
    return 1;
    }


    // Ausserhalb jeden Callbacks[am besten ganz unten]:
    public GmxCount(playerid)
    {
    if(count > 0)
    {
    new str[128]; format(str,sizeof str,"Gamemode Restart in %d Sekunden",count);
    GameTextForPlayer(playerid,str,1000,1);
    count--;
    }
    else
    {
    new str[128]; format(str,sizeof str,"Gamemode Restart wird durchgeführt.");
    GameTextForPlayer(playerid,str,1000,1);
    SendRconCommand("gmx");
    }
    }

    4 Mal editiert, zuletzt von Monte ()

  • Count wir in deinem Code niemals kleiner als 0.
    Zeile 16,
    new count = 60;
    ist falsch.


    //Edit:
    Dazu kommt noch das pro Spieler der connectet ist "count--" gemacht wird.Das ist ja nicht der Sinn.Du brauchst bei der Funktion auch keinen for(new i;i<MAX_PLAYERS,i++) { } loop.

  • Ich frage auch ab ob es
    1.größer als 0 ist.
    und
    2. setze ich es jede Sekunde wo der Timer aufgerufen wird ein - ;)


    P.S: Kommst du nie in ICQ online :?


    EDIT: Mit der Schleife haste Recht, war irgendwie falsch xD

  • Blah so würd ich es machen.
    forward GmxCount();


    new count;
    new gmxtimer;


    if(strcmp(cmdtext,"/gmx",true) == 0) {
    if(PlayerInfo[playerid][pAdmin] >= 1) // bei GF nur, weiss ja nicht was du hast.
    {
    gmxtimer=SetTimer("GmxCount",1000,1);
    count=60;
    SendClientMessage(playerid,0xFFFFFFFF,"Gmx Countdown wurde gestartet.");
    }
    return 1;
    }
    public GmxCount()
    {
    if(count > 0)
    {
    new
    str[128];
    format(str,sizeof(str),"Gamemode Restart in %d Sekunden",count);
    GameTextForAll(str,1000,1);
    count--;
    }
    else
    {
    KillTimer(gmxtimer); // Zur sicherheit ...
    //format(str,sizeof(str),"Gamemode Restart wird durchgeführt.");
    GameTextForAll("Gamemode Restart wird durchgeführt.",1000,1);
    SendRconCommand("gmx");
    }
    }

    Einmal editiert, zuletzt von Goldkiller ()

  • Besserwisser :D
    Naja, ich empfehle dir das von Goldkiller.
    Der Befehl kommt in OnPlayerCommandText.
    Die New und Forward Dingern zu den anderen oder halt unter die Includes.
    Die TimerFunktion am besten gaanz unten.


    Eine Verbesserung:
    Zeile 22 und Zeile 29: Woher nimmt er playerid, das musste noch als Parameter der Funktion beigeben.


    //Goldkiller: I C :0
    //Monti|Spearrow: Du wagst es in meinem Post rumzupfuschen, ich verstehe das nicht, was du da schreibst.

    //Goldkiller: I see ... das musste noch als Parameter der Funktion beigeben. <- Zwar nicht ganz richtig aber kay...
    //Monti|Spearrow: I see too, GameTextForAll :P Ganz vergessen ^^

    4 Mal editiert, zuletzt von Monte ()

  • SetTimerEx wird hier nicht gebraucht^^
    Und der zählt von 30 bis 22 runter, zeigt auch alles an, du siehst es nur nicht, weil der GameText umd die 5 sekunden da stehen bleibt, egal, wie viel Zeit man dort eingibt, das gleiche Problem hatte ich auch beim Tacho^^
    Da müsste man entweder ein TextDraw erstellen oder Message senden
    Zum Textdraw:
    //ganz nach oben:
    new Text:bla;
    //public GmxCount()
    statt GameTextForAll machst du
    TextDrawHideForAll(bla);
    bla=TextDrawCreate(x,y,str);//bei x und y die x und y Kooridnaten vom Bildschirm eintragen (findest du mit z.B. Paint heraus)
    TextDrawShowForAll(bla);

  • Zitat

    Und der zählt von 30 bis 22 runter, zeigt auch alles an, du siehst es nur nicht, weil der GameText umd die 5 sekunden da stehen bleibt, egal, wie viel Zeit man dort eingibt, das gleiche Problem hatte ich auch beim Tacho^^


    Dann nimmt man ebend einen anderen Gametext-Style,


    forward GmxCount();


    new count;
    new gmxtimer;


    if(strcmp(cmdtext,"/gmx",true) == 0) {
    if(PlayerInfo[playerid][pAdmin] >= 1) // bei GF nur, weiss ja nicht was du hast.
    {
    gmxtimer=SetTimer("GmxCount",1000,1);
    count=60;
    SendClientMessage(playerid,0xFFFFFFFF,"Gmx Countdown wurde gestartet.");
    }
    return 1;
    }
    public GmxCount()
    {
    if(count > 0)
    {
    new
    str[128];
    format(str,sizeof(str),"Gamemode Restart in %d Sekunden",count);
    GameTextForAll(str,1050,4);
    count--;
    }
    else
    {
    KillTimer(gmxtimer); // Zur sicherheit ...
    //format(str,sizeof(str),"Gamemode Restart wird durchgeführt.");
    GameTextForAll("Gamemode Restart wird durchgeführt.",1050,4);
    SendRconCommand("gmx");
    }
    }