168 lines
4.9 KiB
Batchfile
168 lines
4.9 KiB
Batchfile
@echo off
|
|
setlocal EnableDelayedExpansion EnableDelayedExpansion
|
|
|
|
:: --------------------------------------------------------------------------
|
|
:: RED VALLEY ROLEPLAY - Server Starter v2.0
|
|
:: Based on v1.1 by vlxre.cata | Optimized layout
|
|
:: --------------------------------------------------------------------------
|
|
|
|
set source=E:\FiveMserver\server\artifacts
|
|
set starter=FXServer.exe
|
|
set config=server.cfg
|
|
set configFolder=%~dp0
|
|
set autoUpgrade=0
|
|
set autoSelect=1
|
|
set pauseBeforeStart=0
|
|
|
|
:: Colors (ASCII escape codes)
|
|
for /F "delims=#" %%E in ('"prompt #$E# & for %%E in (1) do rem"') do set "ESCchar=%%E"
|
|
set "c_white=%ESCchar%[97m"
|
|
set "c_gray=%ESCchar%[37m"
|
|
set "c_dim=%ESCchar%[90m"
|
|
set "c_red=%ESCchar%[91m"
|
|
set "c_green=%ESCchar%[92m"
|
|
set "c_cyan=%ESCchar%[96m"
|
|
set "c_yellow=%ESCchar%[93m"
|
|
set "c_reset=%ESCchar%[0m"
|
|
|
|
cls
|
|
call :heading
|
|
|
|
set server=%configFolder%%config%
|
|
|
|
:: --- Pre-flight checks ---
|
|
set errors=0
|
|
|
|
:: Check config
|
|
if exist %server% (
|
|
echo %c_green%[OK]%c_reset% Config %c_dim%: %server%%c_reset%
|
|
) else (
|
|
echo %c_red%[!!]%c_reset% Config %c_dim%: %server% %c_red%NOT FOUND%c_reset%
|
|
set errors=1
|
|
)
|
|
|
|
:: Check artifact folder
|
|
if exist %source%\ (
|
|
echo %c_green%[OK]%c_reset% Artifact %c_dim%: %source%%c_reset%
|
|
) else (
|
|
echo %c_red%[!!]%c_reset% Artifact %c_dim%: %source% %c_red%NOT FOUND%c_reset%
|
|
set errors=1
|
|
)
|
|
|
|
if %errors% == 1 (
|
|
echo.
|
|
echo %c_red%Fix the errors above and try again.%c_reset%
|
|
echo.&pause&goto:eof
|
|
)
|
|
|
|
:: Find artifact executable
|
|
if exist %source%\%starter% (
|
|
set "artifact=%source%\%starter%"
|
|
echo %c_green%[OK]%c_reset% Server %c_dim%: %source%\%starter%%c_reset%
|
|
) else (
|
|
:: Search subfolders for versioned artifacts
|
|
call :findBestVersion bestVer
|
|
if "!bestVer!"=="" (
|
|
echo %c_red%[!!]%c_reset% Server %c_dim%: %starter% not found in any subfolder%c_reset%
|
|
echo.&pause&goto:eof
|
|
)
|
|
set "artifact=!bestVer!"
|
|
)
|
|
|
|
echo.
|
|
echo %c_white%Starting%c_reset% %c_dim%^>^>%c_reset% %c_yellow%!artifact!%c_reset%
|
|
echo %c_white%Data dir%c_reset% %c_dim%^>^>%c_reset% %c_yellow%%configFolder%%c_reset%
|
|
echo.
|
|
echo %c_dim% =======================================================================%c_reset%
|
|
echo.
|
|
|
|
if %pauseBeforeStart% == 1 ( pause )
|
|
|
|
cd /d %configFolder%
|
|
!artifact! +exec %config%
|
|
|
|
echo.&pause&goto:eof
|
|
|
|
|
|
:: =====================================================================
|
|
:: FUNCTIONS
|
|
:: =====================================================================
|
|
|
|
:heading
|
|
echo.
|
|
echo %c_red% ###### ######## ########%c_reset%
|
|
echo %c_red% ## ## ## ## ##%c_reset% %c_white%## ## ###### ## ## ######## ## ##%c_reset%
|
|
echo %c_red% ## ## ## ## ##%c_reset% %c_white%## ## ## ## ## ## ## ## ##%c_reset%
|
|
echo %c_red% ###### ###### ## ##%c_reset% %c_white%## ## ## ## ## ## ###### ####%c_reset%
|
|
echo %c_red% ## ## ## ## ##%c_reset% %c_white%## ## ######## ## ## ## ##%c_reset%
|
|
echo %c_red% ## ## ######## ########%c_reset% %c_white%#### ## ## ######## ######## ######## ##%c_reset%
|
|
echo.
|
|
echo %c_dim% ------------------------------------------------------------------------%c_reset%
|
|
echo %c_dim% ROLEPLAY SERVER Starter v2.0 %c_dim%^| vlxre.cata%c_reset%
|
|
echo %c_dim% ------------------------------------------------------------------------%c_reset%
|
|
echo.
|
|
exit /B 0
|
|
|
|
|
|
:findBestVersion
|
|
set _vec=
|
|
set _backup=
|
|
set _n=0
|
|
set /a _num=0
|
|
set /a _max=0
|
|
for /D %%G in ("%source%\*") DO (
|
|
set /a _num=%%~nxG >nul 2>nul
|
|
if !_num! == %%~nxG (
|
|
if exist %source%\%%~nxG\%starter% (
|
|
set /a _vec[!_n!]=%%~nxG
|
|
set /a "_n+=1"
|
|
if !_max! LSS !_num! ( set /a _max=!_num! )
|
|
)
|
|
) else (
|
|
if exist %source%\%%~nxG\%starter% (
|
|
if [!_backup!] == [] ( set _backup=%%~nxG )
|
|
)
|
|
)
|
|
)
|
|
|
|
if !_max! GTR 0 (
|
|
set _backup=!_max!
|
|
)
|
|
|
|
if [!_backup!] == [] (
|
|
set "%~1="
|
|
exit /B 0
|
|
)
|
|
|
|
if !_n! GTR 1 (
|
|
if %autoSelect% == 0 (
|
|
echo.
|
|
echo %c_white%Available versions:%c_reset%
|
|
set /a _pv=0
|
|
call :_printVer
|
|
echo.
|
|
set _sel=
|
|
set /P _sel=" %c_cyan%Select [empty=latest]:%c_yellow% "
|
|
echo %c_reset%
|
|
if "!_sel!"=="" (
|
|
set "%~1=%source%\!_max!\%starter%"
|
|
) else (
|
|
set "%~1=%source%\!_sel!\%starter%"
|
|
)
|
|
) else (
|
|
echo %c_green%[OK]%c_reset% Server %c_dim%: v!_backup! %c_dim%(auto-selected)%c_reset%
|
|
set "%~1=%source%\!_backup!\%starter%"
|
|
)
|
|
) else (
|
|
echo %c_green%[OK]%c_reset% Server %c_dim%: v!_backup!%c_reset%
|
|
set "%~1=%source%\!_backup!\%starter%"
|
|
)
|
|
exit /B 0
|
|
|
|
:_printVer
|
|
if defined _vec[%_pv%] (
|
|
call echo %c_cyan%- v%%_vec[%_pv%]%%%c_reset%
|
|
set /a "_pv+=1"
|
|
goto :_printVer
|
|
)
|
|
exit /B 0 |