diff options
Diffstat (limited to 'runserver.bat')
-rw-r--r-- | runserver.bat | 81 |
1 files changed, 74 insertions, 7 deletions
diff --git a/runserver.bat b/runserver.bat index 8432a7f84..4fc66edc9 100644 --- a/runserver.bat +++ b/runserver.bat @@ -1,8 +1,75 @@ @echo off
-rem This is and auto-restart script for the eAthena Ragnarok Online Server Emulator.
-rem It will also keep the map server OPEN after it crashes to that errors may be
-rem more easily identified
-rem Writen by Jbain
-start cmd /k logserv.bat
-start cmd /k charserv.bat
-start cmd /k mapserv.bat
+
+rem ----- Configuration -----
+ rem Defines the server type (txt or sql).
+ set SERVER_TYPE=txt
+ rem Defines how long to wait before restarting (in seconds).
+ set SLEEP_TIME=15
+ rem Defines whether to run all servers in one window (yes or no).
+ set SINGLE_WINDOW=no
+rem ----- ------------- -----
+
+:L_Init
+ set this=%0
+ if %SERVER_TYPE% == txt set suffix=
+ if %SERVER_TYPE% == sql set suffix=_sql
+ if %SINGLE_WINDOW% == yes set wndswitch=/B
+
+:L_Main
+ set command=%1
+ if "%command%" == "" goto L_DefaultAction
+
+ if %command% == exec goto L_ExecServerExe
+ if %command% == start goto L_StartServerExe
+ if %command% == stop goto L_StopServerExe
+ if %command% == restart echo "TODO"
+ goto L_EOF
+
+:L_DefaultAction
+:L_StartServer
+ call %this% start login-server%suffix%.exe
+ call %this% start char-server%suffix%.exe
+ call %this% start map-server%suffix%.exe
+ goto L_EOF
+
+:L_StopServer
+ call %this% stop login-server%suffix%.exe
+ call %this% stop char-server%suffix%.exe
+ call %this% stop map-server%suffix%.exe
+ goto L_EOF
+
+:L_StartServerExe
+ set filename=%2
+ if "%filename%" == "" goto L_StartServer
+ if exist %filename% goto L_HaveExe
+ echo Cannot start '%filename%' because the file is missing!
+ goto L_EOF
+
+ :L_HaveExe
+ echo Starting %filename%...
+ start "%filename%" %wndswitch% %this% exec %filename%
+ goto L_EOF
+
+:L_StopServerExe
+ set filename=%2
+ if "%filename%" == "" goto L_StopServer
+ if exist %windir%\system32\taskkill.exe goto L_HaveTaskKill
+ echo The 'stop' command is not available on your system.
+ exit
+
+ :L_HaveTaskKill
+ rem CAUTION! This will kill all processes called %filename%.
+ echo Stopping '%filename%'...
+ taskkill /F /FI "WINDOWTITLE eq %filename% - %this% exec %filename%"
+ taskkill /F /IM "%filename%"
+ goto L_EOF
+
+:L_ExecServerExe
+ %filename%
+ echo .
+ echo .
+ echo Server exited, restarting in %SLEEP_TIME% seconds! Press CTRL+C to abort!
+ ping.exe -n %SLEEP_TIME% 127.0.0.1 > nul
+ goto L_ExecServerExe
+
+:L_EOF
|