Improve rct2
This commit is contained in:
parent
a55beb094b
commit
a83529864d
2 changed files with 99 additions and 67 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
155
zrct2/zsrct2
155
zrct2/zsrct2
|
|
@ -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
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue