1 changed files with 209 additions and 0 deletions
@ -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 |
Loading…
Reference in new issue