diff --git a/start.sh b/start.sh index ebb16d8..d530ad6 100755 --- a/start.sh +++ b/start.sh @@ -18,13 +18,7 @@ export RESTART_INTERVAL=$((60 * 60 * 4 + 3)) # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* # Helper functions # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* -if [ ! "$DEBUG" ] ; then - alias do_sync='rsync -rltDhu --delete --partial' - alias do_secure_sync='rsync -crltDhu --delete --partial' -else - alias do_sync='rsync -vrltDhu --delete --partial --progress' - alias do_secure_sync='rsync -cvrltDhu --delete --partial --progress' -fi +alias do_sync='rsync -rltDh --delete --partial' msg() { >&2 printf '[*] %s ...\n' "$*" @@ -145,9 +139,10 @@ load_mods() { # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* load_stock_map_data() { mkdir -p "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" - do_sync --exclude="*storage_1*" \ + do_sync --exclude='*storage_1*' \ "$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME"/ \ - "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" + "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" || \ + die "Failed to copy stock map data" } # -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* @@ -179,7 +174,6 @@ patch_types() { fi if [ -f "$DAYZ_FILES/server_configs/types/$MAP_FOLDER_NAME.sh" ] ; then - cp -f "$DAYZ_FILES/server_configs/types/$MAP_FOLDER_NAME.sh" \ "$SERVER_HOME"/ @@ -188,9 +182,74 @@ patch_types() { sh "$SERVER_HOME/$MAP_FOLDER_NAME.sh" \ "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/db/types.xml" || \ die "Failed while running maps types edit script" - else - warn "Could not find $DAYZ_FILES/server_configs/types/$MAP_FOLDER_NAME.sh" + die "Could not find $DAYZ_FILES/server_configs/types/$MAP_FOLDER_NAME.sh" + fi + + # if we're on namalsk, we will have a types_dzn.xml as well + # this file contains the frozen food etc unique namalsk items + case $MAP_FOLDER_NAME in + *namalsk*) + DZN_FILE=namalsk_dzn.sh + msg "Patching $DZN_FILE" + if [ -f "$DAYZ_FILES/server_configs/types/$DZN_FILE" ] ; then + cp -f "$DAYZ_FILES/server_configs/types/$DZN_FILE" \ + "$SERVER_HOME"/ + + cd "$SERVER_HOME" || die "could not cd to $SERVER_HOME" + + sh "$SERVER_HOME/$DZN_FILE" \ + "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/db/types_dzn.xml" || \ + die "Failed while running maps types edit script on types_dzn.xml" + else + die "Could not find $DAYZ_FILES/server_configs/types/$DZN_FILE" + fi + ;; + esac + +} + +load_customtypes() { + if [ -d "$DAYZ_FILES/server_configs/types/custom.$MAP_FOLDER_NAME" ] ; then + CUSTOM_TYPES="$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/customtypes" + CFG_ECORE="$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/cfgeconomycore.xml" + + mkdir -p "$CUSTOM_TYPES" + do_sync "$DAYZ_FILES/server_configs/types/custom.$MAP_FOLDER_NAME"/ \ + "$CUSTOM_TYPES" + + for xml in "$CUSTOM_TYPES"/*.xml ; do + debug " - Found custom type: ${xml##*/}" + if [ -f "$xml" ] ; then + sed -E -i '/<\/economycore>/d' "$CFG_ECORE" + + printf '\n\n\n\n\n' "${xml##*/}" \ + >> "$CFG_ECORE" + + printf '%s\n' '' >> "$CFG_ECORE" + fi + done + fi + + # ============== custom SPAWNABLE types =================== + if [ -d "$DAYZ_FILES/server_configs/types/spawnabletypes.$MAP_FOLDER_NAME" ] ; then + msg "Copying custom spawnable types" + + CUSTOM_SPAWNABLE_TYPES="$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/spawnabletypes" + CFG_SPAWNABLE_TYPES="$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/cfgspawnabletypes.xml" + + mkdir -p "$CUSTOM_SPAWNABLE_TYPES" + do_sync "$DAYZ_FILES/server_configs/types/spawnabletypes.$MAP_FOLDER_NAME"/ \ + "$CUSTOM_SPAWNABLE_TYPES" + + for xml in "$CUSTOM_SPAWNABLE_TYPES"/*.xml ; do + debug " - Found custom spawnabletype: ${xml##*/}" + if [ -f "$xml" ] ; then + sed -E -i '/<\/spawnabletypes>/d' "$CFG_SPAWNABLE_TYPES" + cat "$xml" >> "$CFG_SPAWNABLE_TYPES" + printf '%s\n' '' >> "$CFG_SPAWNABLE_TYPES" + fi + done fi } @@ -220,7 +279,7 @@ load_configs() { if [ -f "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/init.c" ] ; then debug "Found: init.c -- Copying." - do_secure_sync \ + do_sync \ "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/init.c" \ "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/init.c" || \ die "failed to copy init.c" @@ -290,8 +349,8 @@ main() { msg "Copying server configs" load_configs || die "Failed to load configs" - # msg "Creating custom types list" - ############################# + msg "Creating custom types list" + load_customtypes || die "Failed to load custom types" echo '====================================' printf '%s - Server started.\n' "$(date)"