Files
red-valley/start.bat

168 lines
4.9 KiB
Batchfile
Raw Normal View History

2026-03-29 21:41:17 +03:00
@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