@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