add module functionality, untested

This commit is contained in:
Deckard
2025-10-04 20:44:07 -04:00
parent f51d8554ab
commit 8b2eeff3fd
10 changed files with 1588 additions and 1488 deletions

290
scripts/configure-modules.sh Executable file
View File

@@ -0,0 +1,290 @@
#!/bin/bash
# ==============================================
# AzerothCore Module Configuration Script
# ==============================================
# Handles post-installation configuration that requires manual setup beyond Docker automation
set -e
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
MAGENTA='\033[0;35m'
NC='\033[0m' # No Color
# Function to print colored output
print_status() {
local status=$1
local message=$2
case $status in
"INFO")
echo -e "${BLUE} ${message}${NC}"
;;
"SUCCESS")
echo -e "${GREEN}${message}${NC}"
;;
"WARNING")
echo -e "${YELLOW}⚠️ ${message}${NC}"
;;
"ERROR")
echo -e "${RED}${message}${NC}"
;;
"HEADER")
echo -e "\n${MAGENTA}=== ${message} ===${NC}"
;;
"CRITICAL")
echo -e "${RED}🚨 CRITICAL: ${message}${NC}"
;;
esac
}
# Load environment variables
if [ -f "docker-compose-azerothcore-services.env" ]; then
source docker-compose-azerothcore-services.env
else
print_status "ERROR" "Environment file not found. Run from acore-compose directory."
exit 1
fi
print_status "HEADER" "AZEROTHCORE MODULE CONFIGURATION ANALYSIS"
echo "This script analyzes your enabled modules and identifies manual configuration requirements."
echo ""
# Check which modules are enabled
ENABLED_MODULES=()
[ "$MODULE_PLAYERBOTS" = "1" ] && ENABLED_MODULES+=("PLAYERBOTS")
[ "$MODULE_AOE_LOOT" = "1" ] && ENABLED_MODULES+=("AOE_LOOT")
[ "$MODULE_LEARN_SPELLS" = "1" ] && ENABLED_MODULES+=("LEARN_SPELLS")
[ "$MODULE_FIREWORKS" = "1" ] && ENABLED_MODULES+=("FIREWORKS")
[ "$MODULE_INDIVIDUAL_PROGRESSION" = "1" ] && ENABLED_MODULES+=("INDIVIDUAL_PROGRESSION")
[ "$MODULE_TRANSMOG" = "1" ] && ENABLED_MODULES+=("TRANSMOG")
[ "$MODULE_SOLO_LFG" = "1" ] && ENABLED_MODULES+=("SOLO_LFG")
[ "$MODULE_ELUNA" = "1" ] && ENABLED_MODULES+=("ELUNA")
[ "$MODULE_ARAC" = "1" ] && ENABLED_MODULES+=("ARAC")
[ "$MODULE_NPC_ENCHANTER" = "1" ] && ENABLED_MODULES+=("NPC_ENCHANTER")
[ "$MODULE_ASSISTANT" = "1" ] && ENABLED_MODULES+=("ASSISTANT")
[ "$MODULE_REAGENT_BANK" = "1" ] && ENABLED_MODULES+=("REAGENT_BANK")
[ "$MODULE_BLACK_MARKET_AUCTION_HOUSE" = "1" ] && ENABLED_MODULES+=("BLACK_MARKET")
print_status "INFO" "Found ${#ENABLED_MODULES[@]} enabled modules: ${ENABLED_MODULES[*]}"
echo ""
# Critical Compatibility Issues
print_status "HEADER" "CRITICAL COMPATIBILITY ISSUES"
if [[ " ${ENABLED_MODULES[*]} " =~ " PLAYERBOTS " ]]; then
print_status "CRITICAL" "mod-playerbots REQUIRES CUSTOM AZEROTHCORE BRANCH"
echo " 🔗 Required: liyunfan1223/azerothcore-wotlk/tree/Playerbot"
echo " ❌ Current: Standard AzerothCore (INCOMPATIBLE)"
echo " 📋 Action: Switch to Playerbot branch OR disable MODULE_PLAYERBOTS"
echo ""
fi
# Client-Side Requirements
print_status "HEADER" "CLIENT-SIDE PATCH REQUIREMENTS"
CLIENT_PATCHES_NEEDED=false
if [[ " ${ENABLED_MODULES[*]} " =~ " INDIVIDUAL_PROGRESSION " ]]; then
print_status "WARNING" "mod-individual-progression requires CLIENT PATCHES"
echo " 📁 Location: ${STORAGE_PATH}/modules/mod-individual-progression/optional/"
echo " 📦 Required: patch-V.mpq (Vanilla crafting/recipes)"
echo " 📦 Optional: patch-J.mpq (Vanilla login screen)"
echo " 📦 Optional: patch-U.mpq (Vanilla loading screens)"
echo " 🎯 Install: Copy to client WoW/Data/ directory"
CLIENT_PATCHES_NEEDED=true
echo ""
fi
if [[ " ${ENABLED_MODULES[*]} " =~ " ARAC " ]]; then
print_status "WARNING" "mod-arac requires CLIENT PATCHES"
echo " 📦 Required: Patch-A.MPQ"
echo " 📁 Location: ${STORAGE_PATH}/modules/mod-arac/patch-contents/"
echo " 🎯 Install: Copy Patch-A.MPQ to client WoW/Data/ directory"
echo " 🔧 Server: DBC files automatically applied during module setup"
CLIENT_PATCHES_NEEDED=true
echo ""
fi
if [ "$CLIENT_PATCHES_NEEDED" = true ]; then
print_status "INFO" "Client patches must be distributed manually to all players"
fi
# Critical Server Configuration Requirements
print_status "HEADER" "CRITICAL SERVER CONFIGURATION"
CONFIG_CHANGES_NEEDED=false
if [[ " ${ENABLED_MODULES[*]} " =~ " INDIVIDUAL_PROGRESSION " ]]; then
print_status "CRITICAL" "mod-individual-progression requires worldserver.conf changes"
echo " ⚙️ Required: EnablePlayerSettings = 1"
echo " ⚙️ Required: DBC.EnforceItemAttributes = 0"
echo " 📁 File: ${STORAGE_PATH}/config/worldserver.conf"
CONFIG_CHANGES_NEEDED=true
echo ""
fi
if [[ " ${ENABLED_MODULES[*]} " =~ " AOE_LOOT " ]]; then
print_status "WARNING" "mod-aoe-loot requires worldserver.conf optimization"
echo " ⚙️ Required: Rate.Corpse.Decay.Looted = 0.01 (default: 0.5)"
echo " 📁 File: ${STORAGE_PATH}/config/worldserver.conf"
CONFIG_CHANGES_NEEDED=true
echo ""
fi
# Manual NPC Spawning Requirements
print_status "HEADER" "MANUAL NPC SPAWNING REQUIRED"
NPC_SPAWNING_NEEDED=false
if [[ " ${ENABLED_MODULES[*]} " =~ " TRANSMOG " ]]; then
print_status "INFO" "mod-transmog requires NPC spawning"
echo " 🤖 Command: .npc add 190010"
echo " 📍 Location: Spawn in major cities (Stormwind, Orgrimmar, etc.)"
NPC_SPAWNING_NEEDED=true
echo ""
fi
if [[ " ${ENABLED_MODULES[*]} " =~ " NPC_ENCHANTER " ]]; then
print_status "INFO" "mod-npc-enchanter requires NPC spawning"
echo " 🤖 Command: .npc add [enchanter_id]"
echo " 📍 Location: Spawn in major cities"
NPC_SPAWNING_NEEDED=true
echo ""
fi
if [[ " ${ENABLED_MODULES[*]} " =~ " REAGENT_BANK " ]]; then
print_status "INFO" "mod-reagent-bank requires NPC spawning"
echo " 🤖 Command: .npc add 290011"
echo " 📍 Location: Spawn in major cities"
NPC_SPAWNING_NEEDED=true
echo ""
fi
if [ "$NPC_SPAWNING_NEEDED" = true ]; then
print_status "INFO" "Use GM account with level 3 permissions to spawn NPCs"
fi
# Configuration File Management
print_status "HEADER" "CONFIGURATION FILE SETUP"
echo "Module configuration files are automatically copied during container startup:"
echo ""
for module in "${ENABLED_MODULES[@]}"; do
case $module in
"PLAYERBOTS")
echo " 📝 playerbots.conf - Bot behavior, RandomBot settings"
;;
"AOE_LOOT")
echo " 📝 mod_aoe_loot.conf - Loot range, group settings"
;;
"LEARN_SPELLS")
echo " 📝 mod_learnspells.conf - Auto-learn behavior"
;;
"FIREWORKS")
echo " 📝 mod_fireworks.conf - Level-up effects"
;;
"INDIVIDUAL_PROGRESSION")
echo " 📝 individual_progression.conf - Era progression settings"
;;
"TRANSMOG")
echo " 📝 transmog.conf - Transmogrification rules"
;;
"SOLO_LFG")
echo " 📝 SoloLfg.conf - Solo dungeon finder settings"
;;
"ELUNA")
echo " 📝 mod_LuaEngine.conf - Lua scripting engine"
;;
*)
;;
esac
done
# Database Backup Recommendation
print_status "HEADER" "DATABASE BACKUP RECOMMENDATION"
if [[ " ${ENABLED_MODULES[*]} " =~ " ARAC " ]] || [[ " ${ENABLED_MODULES[*]} " =~ " INDIVIDUAL_PROGRESSION " ]]; then
print_status "CRITICAL" "Database backup STRONGLY RECOMMENDED"
echo " 💾 Modules modify core database tables"
echo " 🔄 Backup command: docker exec ac-mysql mysqldump -u root -p\${MYSQL_ROOT_PASSWORD} --all-databases > backup.sql"
echo ""
fi
# Performance Considerations
print_status "HEADER" "PERFORMANCE CONSIDERATIONS"
if [[ " ${ENABLED_MODULES[*]} " =~ " PLAYERBOTS " ]]; then
print_status "WARNING" "mod-playerbots can significantly impact server performance"
echo " 🤖 Default: 500 RandomBots (MinRandomBots/MaxRandomBots)"
echo " 💡 Recommendation: Start with lower numbers and scale up"
echo " 📊 Monitor: CPU usage, memory consumption, database load"
echo ""
fi
if [[ " ${ENABLED_MODULES[*]} " =~ " ELUNA " ]]; then
print_status "INFO" "mod-eluna performance depends on Lua script complexity"
echo " 📜 Complex scripts can impact server performance"
echo " 🔍 Monitor script execution times"
echo ""
fi
# Eluna Lua Scripting Setup
if [[ " ${ENABLED_MODULES[*]} " =~ " ELUNA " ]]; then
print_status "HEADER" "ELUNA LUA SCRIPTING REQUIREMENTS"
if [ -d "${STORAGE_PATH}/lua_scripts" ]; then
print_status "SUCCESS" "Lua scripts directory exists: ${STORAGE_PATH}/lua_scripts"
SCRIPT_COUNT=$(find "${STORAGE_PATH}/lua_scripts" -name "*.lua" 2>/dev/null | wc -l)
print_status "INFO" "Found $SCRIPT_COUNT Lua script(s)"
else
print_status "WARNING" "Lua scripts directory missing: ${STORAGE_PATH}/lua_scripts"
print_status "INFO" "Run ./scripts/setup-eluna.sh to create directory and example scripts"
fi
print_status "INFO" "Eluna Script Management:"
echo " 🔄 Reload scripts: .reload eluna"
echo " 📁 Script location: ${STORAGE_PATH}/lua_scripts"
echo " ⚠️ Compatibility: AzerothCore mod-eluna only (NOT standard Eluna)"
echo " 📋 Requirements: English DBC files recommended"
echo ""
fi
# Summary and Next Steps
print_status "HEADER" "SUMMARY AND NEXT STEPS"
echo "📋 REQUIRED MANUAL ACTIONS:"
echo ""
if [[ " ${ENABLED_MODULES[*]} " =~ " PLAYERBOTS " ]]; then
echo "1. 🔧 CRITICAL: Switch to Playerbot AzerothCore branch OR disable MODULE_PLAYERBOTS"
fi
if [ "$CONFIG_CHANGES_NEEDED" = true ]; then
echo "2. ⚙️ Edit worldserver.conf with required settings (see above)"
fi
if [ "$CLIENT_PATCHES_NEEDED" = true ]; then
echo "3. 📦 Distribute client patches to all players"
fi
if [ "$NPC_SPAWNING_NEEDED" = true ]; then
echo "4. 🤖 Spawn required NPCs using GM commands"
fi
echo ""
echo "📖 RECOMMENDED ORDER:"
echo " 1. Complete server configuration changes"
echo " 2. Rebuild containers with: ./scripts/rebuild-with-modules.sh"
echo " 3. Test in development environment first"
echo " 4. Create GM account and spawn NPCs"
echo " 5. Distribute client patches to players"
echo " 6. Monitor performance and adjust settings as needed"
echo ""
print_status "SUCCESS" "Module configuration analysis complete!"
print_status "INFO" "Review all CRITICAL and WARNING items before deploying to production"