Improve rct2

This commit is contained in:
zawz 2020-06-08 11:56:15 +02:00
parent a55beb094b
commit a83529864d
2 changed files with 99 additions and 67 deletions

View file

@ -36,13 +36,13 @@ DNF_PACKAGES="gcc gcc-c++ jansson-devel openssl-devel SDL2-devel libicu-devel sp
PACMAN_PACKAGES="gcc gcc-libs git cmake sdl2 fontconfig libzip libpng curl jansson speexdsp openssl icu duktape" PACMAN_PACKAGES="gcc gcc-libs git cmake sdl2 fontconfig libzip libpng curl jansson speexdsp openssl icu duktape"
echo_white "Installing packages" echo_white "Installing packages"
if which apt >/dev/null if which apt >/dev/null 2>&1
then then
sudo apt install --no-install-recommends -y $APT_PACKAGES || abort $? sudo apt install --no-install-recommends -y $APT_PACKAGES || abort $?
elif which dnf >/dev/null elif which dnf >/dev/null 2>&1
then then
sudo dnf install $DNF_PACKAGES || abort $? sudo dnf install $DNF_PACKAGES || abort $?
elif which pacman >/dev/null elif which pacman >/dev/null 2>&1
then then
sudo pacman -S --needed $PACMAN_PACKAGES || abort $? sudo pacman -S --needed $PACMAN_PACKAGES || abort $?
else else
@ -53,9 +53,6 @@ _done
[ -z "$DESTDIR" ] && DESTDIR='OpenRCT2' [ -z "$DESTDIR" ] && DESTDIR='OpenRCT2'
[ -z "$SRCDIR" ] && SRCDIR='openrct2-src' [ -z "$SRCDIR" ] && SRCDIR='openrct2-src'
mkdir -p "$SRCDIR"
cd "$SRCDIR" || abort $?
## PULLING SOURCE ## . ## PULLING SOURCE ## .
echo_white "Getting source code" echo_white "Getting source code"
if [ -d "$SRCDIR" ] if [ -d "$SRCDIR" ]
@ -138,7 +135,7 @@ then
fi fi
mkdir -p build || abort $? mkdir -p build || abort $?
cd build || abort $? cd build || abort $?
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo .. || abort $? cmake -DCMAKE_BUILD_TYPE=Release .. || abort $?
_done _done
## BUILD ## ./$SCRDIR/build ## BUILD ## ./$SCRDIR/build

View file

