127 lines
3.6 KiB
Bash
127 lines
3.6 KiB
Bash
#!/bin/sh
|
|
|
|
# DAYZ_GAME_ID=221100
|
|
# DAYZ_SERVER_ID=223350
|
|
# STEAM_USER="yzaddayz"
|
|
|
|
# LOCAL_MODS_DIR="${HOME}/.steam/debian-installation/steamapps/workshop/content/$DAYZ_GAME_ID"
|
|
# 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 "$@"
|