|
|
@@ -0,0 +1,209 @@
|
|
|
+#!/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
|