| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- #!/bin/bash
- # LGSM command_fastdl function
- # Author: Daniel Gibbs
- # Contributor: UltimateByte
- # Website: http://gameservermanagers.com
- lgsm_version="190216"
- # Description: Creates a FastDL folder
- local modulename="FastDL Creator"
- function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
- check.sh
- # Directories
- fastdldir="${rootdir}/fastdl"
- # Server lua autorun dir, used to autorun lua on client connect to the server
- luasvautorundir="${systemdir}/lua/audoturn/server"
- luafastdlfile="lgsm_cl_force_fastdl.lua"
- luafastdlfullpath="${luasvautorundir}/${luafastdlfile}"
- fn_fastdl_init(){
- # User confirmation for starting process
- echo "Generate a FastDL Folder ?"
- while true; do
- read -p "Continue? [y/N]" yn
- case $yn in
- [Yy]* ) break;;
- [Nn]* ) exit;;
- * ) echo "Please answer yes or no.";;
- esac
- done
- # Create FastDL folder if it doesn't exit
- if [ ! -d "${fastdldir}" ]; then
- echo "Creating FastDL directory"
- mkdir -v "${fastdldir}"
- sleep 1
- else
- echo "Updating FastDL..."
- fi
- # Ask for lua resource add file use
- echo "Do you wish to use a lua file to force clients to download FastDL content ?"
- echo "It can be necessary for addons devs that forgot about registering their files to be downloaded through FastDL"
- while true; do
- read -p "Continue? [y/n]" yn
- case $yn in
- [Yy]* ) luaressource="on"; break;;
- [Nn]* ) luaressource="off"; return 1;;
- * ) echo "Please answer yes or no.";;
- esac
- done
- }
- fn_gmod_fastdl(){
- # Copy all needed files for fastDL
- echo "Gathering all needed FastDL files..."
- sleep 1
- cd "${systemdir}"
- # Map Files
- echo "Copying map files"
- sleep 1
- find . -name '*.bsp' | cpio -updm "${fastdldir}"
- echo "Done"
- sleep 1
- # Materials
- echo "Copying Materials"
- sleep 1
- find . -name '*.vtf' | cpio -updm "${fastdldir}"
- find . -name '*.vmt' | cpio -updm "${fastdldir}"
- echo "Done"
- sleep 1
- # Models
- echo "Copying Models"
- sleep 1
- find . -name '*.vtx' | cpio -updm "${fastdldir}"
- find . -name '*.vvd' | cpio -updm "${fastdldir}"
- find . -name '*.mdl' | cpio -updm "${fastdldir}"
- find . -name '*.phy' | cpio -updm "${fastdldir}"
- echo "Done"
- sleep 1
- # Particles
- echo "Copying Particles"
- sleep 1
- find . -name '*.pcf' | cpio -updm "${fastdldir}"
- echo "Done"
- sleep 1
- # Sounds
- echo "Copying Sounds"
- sleep 1
- find . -name '*.wav' | cpio -updm "${fastdldir}"
- find . -name '*.mp3' | cpio -updm "${fastdldir}"
- find . -name '*.ogg' | cpio -updm "${fastdldir}"
- echo "Done"
- sleep 1
- # Resources (mostly fonts)
- echo "Copying fonts and png"
- sleep 1
- find . -name '*.otf' | cpio -updm "${fastdldir}"
- find . -name '*.ttf' | cpio -updm "${fastdldir}"
- find . -name '*.png' | cpio -updm "${fastdldir}"
- echo "Done"
- sleep 1
- # Going back to scriptfolder to avoid mistakes
- cd ${rootdir}
- # Correct addons folder structure
- if [ -d "${fastdldir}/addons" ]; then
- echo "Possible FastDL files found into addons"
- echo "Moving those files to their correct folder"
- sleep 2
- cp -Rf ${fastdldir}/addons/*/* "${fastdldir}"
- rm -R "${fastdldir}/addons"
- echo "Done"
- sleep 1
- fi
- # Correct content that may be into a lua folder by mistake like some darkrpmodification addons
- if [ -d "${fastdldir}/lua" ]; then
- echo "Some FastDL files (often addons in darkrpmodifications) may be in the wrong folder"
- sleep 1
- echo "Copying those files to their hopefully correct locations"
- sleep 1
- cp -Rf "${fastdldir}/lua/"* "${fastdldir}"
- echo "Done"
- sleep 1
- fi
- }
- # bzip2 compression
- fn_check_bzip2(){
- # Returns true if not installed
- if [ -z "$(command -v bzip2)" ]; then
- bzip2installed="0"
- echo "WARNING bzip2 packed is not installed !"
- sleep 2
- echo "You can't compress your FastDL files !"
- sleep 2
- echo "Loading time won't be as good as possible for your players."
- sleep 2
- echo "It's advised that your install bzip2 and re-run the fastdl command."
- sleep 3
- else
- bzip2installed="1"
- fi
- }
- fn_fastdl_bzip2(){
- echo "Do you want to compress files using bzip2 for even faster client download ?"
- echo "It may take a while..."
- while true; do
- read -p "Continue? [y/N]" yn
- case $yn in
- [Yy]* ) break;;
- [Nn]* ) exit;;
- * ) echo "Please answer yes or no.";;
- esac
- done
- echo "Compressing files using bzip2..."
- sleep 2
- # bzip2 all files that are not already compressed (keeping original files)
- find "${fastdldir}" -not -name \*.bz2 -exec bzip2 -k \{\} \;
- echo "bzip2 compression done"
- sleep 1
- }
- # Function to implement
- fn_lua_fastdl(){
- if [ luaressource="off" == "on" ]; then
- if [ -f "${luafastdlfullpath}" ]; then
- echo "Removing "
- }
- fn_fastdl_completed(){
- echo "----------------------------------"
- echo "Congratulations, it's done"
- echo "Now you should configure your HTTP server to target the fastdl folder that was created"
- echo "Or copy files to an external server"
- echo "Don't forget to change your sv_downloadurl accordingly in ${servercfgfullpath}"
- if [ "$bzip2installed" == "0" ]; then
- echo "By the way, you'd better install bzip2 an re-run this command"
- fi
- echo "----------------------------------"
- exit
- }
- # Game checking
- # Garry's Mod
- if [ "${gamename}" == "Garry's Mod" ]; then
- fn_fastdl_init
- fn_gmod_fastdl
- fn_check_bzip2
- if [ "${bzip2installed}" == "1" ]; then
- fn_fastdl_bzip2
- fi
- fn_lua_fastdl
- fn_fastdl_completed
- exit
- fi
|