[Frage] Server Restart => Automatisch ein command ausführen lassen

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 mal eine Frage.
    Ich möchte alle Dateien speichern, wen ich /restart mache.
    Während der Restart ist, sollen die Spieldateien gespeichert werden und eine Nachricht an alle Spieler kommen. (Nachricht: Alle Spieldaten wurden gespeichert, Server startet in Kürze neu.)
    Also ich habe mir ein /saveall command gemacht, wo alle Spieldateien noch mal gespeichert werden.
    Nun soll es während denn Restart der command ausgeführt werden von automatisch.


    Für die, die es nicht verstanden haben hier ein Ablauf.


    Admin: /restart
    ======== Server_Restart ========
    Server Startet in 2 minuten neu
    ==============================
    (Minute später)
    ======== Server_Restart ========
    Server Startet in 1 minuten neu
    ==============================
    Command wird automatisch vom/restart ausgeführt: /saveall
    Nachricht an alle Spieler: Alle Spieldateien wurden gespeichert, Server startet in Kürze neu.
    (Server Neustart ==> neu einloggen)


    Hier ein Stück Zeile vom Command:
    Natürlich nur, ob es möglich ist.


    forward Restart3();
    public Restart3()
    {
    SendClientMessageToAll(COLOR_RED,"l_______________{SERVERNEUSTART}_______________l");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED," Der Server wird in 2 Minuten neu gestartet.");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"l_______________{SERVERNEUSTART}_______________l");
    SetTimer("Restart4",60000,0);
    return 1;
    }
    forward Restart4();
    public Restart4()
    {
    SendClientMessageToAll(COLOR_RED,"_______________{SERVERNEUSTART}_______________");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED," Der Server wird in 2 Minuten neu gestartet.");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"_______________{SERVERNEUSTART}_______________");
    SetTimer("Restart5",60000,0);
    return 1;
    }
    forward Restart5();
    public Restart5()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    Kick(i);
    SetTimer("Restart6",3000,0);
    }
    }
    return 1;
    }
    forward Restart6();
    public Restart6()
    {
    SendRconCommand("gmx");
    }
    Wenn nicht möglich ist bitte auch bescheid geben :)


    Mit freundlichen Grüßen
    opdimus

  • Ich möchte wärend der Server neustartet das mitten drin der command /saveall gemacht wird.. beichspiel im script.
    Fehler bitte ignorieren.
    Vor "forward Restart7();" ein drüber beachten.

    forward Restart3();
    public Restart3()
    {
    SendClientMessageToAll(COLOR_RED,"l_______________{SERVERNEUSTART}_______________l");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED," Der Server wird in 2 Minuten neu gestartet.");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"l_______________{SERVERNEUSTART}_______________l");
    SetTimer("Restart4",60000,0);
    return 1;
    }
    forward Restart4();
    public Restart4()
    {
    SendClientMessageToAll(COLOR_RED,"_______________{SERVERNEUSTART}_______________");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED," Der Server wird in 1 Minuten neu gestartet.");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"_______________{SERVERNEUSTART}_______________");
    SetTimer("Restart5",60000,0);
    return 1;
    }
    forward Restart5();
    public Restart5()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    Kick(i);
    SetTimer("Restart6",3000,0);
    }
    forward Restart6();
    public Restart6()
    }
    automatisch_gib_ein ("/saveall");
    SendClientMessageToAll(COLOR_RED,"Alle Spieldateien gespeichert, server startet in kürze neu.");
    SetTimer("Restart7",3000,0);
    return 1;
    }
    forward Restart7();
    public Restart7()
    {
    SendRconCommand("gmx");
    }

  • Warum machst du das nicht einfach so? meiner Meinung nach viel Ressourcen schonender.
    if(strcmp(cmd, "/gmx", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pAdmin] >= 1338)
    {
    SaveStuff();
    GameModeExit();
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gPlayerLogged[i])
    {
    PlayerUpdate(i);
    }
    }
    SendClientMessage(playerid, COLOR_GREEN, "Alle Daten wurden gespeichert.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Das darfst du nicht tun !");
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht befugt dies zu tun!");
    }
    }
    return 1;
    }

  • Das ist ressourcenschonender von dir.
    Nur waren einige dabei dann am Meckern, weil der Restart dreckt kommt ohne eine Vormeldung.
    Wen ich es nicht änder, wollen die alle gehn :(
    "man versucht immer das Beste für alle, jedoch wird man so hinterm Rücken vera*******"...

  • Du meinst also so:



    if(strcmp(cmd, "/gmx", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pAdmin] >= 1338)
    {
    SaveStuff();
    GameModeExit();
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && gPlayerLogged[i])
    {
    PlayerUpdate(i);
    }
    }
    SendClientMessage(playerid, COLOR_GREEN, "Server startet jetzt neu.");
    SendClientMessage(playerid, COLOR_GREEN, "Alle Daten wurden gespeichert.");
    return 1;
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Das darfst du nicht tun !");
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht befugt dies zu tun!");
    }
    }
    return 1;
    }

  • Ok werde dann heut mittag wieder vorbei schaun.
    Wen ich weiß wo ich da den timer machen muss werd ich das einbauen.
    Sollange habe ich das jetzt drin und funktioniert.
    Speichern tut es ebenfalls.
    Danke für den Tipp mit: PlayerUpdate(i);


    Das nutze ich bis heut mittag:

    if(strcmp(cmdtext,"/gmx", true) == 0)
    {
    if(PlayerInfo[playerid][pAdmin] >= 1337)
    {
    SendClientMessageToAll(COLOR_RED,"_______________{SERVERNEUSTART}_______________");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED," Vorbereitung für Serverneustart.");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"_______________{SERVERNEUSTART}_______________");
    SetTimer("Gmx1",10,0);
    return 1;
    }
    else
    {
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Das darfst du nicht tun !");
    SendClientMessage(playerid, COLOR_GRAD1, "Du bist nicht befugt dies zu tun!");
    }
    }
    return 1;
    }


    forward Restart1();
    public Restart1()
    {
    SendClientMessageToAll(COLOR_RED,"_______________{SERVERNEUSTART}_______________");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED," Der Server wird in 1 Minute neugestartet.");
    SendClientMessageToAll(COLOR_RED,"");
    SendClientMessageToAll(COLOR_RED,"_______________{SERVERNEUSTART}_______________");
    SetTimer("Restart2",60000,0);
    return 1;
    }
    forward Restart2();
    public Restart2()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    PlayerUpdate(i);
    SendClientMessageToAll(COLOR_RED,"Alle Spieldateien wurden gespeichert, server startet in Kürze neu.");
    Kick(i);
    SendClientMessageToAll(COLOR_RED,"Bitte ein wenig gedult.");
    SetTimer("Restart3",3000,0);
    }
    }
    return 1;
    }
    forward Restart3();
    public Restart3()
    {
    SendRconCommand("gmx");
    }

    MFG
    opdimus

    Einmal editiert, zuletzt von Paddy_Paddy () aus folgendem Grund: PWN Quellencode hinzugefügt. PWN Code hinzugefügt.