Restart Befehl

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,
    Ich weiß nicht wie ich ein Restart Befehl machen soll.
    /restart (Dann ein 50 Sekunden Timer, Ein GameTextForAll mit dem Timer, und die Spieler sollen nach und nach Gekickt werden)
    Wie mache ich das?


    MfG.


    /restart -> SendRconComand("gmx");
    Verstehe ich, aber GamTextForAll mit dem Timer nicht.

  • Du machst ganz einfach einen Befehl wo der Timer ausgeführt wird:


    ocmd:restart(playerid)
    {
    SetTimer("Restart",50000,0);
    return 1;
    }



    public Restart()
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    SendClientMessageToall(WEIS,"Der Server restartet nun");
    Kick(i);
    SendRconComand("gmx");
    }
    return 1;
    }

  • Dann kommt kein GameText



    Ne, dann kommt kein Gametext..


    MfG.


  • Aus SendClientMessageToAll lieber nur SendClientMessage machen ;)


    Nope, Immer noch kein GamText...


    MfG.


  • Dann kommt kein GameText


    Zwar nicht die schönste Variante, aber probiers mal so:


    Oben im Script:
    forward RestartServer();
    forward RestartNow();


    In deinem /restart Befehl:
    SetTimer("RestartServer", 50000, false);


    Restart Public:
    public RestartServer()
    {
    GameTextForAll("~r~Server startet neu!", 5000, 3);
    SetTimer("RestartNow", 3000, false);
    }


    public RestartNow()
    {
    SendRconComand("gmx");
    }

  • Aus SendClientMessageToAll lieber nur SendClientMessage machen ;)

    Warum?


    Jeder soll doch eh die gleiche message bekommen, warum dann SendClientmessage verwenden .. X(



    @Thread ersteller


    Hab ich dich jetzt richtig verstanden?


    Du möchtest also das eine art Countdown erstellt, also der von 50sek runterzählt und wenn er bei 1 Angekommen ist soll der Server restarten ?



    Grüße

  • Meintest du es so?
    new restart_timer = 0;


    ocmd:restart(playerid,params[])
    {
    if(restart_timer > 0)return SendClientMessage(playerid,0xADADADFF,"Der Server startet schon neu!");
    restart_timer = 60;
    SetTimer("RESTART",1000,false);
    GameTextForAll("60 Sekunden",1000,0);
    return 1;
    }


    forward RESTART();
    public RESTART()
    {
    new str[20];
    if(restart_timer > 0)
    {
    restart_timer -= 1;
    format(str,20,"%i Sekunden",restart_timer);
    GameTextForAll(str,1000,0);
    SetTimer("RESTART",1000,false);
    return 1;
    }
    if(restart_timer <= 0)
    {
    for(new i; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    Kick(i);
    }
    print("[SERVER] Der Server startet neu.");
    SendRconCommand("gmx");
    return 1;
    }
    return 1;
    }


    //SCRIPT BEARBEITET + text hinzugefügt

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


    Super, das Klappt.
    Nur leider wird der GameText nur alle 6-7 Sekunden Aktualliesiert.
    Dachte es geht so, das er jede Sekunde Aktualliesiert wird.


    MfG.

  • @Thread Ersteller.


    Ich habe mir mal die Zeit genommen es dir schön in einem Textdraw mit Box dazustellen.


    Also hier der Code:


    forward Restart();
    new RestartZeit;
    new Text:ServerRestart;


    Das unter OnGameModeInit packen:


    ServerRestart = TextDrawCreate(15.999907, 184.177795, "Server restart in 0 Sekunden");
    TextDrawLetterSize(ServerRestart, 0.233333, 0.840888);
    TextDrawTextSize(ServerRestart, 140.333282, -2.488888);
    TextDrawAlignment(ServerRestart, 1);
    TextDrawColor(ServerRestart, -1);
    TextDrawUseBox(ServerRestart, true);
    TextDrawBoxColor(ServerRestart, 255);
    TextDrawSetShadow(ServerRestart, 0);
    TextDrawSetOutline(ServerRestart, 1);
    TextDrawBackgroundColor(ServerRestart, 51);
    TextDrawFont(ServerRestart, 1);
    TextDrawSetProportional(ServerRestart, 1);


    Der Befehl:


    ocmd:restart(playerid)
    {
    RestartZeit += 50; // Wann der Server den Restart bekommen soll, legt man in Sekunden fest.
    SetTimer("Restart",1000,1);
    return 1;
    }


    Der public wo der Restart ablaufen wird:


    public Restart()
    {
    new RestartSek[12];
    RestartZeit -= 1;
    format(RestartSek, sizeof(RestartSek), "Server restart in %d Sekunden", RestartZeit);
    TextDrawSetString(ServerRestart , RestartSek);
    TextDrawShowForAll(ServerRestart);
    if(RestartZeit == 1)
    {
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    Kick(i);
    SendRconCommand("gmx");
    }
    }
    return 1;
    }



    Hoffe ich konnte dir helfen ^^



    Grüße

    4 Mal editiert, zuletzt von Equ ()