summaryrefslogtreecommitdiff
path: root/runserver.bat
diff options
context:
space:
mode:
authorultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-08-09 18:56:27 +0000
committerultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-08-09 18:56:27 +0000
commite35044d26d45bf7e9a4acc357be3738e3379f3e3 (patch)
tree5233ac4ef955794af13c8f928050a09f18fa3069 /runserver.bat
parentc10d6dd38c9fff3ea0ec335465b7f632d5b086db (diff)
downloadhercules-e35044d26d45bf7e9a4acc357be3738e3379f3e3.tar.gz
hercules-e35044d26d45bf7e9a4acc357be3738e3379f3e3.tar.bz2
hercules-e35044d26d45bf7e9a4acc357be3738e3379f3e3.tar.xz
hercules-e35044d26d45bf7e9a4acc357be3738e3379f3e3.zip
- stable -> trunk sync
- battle.c and pc.c formatting - fixed one badly defined npc shop format string - removed the "selling item for no buying price" warning when the item has a buying price of 20 (see topic:157465) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10971 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'runserver.bat')
-rw-r--r--runserver.bat81
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