|
|
|
@echo off
|
|
|
|
rem This is and auto-restart script for the rAthena 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
|
|
|
|
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 "web_running=false"
|
|
|
|
set "map_running=false"
|
|
|
|
set "brokk_running=false"
|
|
|
|
set "sindri_running=false"
|
|
|
|
|
|
|
|
|
|
|
|
if "%target%" == "status" (
|
|
|
|
call :getStatus
|
|
|
|
) else if "%target%" == "watch" (
|
|
|
|
call :Watch
|
|
|
|
) else if "%target%" == "stop" (
|
|
|
|
call :Stop
|
|
|
|
) else if "%target%" == "start" (
|
|
|
|
call :Start
|
|
|
|
)
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
|
|
|
|
:Stop
|
|
|
|
echo "Stoping all serv"
|
|
|
|
call :stopLogin
|
|
|
|
call :stopChar
|
|
|
|
call :stopWeb
|
|
|
|
call :stopMap
|
|
|
|
call :stopBrokk
|
|
|
|
call :stopSindri
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:Watch
|
|
|
|
REM this is to align terminology with athena-start, (start with restart mode)
|
|
|
|
echo "Starting all serv"
|
|
|
|
set "restart_mode=on"
|
|
|
|
call :startLogin
|
|
|
|
call :startChar
|
|
|
|
call :startWeb
|
|
|
|
call :startMap
|
|
|
|
call :startBrokk
|
|
|
|
call :startSindri
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:Start
|
|
|
|
echo "Starting all serv"
|
|
|
|
set "restart_mode=off"
|
|
|
|
call :startLogin
|
|
|
|
call :startChar
|
|
|
|
call :startWeb
|
|
|
|
call :startMap
|
|
|
|
call :startBrokk
|
|
|
|
call :startSindri
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:getStatus
|
|
|
|
echo "Getting status of all serv"
|
|
|
|
call :getLoginStatus
|
|
|
|
call :getCharStatus
|
|
|
|
call :getWebStatus
|
|
|
|
call :getMapStatus
|
|
|
|
call :getBrokkStatus
|
|
|
|
call :getSindriStatus
|
|
|
|
|
|
|
|
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 "%web_running%" == "false" ( echo "web_serv is not running"
|
|
|
|
) else echo "web_serv is running pid=%WebServPID%"
|
|
|
|
if "%map_running%" == "false" ( echo "map_serv is not running"
|
|
|
|
) else echo "map_serv is running pid=%MapServPID%"
|
|
|
|
if "%brokk_running%" == "false" ( echo "brokk_serv is not running"
|
|
|
|
) else echo "brokk_serv is running pid=%BrokkServPID%"
|
|
|
|
if "%sindri_running%" == "false" ( echo "sindri_serv is not running"
|
|
|
|
) else echo "sindri_serv is running pid=%SindriServPID%"
|
|
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
:stopWeb
|
|
|
|
call :getWebStatus
|
|
|
|
if "%web_running%" == "true" Taskkill /PID %WebServPID% /F
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:stopMap
|
|
|
|
call :getMapStatus
|
|
|
|
if "%map_running%" == "true" Taskkill /PID %MapServPID% /F
|
|
|
|
goto :EOF
|
|
|
|
:stopBrokk
|
|
|
|
call :getBrokkStatus
|
|
|
|
if "%brokk_running%" == "true" Taskkill /PID %BrokkServPID% /F
|
|
|
|
goto :EOF
|
|
|
|
:stopSindri
|
|
|
|
call :getSindriStatus
|
|
|
|
if "%sindri_running%" == "true" Taskkill /PID %SindriServPID% /F
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
|
|
|
|
REM start sub targets
|
|
|
|
:startLogin
|
|
|
|
call :getLoginStatus
|
|
|
|
if "%login_running%" == "false" ( start cmd /k logserv.bat %restart_mode%
|
|
|
|
) else echo "Login serv is already running pid=%LoginServPID%"
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:startChar
|
|
|
|
call :getCharStatus
|
|
|
|
if "%char_running%" == "false" ( start cmd /k charserv.bat %restart_mode%
|
|
|
|
) else echo "Char serv is already running, pid=%CharServPID%"
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:startWeb
|
|
|
|
call :getWebStatus
|
|
|
|
if "%web_running%" == "false" ( start cmd /k webserv.bat %restart_mode%
|
|
|
|
) else echo "Web serv is already running, pid=%WebServPID%"
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:startMap
|
|
|
|
call :getMapStatus
|
|
|
|
if "%map_running%" == "false" ( start cmd /k mapserv.bat %restart_mode%
|
|
|
|
) else echo "Map serv is already running, pid=%MapServPID%"
|
|
|
|
goto :EOF
|
|
|
|
:startBrokk
|
|
|
|
call :getBrokkStatus
|
|
|
|
if "%brokk_running%" == "false" ( start cmd /k brokkserv.bat %restart_mode%
|
|
|
|
) else echo "Brokk serv is already running, pid=%BrokkServPID%"
|
|
|
|
goto :EOF
|
|
|
|
:startSindri
|
|
|
|
call :getMapStatus
|
|
|
|
if "%sindri_running%" == "false" ( start cmd /k sindriserv.bat %restart_mode%
|
|
|
|
) else echo "Sindri serv is already running, pid=%SindriServPID%"
|
|
|
|
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
|
|
|
|
|
|
|
|
:getWebStatus
|
|
|
|
for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq web-server.exe"') do set WebServPID=%%b
|
|
|
|
echo(%WebServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "Web_running=true" || set "web_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
|
|
|
|
|
|
|
|
:getBrokkStatus
|
|
|
|
for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq brokk-server.exe"') do set BrokkServPID=%%b
|
|
|
|
echo(%BrokkServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "brokk_running=true" || set "brokk_running=false"
|
|
|
|
goto :EOF
|
|
|
|
|
|
|
|
:getSindriStatus
|
|
|
|
for /F "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq sindri-server.exe"') do set SindriServPID=%%b
|
|
|
|
echo(%SindriServPID%|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&& set "sindri_running=true" || set "sindri_running=false"
|
|
|
|
goto :EOF
|