|
|
@@ -0,0 +1,80 @@
|
|
|
+#!/bin/bash
|
|
|
+# LinuxGSM compress_unreal_maps.sh module
|
|
|
+# Author: Daniel Gibbs
|
|
|
+# Contributors: https://linuxgsm.com/contrib
|
|
|
+# Website: https://linuxgsm.com
|
|
|
+# Description: Compresses unreal and unreal2 resources.
|
|
|
+
|
|
|
+commandname="MAP-COMPRESSOR"
|
|
|
+commandaction="Compressing Maps"
|
|
|
+moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
|
|
|
+fn_firstcommand_set
|
|
|
+
|
|
|
+check.sh
|
|
|
+fn_print_header
|
|
|
+echo -e "Will compress all maps in:"
|
|
|
+echo -e ""
|
|
|
+pwd
|
|
|
+echo -e ""
|
|
|
+echo -e "Compressed maps saved to:"
|
|
|
+echo -e ""
|
|
|
+echo -e "${compressedmapsdir}"
|
|
|
+echo -e ""
|
|
|
+totalseconds=3
|
|
|
+for seconds in {3..1}; do
|
|
|
+ fn_print_warn "map compression starting in: ${totalseconds}"
|
|
|
+ totalseconds=$((totalseconds - 1))
|
|
|
+ fn_sleep_time_1
|
|
|
+ if [ "${seconds}" == "0" ]; then
|
|
|
+ break
|
|
|
+ fi
|
|
|
+done
|
|
|
+fn_print_nl
|
|
|
+mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1
|
|
|
+
|
|
|
+# List of extensions to compress
|
|
|
+exts=(ut2 kfm rom u ucl upl int utx uax ukx usx unr umx umod uzx)
|
|
|
+
|
|
|
+# Remove old compressed files using find
|
|
|
+for ext in "${exts[@]}"; do
|
|
|
+ mapfile -t oldfiles < <(find "${serverfiles}" -name "*.${ext}.uz2" -type f)
|
|
|
+ if [ ${#oldfiles[@]} -gt 0 ]; then
|
|
|
+ echo -e "found ${#oldfiles[@]} old compressed file(s) to remove for extension: ${ext}"
|
|
|
+ fi
|
|
|
+ for file in "${oldfiles[@]}"; do
|
|
|
+ if rm -f "$file"; then
|
|
|
+ echo -en "removing file [ ${italic}$(basename "$file")${default} ]\c"
|
|
|
+ fn_print_ok_eol_nl
|
|
|
+ else
|
|
|
+ echo -en "removing file [ ${italic}$(basename "$file")${default} ]\c"
|
|
|
+ fn_print_fail_eol_nl
|
|
|
+ fi
|
|
|
+ done
|
|
|
+done
|
|
|
+
|
|
|
+cd "${systemdir}" || exit
|
|
|
+
|
|
|
+# Find and compress files, then move .uz2 to compressedmapsdir
|
|
|
+for ext in "${exts[@]}"; do
|
|
|
+ # Collect all files with the current extension into an array
|
|
|
+ mapfile -t files < <(find "${serverfiles}" -name "*.${ext}" -type f)
|
|
|
+ for file in "${files[@]}"; do
|
|
|
+ echo -en "compressing file [ ${italic}$(basename "$file") -> $(basename "$file").uz2${default} ]\c"
|
|
|
+ if ! ./ucc-bin compress "${file}" --nohomedir > /dev/null 2>&1; then
|
|
|
+ fn_print_fail_eol_nl
|
|
|
+ core_exit.sh
|
|
|
+ else
|
|
|
+ fn_print_ok_eol_nl
|
|
|
+ fi
|
|
|
+
|
|
|
+ if ! mv -f "${file}.uz2" "${compressedmapsdir}" > /dev/null 2>&1; then
|
|
|
+ echo -en "moving compressed file [ ${italic}$(basename "$file").uz2 -> ${compressedmapsdir}/$(basename "$file").uz2${default} ]\c"
|
|
|
+ fn_print_fail_eol_nl
|
|
|
+ core_exit.sh
|
|
|
+ fi
|
|
|
+ done
|
|
|
+done
|
|
|
+
|
|
|
+fn_print_ok_nl "Compression complete: All compressed files moved to: ${compressedmapsdir}"
|
|
|
+
|
|
|
+core_exit.sh
|