|
@@ -3,6 +3,130 @@ rem This is and auto-restart script for the rAthena Ragnarok Online Server Emula
|
|
|
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 modified by lighta
|
|
|
+
|
|
|
+set SOURCE_DIR=%~dp0
|
|
|
+cd %SOURCE_DIR%
|
|
|
+
|
|
|
+if ["%~1"]==[""] (
|
|
|
+ REM this is for backward compatibility
|
|
|
+ set "target=watch"
|
|
|
+) else set target=%~1
|
|
|
+echo "target=%target%"
|
|
|
+
|
|
|
+REM to avoid any localization issue
|
|
|
+set "login_running=false"
|
|
|
+set "char_running=false"
|
|
|
+set "map_running=false"
|
|
|
+
|
|
|
+
|
|
|
+if "%target%" == "status" (
|
|
|
+ call :getStatus
|
|
|
+) else if "%target%" == "watch" (
|
|
|
+ call :Watch
|
|
|
+) else if "%target%" == "stop" (
|
|
|
+ call :Stop
|
|
|
+) else if "%target%" == "stop" (
|
|
|
+ call :Stop
|
|
|
+) else if "%target%" == "start" (
|
|
|
+ call :Start
|
|
|
+)
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+
|
|
|
+:Stop
|
|
|
+echo "Stoping all serv"
|
|
|
+call :stopLogin
|
|
|
+call :stopChar
|
|
|
+call :stopMap
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:Watch
|
|
|
+REM this is to align terminology with athena-start, (start with restart mode)
|
|
|
+echo "Starting all serv"
|
|
|
+set "resart_mode=on"
|
|
|
+call :startLogin
|
|
|
+call :startChar
|
|
|
+call :startMap
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:Start
|
|
|
+echo "Starting all serv"
|
|
|
+set "resart_mode=off"
|
|
|
+call :startLogin
|
|
|
+call :startChar
|
|
|
+call :startMap
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:getStatus
|
|
|
+echo "Getting status of all serv"
|
|
|
+call :getLoginStatus
|
|
|
+call :getCharStatus
|
|
|
+call :getMapStatus
|
|
|
+
|
|
|
+if "%login_running%" == "false" ( echo "login_serv is not running"
|
|
|
+) else echo "login_serv is running pid=%LoginServPID%"
|
|
|
+if "%char_running%" == "false" ( echo "char_serv is not running"
|
|
|
+) else echo "char_serv is running pid=%CharServPID%"
|
|
|
+if "%map_running%" == "false" ( echo "map_serv is not running"
|
|
|
+) else echo "map_serv is running pid=%MapServPID%"
|
|
|
+
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+REM ====
|
|
|
+REM sub targets (a target per serv)
|
|
|
+REM ====
|
|
|
+
|
|
|
+REM stop sub targets
|
|
|
+:stopLogin
|
|
|
+call :getLoginStatus
|
|
|
+if "%login_running%" == "true" Taskkill /PID %LoginServPID% /F
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:stopChar
|
|
|
+call :getCharStatus
|
|
|
+if "%char_running%" == "true" Taskkill /PID %CharServPID% /F
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:stopMap
|
|
|
+call :getMapStatus
|
|
|
+if "%map_running%" == "true" Taskkill /PID %MapServPID% /F
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+REM start sub targets
|
|
|
+:startLogin
|
|
|
+call :getLoginStatus
|
|
|
+if "%login_running%" == "false" ( start cmd /k logserv.bat %resart_mode%
|
|
|
+) else echo "Login serv is already running pid=%LoginServPID%"
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:startChar
|
|
|
+call :getCharStatus
|
|
|
+if "%char_running%" == "false" ( start cmd /k charserv.bat %resart_mode%
|
|
|
+) else echo "Char serv is already running, pid=%CharServPID%"
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:startMap
|
|
|
+call :getMapStatus
|
|
|
+if "%map_running%" == "false" ( start cmd /k mapserv.bat %resart_mode%
|
|
|
+) else echo "Map serv is already running, pid=%MapServPID%"
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+REM status sub targets
|
|
|
+
|
|
|
+:getLoginStatus
|
|
|
+for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq login-server.exe"') do set LoginServPID=%%b
|
|
|
+echo(%LoginServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "login_running=true" || set "login_running=false"
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:getCharStatus
|
|
|
+for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq char-server.exe"') do set CharServPID=%%b
|
|
|
+echo(%CharServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "char_running=true" || set "char_running=false"
|
|
|
+goto :EOF
|
|
|
+
|
|
|
+:getMapStatus
|
|
|
+for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq map-server.exe"') do set MapServPID=%%b
|
|
|
+echo(%MapServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "map_running=true" || set "map_running=false"
|
|
|
+goto :EOF
|