old
This commit is contained in:
112
old/adjust_type.sh
Normal file
112
old/adjust_type.sh
Normal file
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# Wrapper for editing DayZ types.xml using xmlstarlet
|
||||
#
|
||||
#----------------------------------------------------------
|
||||
|
||||
# example: swap_flag M16A2 count_in_cargo 1 file
|
||||
swap_flag() {
|
||||
file=$4
|
||||
|
||||
if ! command -v xmlstarlet >/dev/null ; then
|
||||
>&2 echo "NOT IN \$PATH: xmlstarlet"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$file" ] ; then
|
||||
>&2 echo "File: '$file' is not a file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" ] && [ "$2" ] && [ "$3" ] ; then
|
||||
_name=$1
|
||||
_flag=$2
|
||||
_value=$3
|
||||
xmlstarlet ed -P -L \
|
||||
-u \ "//types/type[@name=\"$_name\"]/flags[@$_flag]/@$_flag" \
|
||||
-v \
|
||||
"$_value" \
|
||||
"$file"
|
||||
else
|
||||
>&2 echo "Bad params in swap_flag"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# example: swap_value M4A1 nominal 3 file
|
||||
swap_value() {
|
||||
file=$4
|
||||
|
||||
if ! command -v xmlstarlet >/dev/null ; then
|
||||
>&2 echo "NOT IN \$PATH: xmlstarlet"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f "$file" ] ; then
|
||||
>&2 echo "File: '$file' is not a file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$1" ] && [ "$2" ] && [ "$3" ] ; then
|
||||
_name=$1
|
||||
_tag=$2
|
||||
_value=$3
|
||||
xmlstarlet ed -P -L \
|
||||
-u \ "//types/type[@name=\"$_name\"]/$_tag" \
|
||||
-v \
|
||||
"$_value" \
|
||||
"$file"
|
||||
else
|
||||
>&2 echo "Bad params in swap_value"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: ${0##*/} [-f|-v] name tag value file
|
||||
|
||||
-f swap a flag from flags
|
||||
-v swap a normal value
|
||||
|
||||
# --------------------------------
|
||||
# Examples
|
||||
# --------------------------------
|
||||
|
||||
# examples #1:
|
||||
|
||||
<type name="M16A2">
|
||||
<lifetime>28800</lifetime>
|
||||
</type>
|
||||
|
||||
${0##*/} -v M16A2 lifetime 20000 some_file.xml
|
||||
|
||||
# example #2:
|
||||
|
||||
<type name="M16A2">
|
||||
<flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/>
|
||||
</type>
|
||||
|
||||
${0##*/} -f M16A2 count_in_player 1 some_file.xml
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$DEBUG" ] ; then
|
||||
echo "ADJUSTING TYPE: $2 $3"
|
||||
fi
|
||||
|
||||
case $1 in
|
||||
-h|--help)
|
||||
usage
|
||||
;;
|
||||
-f)
|
||||
shift
|
||||
swap_flag "$1" "$2" "$3" "$4" || exit 1
|
||||
;;
|
||||
-v)
|
||||
shift
|
||||
swap_value "$1" "$2" "$3" "$4" || exit 1
|
||||
;;
|
||||
esac
|
||||
136
old/modserver/modlists/chernarus.txt
Normal file
136
old/modserver/modlists/chernarus.txt
Normal file
@@ -0,0 +1,136 @@
|
||||
# ==================================================================
|
||||
# Inactive
|
||||
# ==================================================================
|
||||
|
||||
############ Legacy Gun Play
|
||||
############ https://steamcommunity.com/sharedfiles/filedetails/?id=2560589980
|
||||
###########2560589980^legacygunplay
|
||||
|
||||
############### advanced weapon scopes
|
||||
################ https://steamcommunity.com/sharedfiles/filedetails/?id=2143128974
|
||||
###############2143128974^advancedweaponscopes
|
||||
|
||||
############ tactical flava
|
||||
############# https://steamcommunity.com/sharedfiles/filedetails/?id=2646817942
|
||||
###########2646817942^tacticalflava
|
||||
|
||||
############## sGunplay
|
||||
############## https://steamcommunity.com/sharedfiles/filedetails/?id=2507204412
|
||||
#############2507204412^sgunplay
|
||||
|
||||
################## enough stamina
|
||||
################## https://steamcommunity.com/sharedfiles/filedetails/?id=2337398072
|
||||
#################2337398072^enoughstamina
|
||||
|
||||
# ==================================================================
|
||||
# Generic / All Servers
|
||||
# ==================================================================
|
||||
|
||||
# Dabs Framework
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2545327648
|
||||
2545327648^dabsframework
|
||||
|
||||
# CF
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=1559212036
|
||||
1559212036^cf
|
||||
|
||||
# VPP Admin Tools
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=1828439124
|
||||
1828439124^vppadmintools
|
||||
|
||||
# Notes
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=1999076953
|
||||
1999076953^notes
|
||||
|
||||
# Ear Plugs
|
||||
# https://steamcommunity.com/workshop/filedetails/?id=1819514788
|
||||
1819514788^earplugs
|
||||
|
||||
# health regen 2x when blood is full
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2434838000&searchtext=health
|
||||
2434838000^healthregen
|
||||
|
||||
# tent backpacks
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2884638645
|
||||
2884638645^tentbackpacks
|
||||
|
||||
# durable suppressors (1.5x health)
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2880585815
|
||||
2880585815^durablesuppressors
|
||||
|
||||
# Zen's Cause of Death
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2810260908
|
||||
2810260908^causeofdeath
|
||||
|
||||
# Bear Buff (bears aggro from further away, chase players)
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2692521272
|
||||
2692521272^bearbuff
|
||||
|
||||
# Custom Animations
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2545980712
|
||||
2545980712^customanimations
|
||||
|
||||
# Worn Repair
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2581770969
|
||||
2581770969^wornrepair
|
||||
|
||||
# No DepthOfField
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=1721317955
|
||||
1721317955^nodof
|
||||
|
||||
# Zen's Fire Fuel
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2866862200
|
||||
2866862200^firefuel
|
||||
|
||||
# Zen's Gun Move Sounds
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2832627966
|
||||
2832627966^gunmovesounds
|
||||
|
||||
# Bad Food
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2155069271
|
||||
2155069271^badfood
|
||||
|
||||
# ==================================================================
|
||||
# sUDE
|
||||
# ==================================================================
|
||||
|
||||
# sFramework
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2614334381
|
||||
2614334381^sframework
|
||||
|
||||
# sVisual
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2469448088
|
||||
2469448088^svisual
|
||||
|
||||
# ==================================================================
|
||||
# Chernarus Specific
|
||||
# ==================================================================
|
||||
|
||||
# spurgles bagz
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2489196158
|
||||
2489196158^spurglesbagz
|
||||
|
||||
# fliptransport
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=1832448183
|
||||
1832448183^fliptransport
|
||||
|
||||
# no weapon raise
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2098390861
|
||||
2098390861^noweaponraise
|
||||
|
||||
# no vehicle damage
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=1735947752
|
||||
1735947752^novehicledamage
|
||||
|
||||
# Doc's Car Fixes
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2886222035
|
||||
2886222035^docscarfixes
|
||||
|
||||
# Lag's Lighting Overhaul
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=2873016243
|
||||
2873016243^ladslightingoverhaul
|
||||
|
||||
# Uncuepa's Civilian Clothing
|
||||
# https://steamcommunity.com/sharedfiles/filedetails/?id=1762444175
|
||||
1762444175^uncuepascivilianclothing
|
||||
|
||||
125
old/modserver/update.sh
Normal file
125
old/modserver/update.sh
Normal file
@@ -0,0 +1,125 @@
|
||||
#!/bin/sh
|
||||
|
||||
DAYZ_GAME_ID=221100
|
||||
DAYZ_SERVER_ID=223350
|
||||
LOCAL_MODS_DIR="${HOME}/.steam/debian-installation/steamapps/workshop/content/$DAYZ_GAME_ID"
|
||||
STEAM_USER="yzaddayz"
|
||||
REMOTE_MAPS="/mnt/dayz/stock/maps"
|
||||
|
||||
alias do_sync='rsync -rvltDhu --delete --partial --progress'
|
||||
|
||||
msg() {
|
||||
printf '[*] %s\n' "$*"
|
||||
}
|
||||
|
||||
# ====================================================================================
|
||||
|
||||
update_server() {
|
||||
msg "------------------ UPDATING DAYZ SERVER -------------------"
|
||||
|
||||
LOCAL_INSTALL_DIR="${HOME}/.steam/debian-installation/steamapps/common/DayZServer"
|
||||
REMOTE_INSTALL_DIR="/mnt/dayz/stock/DayZServer"
|
||||
|
||||
steamcmd -tcp +login "$STEAM_USER" +app_update "$DAYZ_GAME_ID" +quit
|
||||
steamcmd -tcp +login "$STEAM_USER" +app_update "$DAYZ_SERVER_ID" +quit
|
||||
|
||||
do_sync "$LOCAL_INSTALL_DIR"/ "$REMOTE_INSTALL_DIR"
|
||||
msg "------- DONE UPDATING SERVER ---------------------"
|
||||
}
|
||||
|
||||
# args: $1=server_name
|
||||
update_mods() {
|
||||
MODS_FILE="$HOME/modlists/$1.txt"
|
||||
REMOTE_MODS_DIR="/mnt/dayz/mods/$1"
|
||||
mkdir -p "$REMOTE_MODS_DIR"
|
||||
|
||||
tempfile=/tmp/mods-to-download.txt
|
||||
:> "$tempfile"
|
||||
|
||||
while read -r mod ; do
|
||||
# skip comments, blank lines
|
||||
case "$mod" in
|
||||
\#*|'')
|
||||
;;
|
||||
*)
|
||||
mod=${mod%%^*}
|
||||
printf "+workshop_download_item $DAYZ_GAME_ID %s\n" "$mod" >> "$tempfile"
|
||||
mkdir -p "$LOCAL_MODS_DIR/$mod"
|
||||
esac
|
||||
done < "$MODS_FILE"
|
||||
|
||||
msg "----------- DOWNLOAD MODS -------------"
|
||||
steamcmd -tcp +login "$STEAM_USER" $(cat "$tempfile" | xargs) +quit || exit 1
|
||||
|
||||
msg "----------- RENAMING MODS -------------"
|
||||
|
||||
rm -rf "$HOME/mods_to_copy" 2>/dev/null ||:
|
||||
mkdir -p "$HOME/mods_to_copy"
|
||||
|
||||
:> "$HOME/mods_to_copy/mods.txt"
|
||||
while read -r mod ; do
|
||||
# skip comments, blank lines
|
||||
case "$mod" in
|
||||
\#*|'')
|
||||
;;
|
||||
*)
|
||||
mod_id=${mod%%^*}
|
||||
mod_name=${mod##*^}
|
||||
do_sync "$LOCAL_MODS_DIR/$mod_id"/ "$HOME/mods_to_copy/@${mod_name}"
|
||||
printf '@%s\n' "$mod_name" >> "$HOME/mods_to_copy/mods.txt"
|
||||
esac
|
||||
done < "$MODS_FILE"
|
||||
|
||||
msg "----------- SYNCING MODS -------------"
|
||||
do_sync "$HOME/mods_to_copy"/ "$REMOTE_MODS_DIR"
|
||||
|
||||
rm "$tempfile" 2>/dev/null ||:
|
||||
rm -rf "$HOME/mods_to_copy" 2>/dev/null ||:
|
||||
}
|
||||
|
||||
update_stock_maps() {
|
||||
msg "----------- UPDATING MAPS -------------"
|
||||
cherno=dayzOffline.chernarusplus
|
||||
namalsk=regular.namalsk
|
||||
takistan=Offline.TakistanPlus
|
||||
NAMALSK_MOD_ID=2289461232
|
||||
TAKISTAN_MOD_ID=2563233742
|
||||
|
||||
do_sync \
|
||||
"${HOME}/.steam/debian-installation/steamapps/common/DayZServer/mpmissions/$cherno"/ \
|
||||
"$REMOTE_MAPS/$cherno"
|
||||
|
||||
msg "Updating Namalsk Survival"
|
||||
steamcmd -tcp +login "$STEAM_USER" +workshop_download_item "$DAYZ_GAME_ID" "$NAMALSK_MOD_ID" +quit || exit 1
|
||||
if [ -d "$LOCAL_MODS_DIR/$NAMALSK_MOD_ID/Extras/Regular/$namalsk" ] ; then
|
||||
do_sync "$LOCAL_MODS_DIR/$NAMALSK_MOD_ID/Extras/Regular/$namalsk"/ "$REMOTE_MAPS/$namalsk" || \
|
||||
die "failed to copy Namalsk map files"
|
||||
fi
|
||||
|
||||
msg "Updating Optimized Namalsk Server PBOs"
|
||||
#NAMALSK_OPTIMIZED
|
||||
steamcmd -tcp +login "$STEAM_USER" +workshop_download_item "$DAYZ_GAME_ID" "$NAMALSK_MOD_ID" +quit || exit 1
|
||||
|
||||
msg "Updating TakistanPlus"
|
||||
steamcmd -tcp +login "$STEAM_USER" +workshop_download_item "$DAYZ_GAME_ID" "$TAKISTAN_MOD_ID" +quit || exit 1
|
||||
if [ -d "$LOCAL_MODS_DIR/$TAKISTAN_MOD_ID/Mission/$takistan" ] ; then
|
||||
do_sync "$LOCAL_MODS_DIR/$TAKISTAN_MOD_ID/Mission/$takistan"/ "$REMOTE_MAPS/$takistan" || \
|
||||
die "failed to copy Takistan map files"
|
||||
fi
|
||||
|
||||
|
||||
msg "NOTE: deer isle doesn't get automatic updates... Skipping"
|
||||
}
|
||||
|
||||
main () {
|
||||
update_server
|
||||
update_stock_maps
|
||||
|
||||
for server in $(ls "$HOME/modlists" | xargs | sed 's/\.txt//g') ; do
|
||||
rm -rf "$HOME/.steam/debian-installation/steamapps/workshop/downloads"
|
||||
mkdir -p "$HOME/.steam/debian-installation/steamapps/workshop/downloads"
|
||||
update_mods "$server"
|
||||
done
|
||||
}
|
||||
|
||||
main "$@"
|
||||
3
old/mount_dayz.sh
Normal file
3
old/mount_dayz.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
sudo mount -t drvfs //truenas.local.wvr.sh/dayz /mnt/dayz
|
||||
404
old/start.sh
Normal file
404
old/start.sh
Normal file
@@ -0,0 +1,404 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# shellcheck disable=2043
|
||||
#
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# General Settings
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
export DAYZ_FILES=/mnt/dayz
|
||||
export STOCK_SERVER_DATA="$DAYZ_FILES/stock/DayZServer"
|
||||
export MAIN="/mnt/c/DAYZ"
|
||||
export SERVERS="$MAIN/servers"
|
||||
export CACHE="$MAIN/cache"
|
||||
export MOD_CACHE="$CACHE/mods"
|
||||
export RESTART_INTERVAL=$((60 * 60 * 4 + 3))
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# Helper functions
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
alias do_sync='rsync -rltDh --delete --partial'
|
||||
|
||||
msg() {
|
||||
>&2 printf '[*] %s ...\n' "$*"
|
||||
}
|
||||
|
||||
warn() {
|
||||
>&2 printf '\n\n<<<< WARNING: %s >>>>>\n\n' "$*"
|
||||
}
|
||||
|
||||
die() {
|
||||
msg "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
debug() {
|
||||
if [ "$DEBUG" ] ; then
|
||||
>&2 printf ' DEBUG: %s\n' "$*"
|
||||
fi
|
||||
}
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# Checks
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
check() {
|
||||
mkdir -p "$DAYZ_FILES"
|
||||
|
||||
if ! mount | grep -i "$DAYZ_FILES" >/dev/null ; then
|
||||
msg "$DAYZ_FILES is not mounted!"
|
||||
echo "hint: mount -t drvfs //truenas.home.weaver/dayz $DAYZ_FILES"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$MAIN" ] ; then
|
||||
die "$MAIN does not exist"
|
||||
fi
|
||||
|
||||
if [ ! -d "$STOCK_SERVER_DATA" ] ; then
|
||||
die "$STOCK_SERVER_DATA does not exist"
|
||||
fi
|
||||
}
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# Environment Setup
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
init() {
|
||||
mkdir -p "$SERVER_HOME" "$MOD_CACHE/$MAP_FOLDER_NAME"
|
||||
:>"$SERVER_HOME/.modstring"
|
||||
}
|
||||
|
||||
setup_environment() {
|
||||
msg "Copying stock server data"
|
||||
|
||||
# list of all stock folders
|
||||
for folder in addons battleye bliss docs dta keys ; do
|
||||
do_sync "$STOCK_SERVER_DATA/$folder"/ "$SERVER_HOME/$folder" || die "Failed to copy stock: $folder"
|
||||
done
|
||||
|
||||
# list of all stock files
|
||||
for file in ban.txt dayz.gproj dayzsetting.xml whitelist.txt \
|
||||
DayZServer_x64.exe steam_api64.dll steamclient64.dll tier0_s64.dll vstdlib_s64.dll ; do
|
||||
cp -f "$STOCK_SERVER_DATA/$file" "$SERVER_HOME/$file" || die "Failed to copy stock: $file"
|
||||
done
|
||||
|
||||
msg "Copying mod files"
|
||||
do_sync "$DAYZ_FILES/mods/$MAP_FOLDER_NAME"/ "$MOD_CACHE/$MAP_FOLDER_NAME" || die "Failed to copy mod files"
|
||||
|
||||
msg "Copying DZSA executable"
|
||||
cp -f "$DAYZ_FILES/software/DZSALModServer.exe" "$SERVER_HOME/"
|
||||
}
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# Load Mods
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
load_mods() {
|
||||
if [ ! -f "$MOD_CACHE/$MAP_FOLDER_NAME/mods.txt" ] ; then
|
||||
die "mods.txt list missing"
|
||||
fi
|
||||
|
||||
mkdir -p "$SERVER_HOME/mods"
|
||||
|
||||
_modstring=""
|
||||
while read -r mod ; do
|
||||
case $mod in
|
||||
'@'*)
|
||||
msg "- Found mod: $mod"
|
||||
_modstring="$_modstring;mods/$mod"
|
||||
do_sync "$MOD_CACHE/$MAP_FOLDER_NAME/$mod"/ "$SERVER_HOME/mods/$mod"
|
||||
|
||||
for addon_folder in addons Addons addon Addon ; do
|
||||
if [ -d "$SERVER_HOME/mods/$mod/$addon_folder" ] ; then
|
||||
for addon in "$SERVER_HOME/mods/$mod/$addon_folder"/* ; do
|
||||
if [ ! -f "$SERVER_HOME/addons/${addon##*/}" ] ; then
|
||||
cp -f "$addon" "$SERVER_HOME/addons/"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
for key_folder in keys Keys key Key ; do
|
||||
if [ -d "$SERVER_HOME/mods/$mod/$key_folder" ] ; then
|
||||
for key in "$SERVER_HOME/mods/$mod/$key_folder"/* ; do
|
||||
if [ ! -f "$SERVER_HOME/keys/${key##*/}" ] ; then
|
||||
cp -f "$key" "$SERVER_HOME/keys/"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
done
|
||||
esac
|
||||
done < "$MOD_CACHE/$MAP_FOLDER_NAME/mods.txt"
|
||||
|
||||
# trim the initial leading ';'
|
||||
_modstring=${_modstring#;}
|
||||
printf '%s\n' "$_modstring" > .modstring
|
||||
}
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# Load Map
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
load_stock_map_data() {
|
||||
mkdir -p "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME"
|
||||
do_sync --exclude='*storage_1*' \
|
||||
"$DAYZ_FILES/stock/maps/$MAP_FOLDER_NAME"/ \
|
||||
"$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME" || \
|
||||
die "Failed to copy stock map data"
|
||||
}
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# Types Patching
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
patch_types() {
|
||||
|
||||
if [ ! -f "$DAYZ_FILES/server_configs/types/default_types_to_delete.txt" ] ; then
|
||||
die "CANNOT REACH FILE: default_types_to_delete.txt"
|
||||
fi
|
||||
|
||||
# deletes
|
||||
while read -r line ; do
|
||||
case "$line" in
|
||||
'#'*|' '*|'')
|
||||
;;
|
||||
*)
|
||||
debug "TYPES -- deleting object: $line"
|
||||
xmlstarlet ed -L -P -d "//types/type[@name=\"$line\"]" \
|
||||
"$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/db/types.xml"
|
||||
esac
|
||||
done < "$DAYZ_FILES/server_configs/types/default_types_to_delete.txt"
|
||||
|
||||
# copy types edit tool
|
||||
if [ -f "$DAYZ_FILES/scripts/adjust_type.sh" ] ; then
|
||||
cp -f "$DAYZ_FILES/scripts/adjust_type.sh" "$SERVER_HOME"/
|
||||
else
|
||||
die "Could not find adjust_type.sh"
|
||||
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"/
|
||||
|
||||
cd "$SERVER_HOME" || die "could not cd to $SERVER_HOME"
|
||||
|
||||
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
|
||||
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<ce folder="db">\n<file name="customtypes/%s" type="types" />\n</ce>\n\n' "${xml##*/}" \
|
||||
>> "$CFG_ECORE"
|
||||
|
||||
printf '%s\n' '</economycore>' >> "$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' '</spawnabletypes>' >> "$CFG_SPAWNABLE_TYPES"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# Configs
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
load_configs() {
|
||||
msg "Loading server configs"
|
||||
|
||||
if [ -d "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME" ] ; then
|
||||
|
||||
for xml in "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME"/*.xml ; do
|
||||
if [ -f "$xml" ] ; then
|
||||
debug "Found: $xml -- Copying."
|
||||
do_sync "$xml" "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/${xml##*/}" || \
|
||||
die "Failed to copy: ${xml##*/}"
|
||||
fi
|
||||
done
|
||||
|
||||
for json in "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME"/*.json ; do
|
||||
if [ -f "$json" ] ; then
|
||||
debug "Found: $json -- Copying."
|
||||
do_sync "$json" "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/${json##*/}" || \
|
||||
die "Failed to copy: ${json##*/}"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -f "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/init.c" ] ; then
|
||||
debug "Found: init.c -- Copying."
|
||||
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"
|
||||
fi
|
||||
|
||||
if [ -f "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/areaflags.map" ] ; then
|
||||
debug "Found: areaflags.map -- Copying."
|
||||
do_sync \
|
||||
"$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/areaflags.map" \
|
||||
"$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/areaflags.map" || \
|
||||
die "failed to copy areaflags.map"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
if [ -d "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/db" ] ; then
|
||||
for xml in "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/db"/*.xml ; do
|
||||
if [ -f "$xml" ] ; then
|
||||
debug "Found: $xml -- Copying."
|
||||
do_sync "$xml" "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/db/${xml##*/}" || \
|
||||
die "Failed to copy: ${xml##*/}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [ -d "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/env" ] ; then
|
||||
for xml in "$DAYZ_FILES/server_configs/mpmissions/$MAP_FOLDER_NAME/env"/*.xml ; do
|
||||
if [ -f "$xml" ] ; then
|
||||
debug "Found: $xml -- Copying."
|
||||
do_sync "$xml" "$SERVER_HOME/mpmissions/$MAP_FOLDER_NAME/env/${xml##*/}" || \
|
||||
die "Failed to copy: ${xml##*/}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
msg "Copying generic Profilesfolder configs"
|
||||
if [ -d "$DAYZ_FILES/server_configs/Profilesfolder/sUDE/config" ] ; then
|
||||
mkdir -p "$SERVER_HOME/Profilesfolder/sUDE/config"
|
||||
cp -f "$DAYZ_FILES/server_configs/Profilesfolder/sUDE/config"/* "$SERVER_HOME/Profilesfolder/sUDE/config"/
|
||||
else
|
||||
die "missing: $DAYZ_FILES/server_configs/Profilesfolder/sUDE/config"
|
||||
fi
|
||||
}
|
||||
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
# Main
|
||||
# -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
|
||||
main() {
|
||||
init
|
||||
cd "$SERVER_HOME" || die "Could not cd to '$SERVER_HOME'"
|
||||
|
||||
check || die "Failed check"
|
||||
|
||||
msg "Setting up environment"
|
||||
setup_environment || die "Could not set up environment."
|
||||
|
||||
msg "Loading mods"
|
||||
load_mods || die "Could not load mods"
|
||||
mod_string=$(cat .modstring)
|
||||
|
||||
msg "Loading stock map data"
|
||||
load_stock_map_data || die "Could not load map"
|
||||
|
||||
msg "Patching types.xml"
|
||||
patch_types || die "Failed to patch types"
|
||||
|
||||
msg "Copying server configs"
|
||||
load_configs || die "Failed to load configs"
|
||||
|
||||
msg "Creating custom types list"
|
||||
load_customtypes || die "Failed to load custom types"
|
||||
|
||||
echo '===================================='
|
||||
printf '%s - Server started.\n' "$(date)"
|
||||
echo '===================================='
|
||||
|
||||
# creating temp.bat here to avoid the arg max char limit of windows cmd.exe
|
||||
cat > temp.bat <<EOF
|
||||
:start
|
||||
start "DayZ Server" /min DZSALModServer.exe -config=serverDZ.cfg -port="$SERVER_PORT" -profiles=Profilesfolder -mod="$mod_string" -cpuCount="$SERVER_CPU" -dologs -adminlog -netlog -freezecheck
|
||||
EOF
|
||||
cmd.exe /C temp.bat
|
||||
|
||||
printf '\n**** Sleeping for: %s *****\n\n' "$RESTART_INTERVAL"
|
||||
count=0
|
||||
while [ "$count" -lt "$RESTART_INTERVAL" ] ; do
|
||||
sleep 60
|
||||
count=$((count + 60))
|
||||
msg "TIME LEFT BEFORE RESTART: $(( (RESTART_INTERVAL - count) / 60 )) minutes"
|
||||
done
|
||||
|
||||
echo "==========================="
|
||||
|
||||
msg "Time up"
|
||||
msg "Killing server"
|
||||
cmd.exe /C taskkill /im DayZServer_x64.exe /F
|
||||
rm -f temp.bat 2>/dev/null ||:
|
||||
|
||||
msg "Sleeping 10 seconds to settle"
|
||||
sleep 10
|
||||
msg "SERVER IS RESTARTING"
|
||||
}
|
||||
|
||||
ORIGINAL_DIR="$PWD"
|
||||
|
||||
while msg 'Starting loop' ; do
|
||||
cd "$ORIGINAL_DIR" || die "Can no longer cd to $ORIGINAL_DIR"
|
||||
|
||||
if [ -e ./SERVER.ENV ] ; then
|
||||
. ./SERVER.ENV
|
||||
else
|
||||
die "Could not source ./SERVER.ENV"
|
||||
fi
|
||||
|
||||
if [ -f ./serverDZ.cfg ] ; then
|
||||
cp -f ./serverDZ.cfg "$SERVER_HOME"/
|
||||
else
|
||||
die "Could not find ./serverDZ.cfg"
|
||||
fi
|
||||
|
||||
main "$@"
|
||||
done
|
||||
Reference in New Issue
Block a user