gameservergame-servergame-servershacktoberfestdedicated-game-serversgamelinuxgsmserverbashgaminglinuxmultiplayer-game-servershell
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.3 KiB
80 lines
2.3 KiB
#!/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
|
|
|