#!/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