ArmA3 Serversteuerung

  • ArmA3 Serversteuerung


    Ich stelle euch heute eine kleine Serversteuerung vor, die das Starten,
    Neustarten und Stoppen der Gameserver für eure Mitglieder ermöglicht.
    Das Grundmodell wurde von einem ehemaligem Clanmitglied erstellt
    und von mir vor ca. 3 Monaten generalüberholt.



    Zum einfügen dieses Systems benötigt ihr:

    • ein Windows-Betriebssystem (Oder ihr macht euch die Mühe und schreibt euch ein Linux-Script)
    • einen FTP-Server
    • etwas logisches Denken


    Das System besteht aus folgender Ordner-Struktur:


    Im Ordner 'original' befinden sich folgende Dateien auf dessen Funktion ich später noch genauer eingehen werde.


    Im Ordner 'programs' befinden sich folgende Dateien und Ordner:



    Im 'bats' Ordner befinden sich die .bat-Dateien die später die Startparameter etc. beinhalten:



    Und im 'StartStop' Ordner befindet sich folgendes:



    Fangen wir mit dem 'StartStop' Ordner an.
    Dort befinden sich verschiedene .txt-Dateien die eine bestimmte Funktion beschreiben. Möchten wir bspw. den
    Gameserver #1 neustarten, müssen wir einfach die '#1_neustarten.txt' löschen. Der Server wird nun neugestartet
    und die .txt wird in unserem Ordner neu erzeugt.
    Möchten wir den #2 Gameserver starten, müssen wir einfach die '#2_starten.txt' löschen.
    Nun wird der Server gestartet und es werden die Dateien '#2_stoppen.txt' und '#2_neustarten.txt' erzeugt (Beim 1. Server zu erkennen).
    Dieser Ordner wird später dann für die Mitglieder per FTP zu erreichen sein.
    Auf die Funktionsweise komme ich nachher zu sprechen.


    Nun geht es weiter zu dem 'original' Ordner.
    Wie oben zu sehen befinden sich dort die .txt-Dateien die wir eben auch schon im 'StartStop' Ordner gesehen haben.
    Und man kann es sich schon denken; Dort befinden sich alle benötigten .txt-Dateien die man für jeden Server
    benötigt und die dann einfach nur von A nach B kopiert werden.


    Nun kommen wir zum 'programs' Ordner und der Monitor.bat.
    Die Monitor.bat ist das Herzstück des ganzen, da sie für die .txt Verteilung und für die BAT-Ausführung sorgt.
    In folgendem Beispiel sieht man unsere Monitor.bat für drei Gameserver.
    (WICHTIG: Denkt daran die Pfade bei euch anzupassen)


    Weiter geht's im nächsten Post, da dieses Tutorial die maximale Zeichenanzahl sprengt..

  • Ich zeige euch nun wie ihr Server löschen und neu hinzufügen könnt.
    Zuerst kommt das Löschen des Servers 3 (Im Quellcode s03 genannt).
    Wir löschen zuerst alle Funktionen die mit ':s03' anfangen (Eine Funktion geht hier bis zu 'goto :eof').
    Nun gehen wir an den Anfang des Quellcodes und löschen 'SET s03=1' raus, da wir diese nun nicht mehr brauchen.
    Da die Variable 's03' nun nicht mehr existiert, müssen auch die jeweiligen darunter befindlichen Abfragen gelöscht werden.
    In unserem Fall wären dies:


    Wenn wir das getan haben, haben wir die Steuerung des Servers #3 aus unserer Monitor.bat entfernt.
    Nun können wir noch die .txt-/ und .bat-Dateien aus unseren Ordnern entfernen.


    Nun möchten wir einen neuen Server hinzufügen. Als Beispiel werde ich den Server #4 wählen.
    Ich werde erst alles einzeln erklären und danach einen kompletten Quellcode liefern.


    Zuerst legen wir die Variable s04 mit dem Befehl 'SET s04=1' an. Ich empfehle euch die Deklaration der Variablen
    immer am gleichen Ort (Oben bei 'SET s01=1' ) zu machen um Fehler zu vermeiden und um die Übersicht zu wahren.


    Nun folgen die Abfragen. Dazu nehmen wir uns einfach die Abfragen vom Server 2 und verändern diese wiefolgt:


    Damit wären die Abfragen und auch die Funktionsaufrufe erstellt.
    Nun müssen wir noch die Funktionen erstellen und anpassen.
    Auch hier nehmen wir uns wieder alle drei Funktionen von dem Server 2 und verändern diese wie folgt:


    Hierbei ist ein gewisses Maß an Konzentration gefragt um wirklich alle stellen die wichtig sind zu sehen.
    Wenn das erledigt ist haben wir unsere Monitor.bat auf unseren neuen Gameserver angepasst.
    Hier die neue Monitor.bat:


    Nun fehlen noch die BATS und die .txt-Dateien.


    Zuerst die .txt-Dateien.
    Dazu gehen wir in unseren 'original' Ordner und erstellen für den neuen Server folgende Dateien: '#4_starten', '#4_stoppen', '#4_neustarten'
    Die '#4_starten' kopieren wir direkt in unseren 'StartStop' Ordner, um das korrekte Anlaufen unserer Monitor.bat zu ermöglichen.


    Jetzt noch die .bat-Dateien.
    Diese sollten selbstverständlich genauso heißen wie wir sie in unserer Monitor.bat aufgerufen haben (Bei mir heißen sie bspw. s04-Starten.bat).
    In die Start-.bat kommen dann alle Startparameter für unseren Server sowie die verschiedenen Modstrings für Server und Clients.
    Als Beispiel mit HC (Public-Server ohne PW auf Port 2342 und ohne .rpts):

    Code: s04-Starten.bat
    1. start "ArmA" /D "C:\working\server\a3\s04" "C:\working\server\a3\s04\arma3s04.exe" -server -noLogs -enableHT -maxmem=XXXX -high "-malloc=tbbmalloc" -config=server.cfg -profiles=C:\ArmA3\A3Master -port=2342 -cfg=basic.cfg -loadMissionToMemory " -serverMod=@ASM;@extDB3;@extDB3_jgzga_server" " -mod=@cba_a3;@task_force_radio;@ace;"
    2. start "ArmA" /D "C:\working\server\a3\s04" "C:\working\server\a3\s04\arma3s04hc.exe" -client -noLogs -maxmem=XXXX -name=HC -enableHT -connect =127.0.0.1 -port=2342 " -mod=@cba_a3;@task_force_radio;@ace;
    3. exit


    Die .exe-Dateien sind für uns besonders wichtig weil sie in der .bat zum stoppen der Server benötigt werden.
    Hier ein Beispiel für eine s04-Stoppen.bat:

    Code: s04-Stoppen.bat
    1. taskkill /IM arma3s04.exe /F
    2. taskkill /IM arma3s04hc.exe /F
    3. exit


    Damit wird der #4 Server heruntergefahren.
    (Pro-Tipp: Lasst die beiden .bat-Dateien erst einmal leer bis ihr alles auf Funktion geprüft habt)


    Wenn wir das alles gemacht haben können wir unsere Monitor.bat starten.
    Wir sehen nun folgendes Bild:


    Da brauch man nicht viel erklären.. Wir bekommen eine kurze Meldung das der Monitor gestartet wurde und die .bat läuft.
    Sollte eine oder mehrere Fehlermeldungen auftauchen müsst ihr die .bat noch einmal schließen und euren Quellcode überprüfen,
    ob ihr nicht irgendwas bei Kopieren und verändern vergessen habt. Meistens hilft euch da die Fehlermeldung weiter.


    Sollte aber alles Fehlerfrei sein könnt ihr nun mal testweise eure Start-.txt-Datei in eurem 'StartStop' Ordner löschen.
    Nun sollte folgendes zu sehen sein:


    Weiter geht's im nächsten Post ;)

  • Diesen Informationen können wir entnehmen welche Funktion ausgeführt und zu welcher Zeit und was für Aktionen das ausgelöst hat.
    Hier wurde der Server 4 um 17:06 gestartet und es wurden 2 Dateien kopiert (die Neustarten-/ und Stoppen.txt).
    Die beiden anderen Funktionen könnt ihr ja selber ausprobieren.


    Wenn alles geklappt hat, habt ihr euren neuen Server erfolgreich in das Startsystem integriert.


    Damit eure Mitglieder das jetzt auch nutzen können, müsst ihr den 'StartStop' Ordner auf eurem FTP-Server
    freigeben (Lese-/ und Löschrechte sind wichtig). Am besten legt ihr dafür einen Separaten Benutzer mit Passwort an den eure Mitglieder nutzen können.
    Jetzt noch die Benutzerdaten im Internen Forum verteilen und die Monitor.bat laufen lassen und schon können eure Mitglieder die Server kontrollieren.


    Ich hoffe ich konnte ein paar Leuten mit diesem System und der dazu beiliegenden Anleitung helfen.
    Bei Fragen an das System könnt ihr diese gerne unten reinschreiben.


    Noch ein paar Abschließende Worte:
    Wenn mir jemand ankommt mit „Das hätte man aber so und so machen können/sollen“ und dabei meinen kompletten
    Code auseinander nimmt, oder auch „Wie scheiße ist das denn geschrieben..“ werde ich das natürlich Ignorieren und löschen lassen.
    Konstruktive Kritik oder Verbesserungsvorschläge gehen natürlich immer ;)


    Mit freundlichen Grüßen,
    Browser