| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #!/bin/bash
- # LinuxGSM command_mods_install.sh module
- # Author: Daniel Gibbs
- # Contributors: https://linuxgsm.com/contrib
- # Website: https://linuxgsm.com
- # Description: List and installs available mods along with mods_list.sh and mods_core.sh.
- commandname="MODS-INSTALL"
- commandaction="Installing Mods"
- moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
- fn_firstcommand_set
- check.sh
- mods_core.sh
- fn_print_header
- # Displays a list of installed mods.
- fn_mods_installed_list
- if [ "${installedmodscount}" -gt "0" ]; then
- echo -e "Installed addons/mods"
- fn_messages_separator
- # Go through all available commands, get details and display them to the user.
- for ((llindex = 0; llindex < ${#installedmodslist[@]}; llindex++)); do
- # Current mod is the "llindex" value of the array we're going through.
- currentmod="${installedmodslist[llindex]}"
- fn_mod_get_info
- # Display mod info to the user.
- echo -e " * ${green}${modcommand}${default}${default}"
- done
- echo -e ""
- fi
- echo -e "Available addons/mods"
- fn_messages_separator
- # Display available mods from mods_list.sh.
- # Set and reset vars
- compatiblemodslistindex=0
- # 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 "${displayedmodname} - ${displayedmoddescription} - ${displayedmodsite}"
- echo -e " * ${cyan}${displayedmodcommand}${default}"
- # Increment index from the amount of values we just displayed.
- let "compatiblemodslistindex+=4"
- ((totalmodsavailable++))
- done
- # If no mods are available for a specific game.
- if [ -z "${compatiblemodslist}" ]; then
- fn_print_fail_nl "No mods are currently available for ${gamename}."
- fn_script_log_info "No mods are currently available for ${gamename}."
- core_exit.sh
- fi
- fn_script_log_info "${totalmodsavailable} addons/mods are available for install"
- ## User selects a mod.
- echo -e ""
- while [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; do
- echo -en "Enter an ${cyan}addon/mod${default} to ${green}install${default} (or exit to abort): "
- read -r usermodselect
- # Exit if user says exit or abort.
- if [ "${usermodselect}" == "exit" ] || [ "${usermodselect}" == "abort" ]; then
- core_exit.sh
- # Supplementary output upon invalid user input.
- elif [[ ! " ${availablemodscommands[@]} " =~ " ${usermodselect} " ]]; then
- fn_print_error2_nl "${usermodselect} is not a valid addon/mod."
- fi
- done
- # Get mod info.
- currentmod="${usermodselect}"
- fn_mod_get_info
- echo -e ""
- echo -e "Installing ${modprettyname}"
- fn_messages_separator
- fn_script_log_info "${modprettyname} selected for install"
- # Check if the mod is already installed and warn the user.
- if [ -f "${modsinstalledlistfullpath}" ]; then
- if [ "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then
- fn_print_warning_nl "${modprettyname} is already installed"
- fn_script_log_warn "${modprettyname} is already installed"
- echo -e " * Any configs may be overwritten."
- if ! fn_prompt_yn "Continue?" Y; then
- core_exit.sh
- fi
- fn_script_log_info "User selected to continue"
- fi
- fi
- ## Installation.
- # If amxmodx check if metamod exists first
- if [ "${modcommand}" == "amxmodx" ]; then
- fn_mod_exist "metamod"
- fi
- if [ "${modcommand}" == "amxmodxcs" ] \
- || [ "${modcommand}" == "amxmodxdod" ] \
- || [ "${modcommand}" == "amxmodxtfc" ] \
- || [ "${modcommand}" == "amxmodxns" ] \
- || [ "${modcommand}" == "amxmodxts" ]; then
- fn_mod_exist "amxmodx"
- fi
- fn_create_mods_dir
- fn_mods_clear_tmp_dir
- fn_mods_create_tmp_dir
- fn_mod_install_files
- fn_mod_lowercase
- fn_mod_create_filelist
- fn_mod_copy_destination
- fn_mod_add_list
- fn_mod_tidy_files_list
- fn_mods_clear_tmp_dir
- # Create/modify existing liblist.gam file for Metamod
- if [ "${modcommand}" == "metamod" ]; then
- fn_mod_install_liblist_gam_file
- fi
- # Create/modify plugins.ini file for Metamod
- if [ "${modcommand}" == "amxmodx" ]; then
- fn_mod_install_amxmodx_file
- fi
- echo -e "${modprettyname} installed"
- fn_script_log_pass "${modprettyname} installed."
- core_exit.sh
|