Moin zusammen
Da ich keinen direkten Beitrag zur Start und stop.bat gefunden habe, habe ich mich mal ran gesetzt um eine Erklärung dazu zu schreiben Die verwendeten variablen sind anpassbar und die .bat-Datei vielseitig einsetzbar.
Warum ein Tutorial ?
Ich kannte mich bis vor kurzem nicht damit aus und musste mich erst einmal damit beschäftigen, was für den leihen im Start seiner Karriere sicherlich nicht so einfach ist. Soviel zum Vorwort
Fangen wir an.
Wie nenne ich meine Datei?
Zur Übersicht habe ich meine Datei "Spiel"start.bat (armastart.bat) genannt. Für CS:GO würde ich sie "csgostart.bat" nennen. Das kann man aber gestalten wie man möchte Also gehst du wie folgt vor:
1. Text Dokument auf dem Desktop anlegen
2. Dieses per rechtsklick anwählen Un umbenennen (bei mir armastart.bat)
3. Datei rechtsklicken und bearbeiten wählen
Jetzt hat sich bei dir ein Textfenster geöffnet. Sieht ein wenig leer darin aus. Das musst du ändern ! Aber wie?
Wie füllst du deine Start Datei?
Eine Start.bat muss die Server Prozess-Id lesen und Speichern können. Das dient zum späteren beenden des Servers und ist wichtig für die my_stop.bat Hier die Zeilen dazu:
SET mypath=%~dp0
for /f "tokens=2 delims==; " %%a in (' wmic process call create "%mypath:~0,-1%\armalll\arma3server_x64.exe -port=%1" ^| find "ProcessId" ') do set PID=%%a
echo %PID% > pid.txt
was bedeutet das ??...
Wird hier wohl deine erste Frage sein. Ich habs am Anfang auch nicht verstanden, ist aber relativ easy Zur Erklärung
Wir fangen oben an:
"Set mypath=" ist eine leere variable die ich mit einem Wert fülle.
"%~dp0" ist dieser Wert und gibt mir den Ordner aus , indem sich diese .bat befindet.
Ab hier gibt's ne kleine Pause für dich ..
..
..
..
Weiter geht's
Den Rest zerpflücke ich jetzt nicht aber fasse in kurz zusammen. Er startet den Server, liest die tasklist (Prozessliste) aus und schnappt sich den neusten Prozess mit dem passenden imagename (Anwendungsname).... puhhh, ganz schön viel theorie...
Zuletzt schnappt er sich die Prozess-ID und speichert sie in selben Ordner wie die .bat Datei in die Datei pid.txt Fertig ist das startscript
Aber Moment ... Manche spiele benötigen doch Startparameter. ...
Wie Startparameter angeben ?
Wenn du genau hinschaust, siehst du oben hinter meiner arma3server_x64.exe ein "-port=%1". Was -port bedeutet ist wahrscheinlich klar .. Aber das %1 ?
%1 ist ein parameter, den ich an die armastart.bat übergeben habe.
Wie habe ich das gemacht ?
GAnz einfach. Bei jedem Gameserver kann man den Starbefehl angeben. Dieser sieht bei mir so aus:
armastart.bat gsport
Und das wars .. Die Parameter können natürlich erweitert werden. Würde ich jetzt noch die Spieler mit angeben wollen sieht mein Befehl wie folgt aus :
armastart.bat gsport gsplayer
In meiner armastart.bat könnte ich dann %1 für den Port und %2 für die Spieler verwenden. Also eigentlich ganz einfach
Wir stoppst du jetzt den Server?
Auch total einfach diesmal heißt die Datei aber "my_stop.bat". Diese können wir nicht umbenennen. Sie liegt im selben Verzeichnis wie die armastart.bat, muss allerdings nicht deklariert werden, da sie in TekBase so hinterlegt ist. Ihr Inhalt könnte wie folgt aussehen :
@echo off
for /f %%i in (pid.txt) do (
set PID=%%i
)
echo %PID%
taskkill /f /pid %PID%
del pid.txt
Hier wird die pid.txt mit der gespeicherten Prozess-ID ausgelesen und der Prozess beendet, sowie die pid.txt gelöscht.
Das wars eigentlich soweit
Ich hoffe ich konnte dir helfen.
MfG Crossi