@ -1,5 +1,7 @@
#!/bin/sh #!/bin/sh
version=1.1
usage() { usage() {
echo "Usage: zrct [options] <operation>" echo "Usage: zrct [options] <operation>"
echo 'Set of operations for OpenRCT2 server management. echo 'Set of operations for OpenRCT2 server management.
@ -9,35 +11,48 @@ Operations:
start start in screen instance in background start start in screen instance in background
startLocal start the server in the current console startLocal start the server in the current console
console prompt the screen instance (C-a + d to leave) console prompt the screen instance (C-a + d to leave)
stop save the park and stop
backup make a backup of current save backup make a backup of current save
getautosave get latest autosave and sets it as active save getautosave get latest autosave and sets it as active save
-> auto backup of current save -> auto backup of current save
| alias: get | alias: get
update recompile from latest source. Will overwrite previous server update recompile portable instance from latest source
Options: Options:
-h display help -h display help
-v display version of script
-c <file> use this file for config -c <file> use this file for config
-s <save> uses provided save file -s <save> uses provided save file
-S <server> uses this server instance (folder) -S <server> uses this server instance (folder)
' -C <command> command to execute for starting server'
} }
save_backup () { save_backup () {
echo "Backing up '$save_file' to $1.sv6.gz" echo "Backing up '$save_file' to $1.sv6.gz"
cp "$save_file" "$backup_path/$1.sv6" gzip -c "$save_file" > "$BACKUP_PATH/$1.sv6.gz"
gzip "$backup_path/$1.sv6" }
stop_server () {
screen -S "$SCREEN_NAME" -X stuff "^M"
sleep 1
screen -S "$SCREEN_NAME" -X stuff "save_park^M"
sleep 1
screen -S "$SCREEN_NAME" -X stuff "quit^M"
} }
unset save_file unset save_file
config_file="zsrct2.conf" config_file="zsrct2.conf"
while getopts ":hS:s:c:" opt; while getopts ":hS:s:c:b:" opt;
do do
case $opt in case $opt in
h) h)
usage usage
exit 0 exit 1
;;
v)
echo $VERSION
exit 1
;; ;;
S) S)
server_path=${OPTARG} server_path=${OPTARG}
@ -58,72 +73,92 @@ done
if [ ! -f "$config_file" ] if [ ! -f "$config_file" ]
then then
echo "Generating default config file" echo "Generating default config file"
echo '# zsrct2 1.0 config file echo '# zsrct2 1.1 config file
SAVE_NAME=
SERVER_NAME=server # listening port of the server
PORT=11753 PORT=11753
# name of the screen instance for background start
SCREEN_NAME=OpenRCT2 SCREEN_NAME=OpenRCT2
SAVE_FOLDER=saves # path to store user data
BACKUP_FOLDER=saves/backup DATA_PATH=data
DATA_FOLDER=data # path to save backups
SRC_FOLDER=src BACKUP_PATH=backup
# specify the full path to a save
SAVE_FILE=
# specify a save name inside a save path
# .sv6 is omitted
#SAVE_NAME=
#SAVE_PATH=saves
# path to a portable instance of openrct2
#SERVER_NAME=
# specific command to use when staring
#COMMAND=openrct2
# additionnal command options
#OPTS=
# source path for updating portable instance
#SRC_PATH=src
' >> "$config_file" || exit 1 ' >> "$config_file" || exit 1
exit 100
fi fi
save_name=$(grep "SAVE_NAME=" "$config_file" | cut -d '=' -f2-) [ $(echo "$config_file" | cut -c1) != '/' ] && config_file="$(pwd)/$config_file"
server_path=$(grep "SERVER_PATH=" "$config_file" | cut -d '=' -f2-) . "$config_file"
port=$(grep "PORT=" "$config_file" | cut -d '=' -f2-)
screen_name=$(grep "SCREEN_NAME=" "$config_file" | cut -d '=' -f2-)
save_path=$(grep "SAVE_PATH=" "$config_file" | cut -d '=' -f2-)
backup_path=$(grep "BACKUP_PATH=" "$config_file" | cut -d '=' -f2-)
data_path=$(grep "DATA_PATH=" "$config_file" | cut -d '=' -f2-)
src_path=$(grep "SRC_PATH=" "$config_file" | cut -d '=' -f2-)
[ -z "$save_file" ] && save_file="$save_path/$save_name.sv6" # resolve command
if [ -z "$COMMAND" ]
then
COMMAND=openrct2
[ -n "$SERVER_PATH" ] && COMMAND="$SERVER_PATH/openrct2"
fi
[ ! -d "$backup_path" ] && mkdir -p "$backup_path" if [ -z "$save_file" ]
[ ! -d "$save_path" ] && mkdir -p "$save_path" then
[ ! -d "$data_path" ] && mkdir -p "$data_path" if [ -n "$SAVE_FILE" ]
then save_file="$SAVE_FILE"
else save_file="$SAVE_PATH/$SAVE_NAME.sv6"
fi
fi
[ -z "$BACKUP_PATH" ] && BACKUP_PATH=backup
mkdir -p "$BACKUP_PATH" 2>/dev/null
mkdir -p "$SAVE_PATH" 2>/dev/null
mkdir -p "$DATA_PATH" 2>/dev/null
shift $((OPTIND-1)) shift $((OPTIND-1))
if [ "$1" ] case $1 in
then start)
if [ "$1" = "start" ] screen -dmS "$SCREEN_NAME" "$COMMAND" host "$save_file" --user-data-path "$DATA_PATH" --port "$PORT" --headless $OPTS
then ;;
screen -dmS "$screen_name" "$server_path/openrct2" host "$save_file" --user-data-path "$data_path" --port "$port" --headless startLocal)
"$COMMAND" host "$save_file" --user-data-path "$DATA_PATH" --port "$PORT" --headless $OPTS
elif [ "$1" = "startLocal" ] ;;
then console) screen -r "$SCREEN_NAME" ;;
"$server_path/openrct2" host "$save_file" --user-data-path "$data_path" --port "$port" --headless stop) stop_server ;;
backup)
elif [ "$1" = "console" ]
then
screen -r "$screen_name"
elif [ "$1" = "backup" ]
then
if [ -n "$2" ] if [ -n "$2" ]
then then
save_backup "$2" save_backup "$2"
else else
save_backup "$save_name"_"$(date -u "+20%y-%m-%d_%H%M%S")" save_backup "$SAVE_NAME"_"$(date -u "+20%y-%m-%d_%H%M%S")"
fi fi
;;
elif [ "$1" = "getautosave" ] || [ "$1" = "get" ] getautosave|get)
then autosave=$(ls -l "$DATA_PATH/save/autosave/" | grep autosave | tail -1 | tr -s ' ' | cut -d ' ' -f9-)
autosave=$(ls -l "$data_path/save/autosave/" | grep autosave | tail -1 | tr -s ' ' | cut -d ' ' -f9-) mv "$save_file" "$BACKUP_PATH/$(basename "$save_file")"_"$(date -u "+20%y-%m-%d_%H%M%S")"
mv "$save_file" "$backup_path/$(basename "$save_file")"_"$(date -u "+20%y-%m-%d_%H%M%S")" mv "$DATA_PATH/save/autosave/$autosave" "$save_file"
mv "$data_path/save/autosave/$autosave" "$save_file" ;;
update)
elif [ "$1" = "update" ] DISCORD_RPC=false DESKTOP_ENTRY=false CLEAN_SRC=false SRCDIR="$SRC_PATH" DESTDIR="$SERVER_PATH" zrct2-install
then ;;
DISCORD_RPC=false DESKTOP_ENTRY=false CLEAN_SRC=false SRCDIR="$src_path" DESTDIR="$server_path" zrct2-install *) usage && exit 1 ;;
esac
else
usage
fi
else
usage
fi