Da es immer wieder Beiträge gibt, wo User mit Windows haben, anbei mal die wichtigsten Sachen.
Wie setze ich in einer Batch Parameter
Code
@echo off
setlocal enabledelayedexpansion
SET var=%~dp0
SET var1=%1%
SET var2=%2%
SET var3=%3%
SET var4=%4%
SET var5=%5%
SET var6=%6%
SET var7=%7%
SET var8=%8%
Alles anzeigen
somit kann ich den Gameserver mit z.b.
start.bat gsip gsport gsplayer , %var1% ist dann die IP, %var2% der Port, %var3% die Playerzahl usw.
Wie lese ich die Pid eines Gameserverprozesses aus:
Beispiel für Ark:
Code
SET line=%var%
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line:\=\\
ENDLOCAL
set vara=!line:\=\\!
for /f "usebackq tokens=2 delims==" %%a in (`wmic process where ^(ExecutablePath^="%vara%ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe"^) get processid /value`) do (
set PID=%%a
)
Wie stoppe ich den Gameserver anhand der oben gewonnenen PID:
Es gibt 3 Möglichkeiten:
oder
oder
Code
SET line=%var%
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line:\=\\
ENDLOCAL
set vara=!line:\=\\!
WMIC PROCESS WHERE ExecutablePath="%vara%ShooterGame\\Binaries\\Win64\\ShooterGameServer.exe" delete
Da Spiele wie Ark oder Rust beim beenden noch Daten in die Map schreiben müssen sollte erst die Methode 1 gewählt werden. Danach macht man mit
5 Sekunden Pause und schiebt um sicher zu gehen noch eine der letzten beiden Möglichkeiten hinterher.
Start eines Gameservers:
Code
set /A var9=%var2% + 1 // Queryport berechnen
set /A var10=%var2% + 5 //Rconport berechnen
cd %var%
start /REALTIME ShooterGameServer.exe "%var%ShooterGame\ShooterGame.uproject" "TheCenter?MULTIHOME=%var1%?Port=%var2%?QueryPort=%var9%?RCONPort=%var10%?MaxPlayers=%var3%?bRawSockets?listen?" -nosteamclient -servergamelog -game -server -log