|
@@ -77,201 +77,4 @@ fn_mods_scrape_urls(){
|
|
|
sourcemodurl="${sourcemodfasterurl}/${sourcemodlatestfile}"
|
|
sourcemodurl="${sourcemodfasterurl}/${sourcemodlatestfile}"
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-# Sets some gsm requirements
|
|
|
|
|
-fn_gsm_requirements(){
|
|
|
|
|
- # If tmpdir variable doesn't exist, LGSM is too old
|
|
|
|
|
- if [ -z "${tmpdir}" ]||[ -z "${lgsmdir}" ]; then
|
|
|
|
|
- fn_print_fail "Your LGSM version is too old."
|
|
|
|
|
- echo " * Please do a full update, including ${selfname} script."
|
|
|
|
|
- core_exit.sh
|
|
|
|
|
- fi
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-# Define all variables from a mod at once when index is set to a separator
|
|
|
|
|
-fn_mod_info(){
|
|
|
|
|
-# If for some reason no index is set, none of this can work
|
|
|
|
|
-if [ -z "$index" ]; then
|
|
|
|
|
- fn_print_error "index variable not set. Please report an issue to LGSM Team."
|
|
|
|
|
- echo "* https://github.com/GameServerManagers/LinuxGSM/issues"
|
|
|
|
|
- core_exit.sh
|
|
|
|
|
-fi
|
|
|
|
|
- modcommand="${mods_global_array[index+1]}"
|
|
|
|
|
- modprettyname="${mods_global_array[index+2]}"
|
|
|
|
|
- modurl="${mods_global_array[index+3]}"
|
|
|
|
|
- modfilename="${mods_global_array[index+4]}"
|
|
|
|
|
- modsubdirs="${mods_global_array[index+5]}"
|
|
|
|
|
- modlowercase="${mods_global_array[index+6]}"
|
|
|
|
|
- modinstalldir="${mods_global_array[index+7]}"
|
|
|
|
|
- modkeepfiles="${mods_global_array[index+8]}"
|
|
|
|
|
- modengines="${mods_global_array[index+9]}"
|
|
|
|
|
- modgames="${mods_global_array[index+10]}"
|
|
|
|
|
- modexcludegames="${mods_global_array[index+11]}"
|
|
|
|
|
- modsite="${mods_global_array[index+12]}"
|
|
|
|
|
- moddescription="${mods_global_array[index+13]}"
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-# Find out if a game is compatible with a mod from a modgames (list of games supported by a mod) variable
|
|
|
|
|
-fn_compatible_mod_games(){
|
|
|
|
|
- # Reset test value
|
|
|
|
|
- modcompatiblegame="0"
|
|
|
|
|
- # If value is set to GAMES (ignore)
|
|
|
|
|
- if [ "${modgames}" != "GAMES" ]; then
|
|
|
|
|
- # How many games we need to test
|
|
|
|
|
- gamesamount="$(echo "${modgames}" | awk -F ';' '{ print NF }')"
|
|
|
|
|
- # Test all subvalue of "modgames" using the ";" separator
|
|
|
|
|
- for ((gamevarindex=1; gamevarindex < ${gamesamount}; gamevarindex++)); do
|
|
|
|
|
- # Put current game name into modtest variable
|
|
|
|
|
- gamemodtest="$( echo "${modgames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )"
|
|
|
|
|
- # If game name matches
|
|
|
|
|
- if [ "${gamemodtest}" == "${gamename}" ]; then
|
|
|
|
|
- # Mod is compatible !
|
|
|
|
|
- modcompatiblegame="1"
|
|
|
|
|
- fi
|
|
|
|
|
- done
|
|
|
|
|
- fi
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-# Find out if an engine is compatible with a mod from a modengines (list of engines supported by a mod) variable
|
|
|
|
|
-fn_compatible_mod_engines(){
|
|
|
|
|
- # Reset test value
|
|
|
|
|
- modcompatibleengine="0"
|
|
|
|
|
- # If value is set to ENGINES (ignore)
|
|
|
|
|
- if [ "${modengines}" != "ENGINES" ]; then
|
|
|
|
|
- # How many engines we need to test
|
|
|
|
|
- enginesamount="$(echo "${modengines}" | awk -F ';' '{ print NF }')"
|
|
|
|
|
- # Test all subvalue of "modengines" using the ";" separator
|
|
|
|
|
- for ((gamevarindex=1; gamevarindex < ${enginesamount}; gamevarindex++)); do
|
|
|
|
|
- # Put current engine name into modtest variable
|
|
|
|
|
- enginemodtest="$( echo "${modengines}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )"
|
|
|
|
|
- # If engine name matches
|
|
|
|
|
- if [ "${enginemodtest}" == "${engine}" ]; then
|
|
|
|
|
- # Mod is compatible !
|
|
|
|
|
- modcompatibleengine="1"
|
|
|
|
|
- fi
|
|
|
|
|
- done
|
|
|
|
|
- fi
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-# Find out if a game is not compatible with a mod from a modnotgames (list of games not supported by a mod) variable
|
|
|
|
|
-fn_not_compatible_mod_games(){
|
|
|
|
|
- # Reset test value
|
|
|
|
|
- modeincompatiblegame="0"
|
|
|
|
|
- # If value is set to NOTGAMES (ignore)
|
|
|
|
|
- if [ "${modexcludegames}" != "NOTGAMES" ]; then
|
|
|
|
|
- # How many engines we need to test
|
|
|
|
|
- excludegamesamount="$(echo "${modexcludegames}" | awk -F ';' '{ print NF }')"
|
|
|
|
|
- # Test all subvalue of "modexcludegames" using the ";" separator
|
|
|
|
|
- for ((gamevarindex=1; gamevarindex < ${excludegamesamount}; gamevarindex++)); do
|
|
|
|
|
- # Put current engine name into modtest variable
|
|
|
|
|
- excludegamemodtest="$( echo "${modexcludegames}" | awk -F ';' -v x=${gamevarindex} '{ print $x }' )"
|
|
|
|
|
- # If engine name matches
|
|
|
|
|
- if [ "${excludegamemodtest}" == "${gamename}" ]; then
|
|
|
|
|
- # Mod is compatible !
|
|
|
|
|
- modeincompatiblegame="1"
|
|
|
|
|
- fi
|
|
|
|
|
- done
|
|
|
|
|
- fi
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-# Sums up if a mod is compatible or not with modcompatibility=0/1
|
|
|
|
|
-fn_mod_compatible_test(){
|
|
|
|
|
- # Test game and engine compatibility
|
|
|
|
|
- fn_compatible_mod_games
|
|
|
|
|
- fn_compatible_mod_engines
|
|
|
|
|
- fn_not_compatible_mod_games
|
|
|
|
|
- if [ "${modeincompatiblegame}" == "1" ]; then
|
|
|
|
|
- modcompatibility="0"
|
|
|
|
|
- elif [ "${modcompatibleengine}" == "1" ]||[ "${modcompatiblegame}" == "1" ]; then
|
|
|
|
|
- modcompatibility="1"
|
|
|
|
|
- else
|
|
|
|
|
- modcompatibility="0"
|
|
|
|
|
- fi
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-# Checks if a mod is compatibile for installation
|
|
|
|
|
-# Provides available mods for installation
|
|
|
|
|
-# Provides commands for mods installation
|
|
|
|
|
-fn_mods_available(){
|
|
|
|
|
- # First, reset variables
|
|
|
|
|
- compatiblemodslist=()
|
|
|
|
|
- availablemodscommands=()
|
|
|
|
|
- modprettynamemaxlength="0"
|
|
|
|
|
- modsitemaxlength="0"
|
|
|
|
|
- moddescriptionmaxlength="0"
|
|
|
|
|
- modcommandmaxlength="0"
|
|
|
|
|
- # Find compatible games
|
|
|
|
|
- # Find separators through the global array
|
|
|
|
|
- for ((index="0"; index <= ${#mods_global_array[@]}; index++)); do
|
|
|
|
|
- # If current value is a separator; then
|
|
|
|
|
- if [ "${mods_global_array[index]}" == "${modseparator}" ]; then
|
|
|
|
|
- # Set mod variables
|
|
|
|
|
- fn_mod_info
|
|
|
|
|
- # Test if game is compatible
|
|
|
|
|
- fn_mod_compatible_test
|
|
|
|
|
- # If game is compatible
|
|
|
|
|
- if [ "${modcompatibility}" == "1" ]; then
|
|
|
|
|
- # Put it into the list to display to the user
|
|
|
|
|
- compatiblemodslist+=( "${modprettyname}" "${modcommand}" "${modsite}" "${moddescription}" )
|
|
|
|
|
- # Keep available commands in an array
|
|
|
|
|
- availablemodscommands+=( "${modcommand}" )
|
|
|
|
|
- fi
|
|
|
|
|
- fi
|
|
|
|
|
- done
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-# Output available mods in a nice way to the user
|
|
|
|
|
-fn_mods_show_available(){
|
|
|
|
|
- # Set and reset vars
|
|
|
|
|
- compatiblemodslistindex=0
|
|
|
|
|
- spaces=" "
|
|
|
|
|
- # As long as we're within index values
|
|
|
|
|
- while [ "${compatiblemodslistindex}" -lt "${#compatiblemodslist[@]}" ]; do
|
|
|
|
|
- # Set values for convenience
|
|
|
|
|
- displayedmodname="${compatiblemodslist[compatiblemodslistindex]}"
|
|
|
|
|
- displayedmodcommand="${compatiblemodslist[compatiblemodslistindex+1]}"
|
|
|
|
|
- displayedmodsite="${compatiblemodslist[compatiblemodslistindex+2]}"
|
|
|
|
|
- displayedmoddescription="${compatiblemodslist[compatiblemodslistindex+3]}"
|
|
|
|
|
- # Output mods to the user
|
|
|
|
|
- echo -e "\e[1m${displayedmodname}\e[0m - ${displayedmoddescription} - ${displayedmodsite}"
|
|
|
|
|
- echo -e " * \e[36m${displayedmodcommand}\e[0m"
|
|
|
|
|
- # Increment index from the amount of values we just displayed
|
|
|
|
|
- let "compatiblemodslistindex+=4"
|
|
|
|
|
- done
|
|
|
|
|
- # If no mods are found
|
|
|
|
|
- if [ -z "${compatiblemodslist}" ]; then
|
|
|
|
|
- fn_print_fail "No mods are currently available for ${gamename}."
|
|
|
|
|
- core_exit.sh
|
|
|
|
|
- fi
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-# Get details of a mod any (relevant and unique, such as full mod name or install command) value
|
|
|
|
|
-fn_mod_get_info_from_command(){
|
|
|
|
|
- # Variable to know when job is done
|
|
|
|
|
- modinfocommand="0"
|
|
|
|
|
- # Find entry in global array
|
|
|
|
|
- for ((index=0; index <= ${#mods_global_array[@]}; index++)); do
|
|
|
|
|
- # When entry is found
|
|
|
|
|
- if [ "${mods_global_array[index]}" == "${currentmod}" ]; then
|
|
|
|
|
- # Go back to the previous "MOD" separator
|
|
|
|
|
- for ((index=index; index <= ${#mods_global_array[@]}; index--)); do
|
|
|
|
|
- # When "MOD" is found
|
|
|
|
|
- if [ "${mods_global_array[index]}" == "MOD" ]; then
|
|
|
|
|
- # Get info
|
|
|
|
|
- fn_mod_info
|
|
|
|
|
- modinfocommand="1"
|
|
|
|
|
- break
|
|
|
|
|
- fi
|
|
|
|
|
- done
|
|
|
|
|
- fi
|
|
|
|
|
- # Exit the loop if job is done
|
|
|
|
|
- if [ "${modinfocommand}" == "1" ]; then
|
|
|
|
|
- break
|
|
|
|
|
- fi
|
|
|
|
|
- done
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-fn_gsm_requirements
|
|
|
|
|
fn_mods_scrape_urls
|
|
fn_mods_scrape_urls
|
|
|
-fn_mods_info
|
|
|
|
|
-fn_mods_available
|
|
|