fix: switching source to main fork

This commit is contained in:
uprightbass360
2025-10-31 02:03:23 -04:00
parent c5f6aa0f65
commit 718af64dae
7 changed files with 250 additions and 176 deletions

View File

@@ -48,12 +48,12 @@ AC_DB_IMPORT_IMAGE=acore/ac-wotlk-db-import:14.0.0-dev
AC_AUTHSERVER_IMAGE=acore/ac-wotlk-authserver:14.0.0-dev AC_AUTHSERVER_IMAGE=acore/ac-wotlk-authserver:14.0.0-dev
AC_WORLDSERVER_IMAGE=acore/ac-wotlk-worldserver:14.0.0-dev AC_WORLDSERVER_IMAGE=acore/ac-wotlk-worldserver:14.0.0-dev
# Services (Playerbots) # Services (Playerbots)
AC_AUTHSERVER_IMAGE_PLAYERBOTS=uprightbass360/azerothcore-wotlk-playerbots:authserver-Playerbot AC_AUTHSERVER_IMAGE_PLAYERBOTS=acore/ac-wotlk-authserver:master
AC_WORLDSERVER_IMAGE_PLAYERBOTS=uprightbass360/azerothcore-wotlk-playerbots:worldserver-Playerbot AC_WORLDSERVER_IMAGE_PLAYERBOTS=acore/ac-wotlk-worldserver:master
# Services (Module Build Tags) # Services (Module Build Tags)
# Images used during module compilation and tagging # Images used during module compilation and tagging
AC_AUTHSERVER_IMAGE_MODULES=uprightbass360/azerothcore-wotlk-playerbots:authserver-modules-latest AC_AUTHSERVER_IMAGE_MODULES=acore/ac-wotlk-authserver:modules-latest
AC_WORLDSERVER_IMAGE_MODULES=uprightbass360/azerothcore-wotlk-playerbots:worldserver-modules-latest AC_WORLDSERVER_IMAGE_MODULES=acore/ac-wotlk-worldserver:modules-latest
# Client Data # Client Data
AC_CLIENT_DATA_IMAGE=acore/ac-wotlk-client-data:14.0.0-dev AC_CLIENT_DATA_IMAGE=acore/ac-wotlk-client-data:14.0.0-dev
AC_CLIENT_DATA_IMAGE_PLAYERBOTS=uprightbass360/azerothcore-wotlk-playerbots:client-data-Playerbot AC_CLIENT_DATA_IMAGE_PLAYERBOTS=uprightbass360/azerothcore-wotlk-playerbots:client-data-Playerbot
@@ -163,6 +163,7 @@ MODULE_AUTO_REVIVE=0
MODULE_GAIN_HONOR_GUARD=0 MODULE_GAIN_HONOR_GUARD=0
MODULE_ARAC=0 MODULE_ARAC=0
MODULE_ELUNA=1 MODULE_ELUNA=1
# Enables AzerothCore Lua Engine (mod-ale) for Lua scripting
# Requires optional SQL/DBC patches; leave off by default # Requires optional SQL/DBC patches; leave off by default
MODULE_TIME_IS_TIME=0 MODULE_TIME_IS_TIME=0
# Requires in-game NPC placement/config; leave off by default # Requires in-game NPC placement/config; leave off by default
@@ -204,6 +205,14 @@ AUTO_REBUILD_ON_DEPLOY=0
# Default AzerothCore source checkout used for module rebuilds # Default AzerothCore source checkout used for module rebuilds
MODULES_REBUILD_SOURCE_PATH=${STORAGE_PATH_LOCAL}/source/azerothcore MODULES_REBUILD_SOURCE_PATH=${STORAGE_PATH_LOCAL}/source/azerothcore
# =====================
# Source repositories
# =====================
ACORE_REPO_STANDARD=https://github.com/azerothcore/azerothcore-wotlk.git
ACORE_BRANCH_STANDARD=master
ACORE_REPO_PLAYERBOTS=https://github.com/mod-playerbots/azerothcore-wotlk.git
ACORE_BRANCH_PLAYERBOTS=Playerbot
# ===================== # =====================
# Eluna runtime (worldserver.conf overrides) # Eluna runtime (worldserver.conf overrides)
# ===================== # =====================

View File

@@ -85,10 +85,10 @@ COMPILE_MODULE_VARS=(
MODULE_AOE_LOOT MODULE_LEARN_SPELLS MODULE_FIREWORKS MODULE_INDIVIDUAL_PROGRESSION MODULE_AHBOT MODULE_AUTOBALANCE MODULE_AOE_LOOT MODULE_LEARN_SPELLS MODULE_FIREWORKS MODULE_INDIVIDUAL_PROGRESSION MODULE_AHBOT MODULE_AUTOBALANCE
MODULE_TRANSMOG MODULE_NPC_BUFFER MODULE_DYNAMIC_XP MODULE_SOLO_LFG MODULE_1V1_ARENA MODULE_PHASED_DUELS MODULE_TRANSMOG MODULE_NPC_BUFFER MODULE_DYNAMIC_XP MODULE_SOLO_LFG MODULE_1V1_ARENA MODULE_PHASED_DUELS
MODULE_BREAKING_NEWS MODULE_BOSS_ANNOUNCER MODULE_ACCOUNT_ACHIEVEMENTS MODULE_AUTO_REVIVE MODULE_GAIN_HONOR_GUARD MODULE_BREAKING_NEWS MODULE_BOSS_ANNOUNCER MODULE_ACCOUNT_ACHIEVEMENTS MODULE_AUTO_REVIVE MODULE_GAIN_HONOR_GUARD
MODULE_TIME_IS_TIME MODULE_POCKET_PORTAL MODULE_RANDOM_ENCHANTS MODULE_SOLOCRAFT MODULE_PVP_TITLES MODULE_NPC_BEASTMASTER MODULE_ELUNA MODULE_TIME_IS_TIME MODULE_POCKET_PORTAL MODULE_RANDOM_ENCHANTS MODULE_SOLOCRAFT MODULE_PVP_TITLES MODULE_NPC_BEASTMASTER
MODULE_NPC_ENCHANTER MODULE_INSTANCE_RESET MODULE_LEVEL_GRANT MODULE_ARAC MODULE_ASSISTANT MODULE_REAGENT_BANK MODULE_NPC_ENCHANTER MODULE_INSTANCE_RESET MODULE_LEVEL_GRANT MODULE_ARAC MODULE_ASSISTANT MODULE_REAGENT_BANK
MODULE_CHALLENGE_MODES MODULE_OLLAMA_CHAT MODULE_PLAYER_BOT_LEVEL_BRACKETS MODULE_STATBOOSTER MODULE_DUNGEON_RESPAWN MODULE_BLACK_MARKET_AUCTION_HOUSE MODULE_CHALLENGE_MODES MODULE_OLLAMA_CHAT MODULE_PLAYER_BOT_LEVEL_BRACKETS MODULE_STATBOOSTER MODULE_DUNGEON_RESPAWN
MODULE_SKELETON_MODULE MODULE_BG_SLAVERYVALLEY MODULE_AZEROTHSHARD MODULE_WORGOBLIN MODULE_SKELETON_MODULE MODULE_BG_SLAVERYVALLEY MODULE_AZEROTHSHARD MODULE_WORGOBLIN MODULE_ELUNA_TS
) )
requires_playerbot_source(){ requires_playerbot_source(){
@@ -354,7 +354,9 @@ stage_modules(){
local module_export_var local module_export_var
for module_export_var in "${module_vars[@]}"; do for module_export_var in "${module_vars[@]}"; do
export "$module_export_var" local module_value
module_value="$(read_env "$module_export_var" "0")"
export "${module_export_var}=${module_value:-0}"
done done
local staging_modules_dir="${storage_path}/modules" local staging_modules_dir="${storage_path}/modules"
@@ -391,7 +393,11 @@ stage_modules(){
rm -f "$staging_modules_dir/.modules_state" "$staging_modules_dir/.requires_rebuild" 2>/dev/null || true rm -f "$staging_modules_dir/.modules_state" "$staging_modules_dir/.requires_rebuild" 2>/dev/null || true
fi fi
if (cd "$local_modules_dir" && bash "$ROOT_DIR/scripts/manage-modules.sh"); then if ! (cd "$local_modules_dir" && bash "$ROOT_DIR/scripts/manage-modules.sh"); then
err "Module staging failed; aborting build"
return 1
fi
ok "Module repositories staged to $local_modules_dir" ok "Module repositories staged to $local_modules_dir"
if [ -n "$staging_modules_dir" ]; then if [ -n "$staging_modules_dir" ]; then
if command -v rsync >/dev/null 2>&1; then if command -v rsync >/dev/null 2>&1; then
@@ -410,9 +416,6 @@ stage_modules(){
cp "$local_modules_dir/.modules_state" "$staging_modules_dir/.modules_state" 2>/dev/null || true cp "$local_modules_dir/.modules_state" "$staging_modules_dir/.modules_state" 2>/dev/null || true
fi fi
fi fi
else
warn "Module staging encountered issues, but continuing with build"
fi
# Cleanup # Cleanup
export GIT_CONFIG_GLOBAL="$prev_git_config_global" export GIT_CONFIG_GLOBAL="$prev_git_config_global"

View File

@@ -116,6 +116,21 @@ else
echo " ✅ Created $created_count module configuration files" echo " ✅ Created $created_count module configuration files"
# Ensure module configuration files exist under modules directory
MODULES_DIR="$CONFIG_DIR/modules"
if [ -d "$MODULES_DIR" ]; then
echo ""
echo " 🔧 Creating module configs in modules/..."
for file in "$MODULES_DIR"/*.conf.dist; do
[ -f "$file" ] || continue
target="${file%.dist}"
if [ ! -f "$target" ]; then
echo " 📝 Creating $(basename "$target") from $(basename "$file")"
cp "$file" "$target"
fi
done
fi
# Step 2: Update configuration files # Step 2: Update configuration files
echo "" echo ""
echo "🔧 Step 2: Updating configuration files..." echo "🔧 Step 2: Updating configuration files..."
@@ -130,6 +145,24 @@ else
update_playerbots_conf /azerothcore/config/modules/playerbots.conf update_playerbots_conf /azerothcore/config/modules/playerbots.conf
update_playerbots_conf /azerothcore/config/modules/playerbots.conf.dist update_playerbots_conf /azerothcore/config/modules/playerbots.conf.dist
ensure_config_key(){
local file="$1"
local key="$2"
local value="$3"
if [ ! -f "$file" ]; then
return
fi
if grep -qE "^[[:space:]]*${key}[[:space:]]*=" "$file"; then
return
fi
echo " Adding ${key} to $(basename "$file")"
printf '\n%s = %s\n' "$key" "$value" >> "$file"
}
ensure_config_key /azerothcore/config/worldserver.conf "Account.Achievements.Excluded" "\"\""
ensure_config_key /azerothcore/config/worldserver.conf "Playerbots.Updates.EnableDatabases" "1"
ensure_config_key /azerothcore/config/worldserver.conf "PlayerbotsDatabaseInfo" "\"${MYSQL_HOST};${MYSQL_PORT};${MYSQL_USER};${MYSQL_ROOT_PASSWORD};${DB_PLAYERBOTS_NAME}\""
echo "✅ Configuration files updated" echo "✅ Configuration files updated"
# Step 3: Update realmlist table # Step 3: Update realmlist table

View File

@@ -144,131 +144,72 @@ execute_module_sql_scripts() {
apk add --no-cache mariadb-client >/dev/null 2>&1 || echo "Warning: Could not install MariaDB client" apk add --no-cache mariadb-client >/dev/null 2>&1 || echo "Warning: Could not install MariaDB client"
} }
# Execute SQL for enabled modules only # Iterate modules from staging directory to catch new modules automatically
if [ "$MODULE_PLAYERBOTS" = "1" ] && [ -d "mod-playerbots" ]; then for module_dir in */; do
execute_module_sql "mod-playerbots" "Playerbots" [[ -d "$module_dir" ]] || continue
[[ "$module_dir" == "." || "$module_dir" == ".." ]] && continue
module_dir="${module_dir%/}"
# Only process directories that follow mod-* convention or known module names
if [[ "$module_dir" != mod-* && "$module_dir" != StatBooster && "$module_dir" != DungeonRespawn && "$module_dir" != eluna-ts ]]; then
continue
fi fi
if [ "$MODULE_AOE_LOOT" = "1" ] && [ -d "mod-aoe-loot" ]; then local enabled=0
execute_module_sql "mod-aoe-loot" "AoE Loot" case "$module_dir" in
fi mod-playerbots) enabled="$MODULE_PLAYERBOTS" ;;
mod-aoe-loot) enabled="$MODULE_AOE_LOOT" ;;
mod-learn-spells) enabled="$MODULE_LEARN_SPELLS" ;;
mod-fireworks-on-level) enabled="$MODULE_FIREWORKS" ;;
mod-individual-progression) enabled="$MODULE_INDIVIDUAL_PROGRESSION" ;;
mod-ahbot) enabled="$MODULE_AHBOT" ;;
mod-autobalance) enabled="$MODULE_AUTOBALANCE" ;;
mod-transmog) enabled="$MODULE_TRANSMOG" ;;
mod-npc-buffer) enabled="$MODULE_NPC_BUFFER" ;;
mod-dynamic-xp) enabled="$MODULE_DYNAMIC_XP" ;;
mod-solo-lfg) enabled="$MODULE_SOLO_LFG" ;;
mod-1v1-arena) enabled="$MODULE_1V1_ARENA" ;;
mod-phased-duels) enabled="$MODULE_PHASED_DUELS" ;;
mod-breaking-news-override) enabled="$MODULE_BREAKING_NEWS" ;;
mod-boss-announcer) enabled="$MODULE_BOSS_ANNOUNCER" ;;
mod-account-achievements) enabled="$MODULE_ACCOUNT_ACHIEVEMENTS" ;;
mod-auto-revive) enabled="$MODULE_AUTO_REVIVE" ;;
mod-gain-honor-guard) enabled="$MODULE_GAIN_HONOR_GUARD" ;;
mod-ale) enabled="$MODULE_ELUNA" ;;
mod-TimeIsTime) enabled="$MODULE_TIME_IS_TIME" ;;
mod-pocket-portal) enabled="$MODULE_POCKET_PORTAL" ;;
mod-random-enchants) enabled="$MODULE_RANDOM_ENCHANTS" ;;
mod-solocraft) enabled="$MODULE_SOLOCRAFT" ;;
mod-pvp-titles) enabled="$MODULE_PVP_TITLES" ;;
mod-npc-beastmaster) enabled="$MODULE_NPC_BEASTMASTER" ;;
mod-npc-enchanter) enabled="$MODULE_NPC_ENCHANTER" ;;
mod-instance-reset) enabled="$MODULE_INSTANCE_RESET" ;;
mod-quest-count-level) enabled="$MODULE_LEVEL_GRANT" ;;
mod-arac) enabled="$MODULE_ARAC" ;;
mod-assistant) enabled="$MODULE_ASSISTANT" ;;
mod-reagent-bank) enabled="$MODULE_REAGENT_BANK" ;;
mod-black-market) enabled="$MODULE_BLACK_MARKET_AUCTION_HOUSE" ;;
mod-challenge-modes) enabled="$MODULE_CHALLENGE_MODES" ;;
mod-ollama-chat) enabled="$MODULE_OLLAMA_CHAT" ;;
mod-player-bot-level-brackets) enabled="$MODULE_PLAYER_BOT_LEVEL_BRACKETS" ;;
StatBooster) enabled="$MODULE_STATBOOSTER" ;;
DungeonRespawn) enabled="$MODULE_DUNGEON_RESPAWN" ;;
skeleton-module) enabled="$MODULE_SKELETON_MODULE" ;;
mod-bg-slaveryvalley) enabled="$MODULE_BG_SLAVERYVALLEY" ;;
mod-azerothshard) enabled="$MODULE_AZEROTHSHARD" ;;
mod-worgoblin) enabled="$MODULE_WORGOBLIN" ;;
eluna-ts) enabled="$MODULE_ELUNA_TS" ;;
*) enabled=1 ;; # Default to enabled for unknown module directories
esac
if [ "$MODULE_LEARN_SPELLS" = "1" ] && [ -d "mod-learn-spells" ]; then if [ "${enabled:-0}" = "1" ]; then
execute_module_sql "mod-learn-spells" "Learn Spells" # Skip modules explicitly disabled for SQL
fi if [ "$module_dir" = "mod-pocket-portal" ]; then
if [ "$MODULE_FIREWORKS" = "1" ] && [ -d "mod-fireworks-on-level" ]; then
execute_module_sql "mod-fireworks-on-level" "Fireworks"
fi
if [ "$MODULE_INDIVIDUAL_PROGRESSION" = "1" ] && [ -d "mod-individual-progression" ]; then
execute_module_sql "mod-individual-progression" "Individual Progression"
fi
if [ "$MODULE_AHBOT" = "1" ] && [ -d "mod-ahbot" ]; then
execute_module_sql "mod-ahbot" "AHBot"
fi
if [ "$MODULE_AUTOBALANCE" = "1" ] && [ -d "mod-autobalance" ]; then
execute_module_sql "mod-autobalance" "AutoBalance"
fi
if [ "$MODULE_TRANSMOG" = "1" ] && [ -d "mod-transmog" ]; then
execute_module_sql "mod-transmog" "Transmog"
fi
if [ "$MODULE_NPC_BUFFER" = "1" ] && [ -d "mod-npc-buffer" ]; then
execute_module_sql "mod-npc-buffer" "NPC Buffer"
fi
if [ "$MODULE_DYNAMIC_XP" = "1" ] && [ -d "mod-dynamic-xp" ]; then
execute_module_sql "mod-dynamic-xp" "Dynamic XP"
fi
if [ "$MODULE_SOLO_LFG" = "1" ] && [ -d "mod-solo-lfg" ]; then
execute_module_sql "mod-solo-lfg" "Solo LFG"
fi
if [ "$MODULE_1V1_ARENA" = "1" ] && [ -d "mod-1v1-arena" ]; then
execute_module_sql "mod-1v1-arena" "1v1 Arena"
fi
if [ "$MODULE_PHASED_DUELS" = "1" ] && [ -d "mod-phased-duels" ]; then
execute_module_sql "mod-phased-duels" "Phased Duels"
fi
if [ "$MODULE_BREAKING_NEWS" = "1" ] && [ -d "mod-breaking-news-override" ]; then
execute_module_sql "mod-breaking-news-override" "Breaking News"
fi
if [ "$MODULE_BOSS_ANNOUNCER" = "1" ] && [ -d "mod-boss-announcer" ]; then
execute_module_sql "mod-boss-announcer" "Boss Announcer"
fi
if [ "$MODULE_ACCOUNT_ACHIEVEMENTS" = "1" ] && [ -d "mod-account-achievements" ]; then
execute_module_sql "mod-account-achievements" "Account Achievements"
fi
if [ "$MODULE_AUTO_REVIVE" = "1" ] && [ -d "mod-auto-revive" ]; then
execute_module_sql "mod-auto-revive" "Auto Revive"
fi
if [ "$MODULE_GAIN_HONOR_GUARD" = "1" ] && [ -d "mod-gain-honor-guard" ]; then
execute_module_sql "mod-gain-honor-guard" "Gain Honor Guard"
fi
if [ "$MODULE_ELUNA" = "1" ] && [ -d "mod-eluna" ]; then
execute_module_sql "mod-eluna" "Eluna"
fi
if [ "$MODULE_ARAC" = "1" ] && [ -d "mod-arac" ]; then
execute_module_sql "mod-arac" "All Races All Classes"
fi
if [ "$MODULE_TIME_IS_TIME" = "1" ] && [ -d "mod-TimeIsTime" ]; then
execute_module_sql "mod-TimeIsTime" "Time Is Time"
fi
if [ "$MODULE_POCKET_PORTAL" = "1" ]; then
echo '⚠️ Skipping mod-pocket-portal SQL: module disabled until C++20 patch is applied.' echo '⚠️ Skipping mod-pocket-portal SQL: module disabled until C++20 patch is applied.'
MODULE_POCKET_PORTAL=0 continue
fi fi
execute_module_sql "$module_dir" "$module_dir"
if [ "$MODULE_RANDOM_ENCHANTS" = "1" ] && [ -d "mod-random-enchants" ]; then
execute_module_sql "mod-random-enchants" "Random Enchants"
fi
if [ "$MODULE_SOLOCRAFT" = "1" ] && [ -d "mod-solocraft" ]; then
execute_module_sql "mod-solocraft" "Solocraft"
fi
if [ "$MODULE_PVP_TITLES" = "1" ] && [ -d "mod-pvp-titles" ]; then
execute_module_sql "mod-pvp-titles" "PvP Titles"
fi
if [ "$MODULE_NPC_BEASTMASTER" = "1" ] && [ -d "mod-npc-beastmaster" ]; then
execute_module_sql "mod-npc-beastmaster" "NPC Beastmaster"
fi
if [ "$MODULE_NPC_ENCHANTER" = "1" ] && [ -d "mod-npc-enchanter" ]; then
execute_module_sql "mod-npc-enchanter" "NPC Enchanter"
fi
if [ "$MODULE_INSTANCE_RESET" = "1" ] && [ -d "mod-instance-reset" ]; then
execute_module_sql "mod-instance-reset" "Instance Reset"
fi
if [ "$MODULE_LEVEL_GRANT" = "1" ] && [ -d "mod-quest-count-level" ]; then
execute_module_sql "mod-quest-count-level" "Level Grant"
fi
if [ "$MODULE_ASSISTANT" = "1" ] && [ -d "mod-assistant" ]; then
execute_module_sql "mod-assistant" "Assistant"
fi
if [ "$MODULE_REAGENT_BANK" = "1" ] && [ -d "mod-reagent-bank" ]; then
execute_module_sql "mod-reagent-bank" "Reagent Bank"
fi
if [ "$MODULE_BLACK_MARKET_AUCTION_HOUSE" = "1" ] && [ -d "mod-black-market" ]; then
execute_module_sql "mod-black-market" "Black Market"
fi fi
done
run_custom_sql_group world "${DB_WORLD_NAME}" "custom world SQL" run_custom_sql_group world "${DB_WORLD_NAME}" "custom world SQL"
run_custom_sql_group auth "${DB_AUTH_NAME}" "custom auth SQL" run_custom_sql_group auth "${DB_AUTH_NAME}" "custom auth SQL"

View File

@@ -2,6 +2,9 @@
# ac-compose # ac-compose
set -e set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
echo 'Setting up git user' echo 'Setting up git user'
git config --global user.name "${GIT_USERNAME:-ac-compose}" git config --global user.name "${GIT_USERNAME:-ac-compose}"
git config --global user.email "${GIT_EMAIL:-noreply@azerothcore.org}" git config --global user.email "${GIT_EMAIL:-noreply@azerothcore.org}"
@@ -101,8 +104,12 @@ if [ "$MODULE_GAIN_HONOR_GUARD" != "1" ] && [ -d "mod-gain-honor-guard" ]; then
rm -rf mod-gain-honor-guard rm -rf mod-gain-honor-guard
fi fi
if [ "$MODULE_ELUNA" != "1" ] && [ -d "mod-eluna" ]; then if [ "$MODULE_ELUNA" != "1" ] && [ -d "mod-ale" ]; then
echo 'Removing mod-eluna (disabled)...' echo 'Removing mod-ale (disabled)...'
rm -rf mod-ale
fi
if [ "$MODULE_ELUNA" = "1" ] && [ -d "mod-eluna" ]; then
echo 'Removing legacy mod-eluna directory (superseded by mod-ale)...'
rm -rf mod-eluna rm -rf mod-eluna
fi fi
if [ "$MODULE_ARAC" != "1" ] && [ -d "mod-arac" ]; then if [ "$MODULE_ARAC" != "1" ] && [ -d "mod-arac" ]; then
@@ -366,13 +373,27 @@ if [ "$MODULE_GAIN_HONOR_GUARD" = "1" ] && [ ! -d "mod-gain-honor-guard" ]; then
git clone https://github.com/azerothcore/mod-gain-honor-guard.git mod-gain-honor-guard git clone https://github.com/azerothcore/mod-gain-honor-guard.git mod-gain-honor-guard
fi fi
if [ "$MODULE_ELUNA" = "1" ] && [ ! -d "mod-eluna" ]; then if [ "$MODULE_ELUNA" = "1" ] && [ ! -d "mod-ale" ]; then
echo '🖥️ Installing mod-eluna...' echo '🖥️ Installing mod-ale (AzerothCore Lua Engine)...'
echo ' 📖 Project: https://github.com/azerothcore/mod-eluna' echo ' 📖 Project: https://github.com/azerothcore/mod-ale'
echo ' Lua scripting engine for custom server functionality' echo ' Next-generation Lua scripting engine for AzerothCore'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation' echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
git clone https://github.com/azerothcore/mod-eluna.git mod-eluna git clone https://github.com/azerothcore/mod-ale.git mod-ale
fi fi
if [ -d "mod-ale" ]; then
creature_methods_file="mod-ale/src/LuaEngine/methods/CreatureMethods.h"
if grep -q 'MoveWaypoint(creature->GetWaypointPath(), true);' "$creature_methods_file" 2>/dev/null; then
if sed -i 's/MoveWaypoint(creature->GetWaypointPath(), true);/MovePath(creature->GetWaypointPath(), true);/' "$creature_methods_file"; then
echo ' ✅ Applied mod-ale MovePath compatibility fix (upstream issue #336)'
else
echo ' ⚠️ Failed to adjust mod-ale MoveWaypoint call'
fi
else
echo ' mod-ale MovePath compatibility fix already present'
fi
fi
if [ "$MODULE_ARAC" = "1" ] && [ ! -d "mod-arac" ]; then if [ "$MODULE_ARAC" = "1" ] && [ ! -d "mod-arac" ]; then
echo '🌈 Installing mod-arac...' echo '🌈 Installing mod-arac...'
echo ' 📖 Project: https://github.com/heyitsbench/mod-arac' echo ' 📖 Project: https://github.com/heyitsbench/mod-arac'
@@ -447,18 +468,31 @@ if [ "$MODULE_BLACK_MARKET_AUCTION_HOUSE" = "1" ] && [ ! -d "mod-black-market" ]
echo ' 📖 Project: https://github.com/Youpeoples/Black-Market-Auction-House' echo ' 📖 Project: https://github.com/Youpeoples/Black-Market-Auction-House'
echo ' MoP Black Market Auction House backported using Eluna Lua engine' echo ' MoP Black Market Auction House backported using Eluna Lua engine'
echo ' ⚠️ SPECIAL MODULE: Uses Lua scripts, not C++ compilation' echo ' ⚠️ SPECIAL MODULE: Uses Lua scripts, not C++ compilation'
echo ' 🔧 REQUIRES: mod-eluna must be enabled and functional' echo ' 🔧 REQUIRES: mod-ale must be enabled and functional'
git clone https://github.com/Youpeoples/Black-Market-Auction-House.git mod-black-market git clone https://github.com/Youpeoples/Black-Market-Auction-House.git mod-black-market
# Special handling: Copy Lua scripts to lua_scripts directory # Special handling: Copy Lua scripts to lua_scripts directory
if [ "$MODULE_ELUNA" = "1" ] && [ -d "mod-black-market/Server Files/lua_scripts" ]; then if [ "$MODULE_ELUNA" = "1" ] && [ -d "mod-black-market/Server Files/lua_scripts" ]; then
echo ' 🔧 Integrating Black Market Lua scripts with mod-eluna...' echo ' 🔧 Integrating Black Market Lua scripts with mod-ale...'
mkdir -p /azerothcore/lua_scripts if mkdir -p /azerothcore/lua_scripts 2>/dev/null; then
cp -r mod-black-market/Server\ Files/lua_scripts/* /azerothcore/lua_scripts/ 2>/dev/null || true if cp -r "mod-black-market/Server Files/lua_scripts/." /azerothcore/lua_scripts/ 2>/dev/null; then
echo ' ✅ Black Market Lua scripts copied to /azerothcore/lua_scripts directory' echo ' ✅ Black Market Lua scripts copied to /azerothcore/lua_scripts directory'
ls -la /azerothcore/lua_scripts/ | grep -E "\.lua$" || echo " No .lua files found after copy" ls -la /azerothcore/lua_scripts/ | grep -E "\.lua$" || echo " No .lua files found after copy"
else else
echo ' ⚠️ WARNING: mod-eluna not enabled - Black Market will not function' echo ' ⚠️ WARNING: Failed to copy Lua scripts into /azerothcore/lua_scripts; continuing'
fi
elif [ -n "${MODULES_HOST_DIR:-}" ]; then
host_lua_dir="${MODULES_HOST_DIR%/}/lua_scripts"
if mkdir -p "$host_lua_dir" && cp -r "mod-black-market/Server Files/lua_scripts/." "$host_lua_dir/" 2>/dev/null; then
echo " ✅ Black Market Lua scripts staged to $host_lua_dir"
else
echo " ⚠️ WARNING: Unable to stage Lua scripts to $host_lua_dir; continuing"
fi
else
echo ' ⚠️ WARNING: No writable target for Lua scripts; continuing without copy'
fi
else
echo ' ⚠️ WARNING: mod-ale not enabled - Black Market will not function'
fi fi
fi fi
@@ -687,6 +721,20 @@ for module_dir in mod-*; do
fi fi
done done
# Populate module-specific configuration directory (/etc/modules)
MODULES_CONF_DIR="/azerothcore/env/dist/etc/modules"
mkdir -p "$MODULES_CONF_DIR"
rm -f "$MODULES_CONF_DIR"/*.conf "$MODULES_CONF_DIR"/*.conf.dist 2>/dev/null || true
for module_dir in mod-*; do
[ -d "$module_dir" ] || continue
while IFS= read -r conf_file; do
[ -n "$conf_file" ] || continue
base_name="$(basename "$conf_file")"
dest_name="${base_name%.dist}"
cp "$conf_file" "$MODULES_CONF_DIR/$dest_name"
done < <(find "$module_dir" -path "*/conf/*" -type f \( -name "*.conf" -o -name "*.conf.dist" \) 2>/dev/null)
done
if [ "$MODULE_AUTOBALANCE" = "1" ]; then if [ "$MODULE_AUTOBALANCE" = "1" ]; then
if [ -f "/azerothcore/env/dist/etc/AutoBalance.conf.dist" ]; then if [ -f "/azerothcore/env/dist/etc/AutoBalance.conf.dist" ]; then
sed -i 's/^AutoBalance\.LevelScaling\.EndGameBoost.*/AutoBalance.LevelScaling.EndGameBoost = false # disabled pending proper implementation/' \ sed -i 's/^AutoBalance\.LevelScaling\.EndGameBoost.*/AutoBalance.LevelScaling.EndGameBoost = false # disabled pending proper implementation/' \
@@ -772,7 +820,7 @@ ENABLED_MODULES=""
[ "$MODULE_ACCOUNT_ACHIEVEMENTS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-account-achievements" [ "$MODULE_ACCOUNT_ACHIEVEMENTS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-account-achievements"
[ "$MODULE_AUTO_REVIVE" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-auto-revive" [ "$MODULE_AUTO_REVIVE" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-auto-revive"
[ "$MODULE_GAIN_HONOR_GUARD" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-gain-honor-guard" [ "$MODULE_GAIN_HONOR_GUARD" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-gain-honor-guard"
[ "$MODULE_ELUNA" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-eluna" [ "$MODULE_ELUNA" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-ale"
[ "$MODULE_TIME_IS_TIME" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-time-is-time" [ "$MODULE_TIME_IS_TIME" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-time-is-time"
[ "$MODULE_RANDOM_ENCHANTS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-random-enchants" [ "$MODULE_RANDOM_ENCHANTS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-random-enchants"
[ "$MODULE_SOLOCRAFT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-solocraft" [ "$MODULE_SOLOCRAFT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-solocraft"

View File

@@ -88,10 +88,10 @@ COMPILE_MODULE_KEYS=(
MODULE_AOE_LOOT MODULE_LEARN_SPELLS MODULE_FIREWORKS MODULE_INDIVIDUAL_PROGRESSION MODULE_AHBOT MODULE_AUTOBALANCE MODULE_AOE_LOOT MODULE_LEARN_SPELLS MODULE_FIREWORKS MODULE_INDIVIDUAL_PROGRESSION MODULE_AHBOT MODULE_AUTOBALANCE
MODULE_TRANSMOG MODULE_NPC_BUFFER MODULE_DYNAMIC_XP MODULE_SOLO_LFG MODULE_1V1_ARENA MODULE_PHASED_DUELS MODULE_TRANSMOG MODULE_NPC_BUFFER MODULE_DYNAMIC_XP MODULE_SOLO_LFG MODULE_1V1_ARENA MODULE_PHASED_DUELS
MODULE_BREAKING_NEWS MODULE_BOSS_ANNOUNCER MODULE_ACCOUNT_ACHIEVEMENTS MODULE_AUTO_REVIVE MODULE_GAIN_HONOR_GUARD MODULE_BREAKING_NEWS MODULE_BOSS_ANNOUNCER MODULE_ACCOUNT_ACHIEVEMENTS MODULE_AUTO_REVIVE MODULE_GAIN_HONOR_GUARD
MODULE_TIME_IS_TIME MODULE_POCKET_PORTAL MODULE_RANDOM_ENCHANTS MODULE_SOLOCRAFT MODULE_PVP_TITLES MODULE_NPC_BEASTMASTER MODULE_ELUNA MODULE_TIME_IS_TIME MODULE_POCKET_PORTAL MODULE_RANDOM_ENCHANTS MODULE_SOLOCRAFT MODULE_PVP_TITLES MODULE_NPC_BEASTMASTER
MODULE_NPC_ENCHANTER MODULE_INSTANCE_RESET MODULE_LEVEL_GRANT MODULE_ARAC MODULE_ASSISTANT MODULE_REAGENT_BANK MODULE_NPC_ENCHANTER MODULE_INSTANCE_RESET MODULE_LEVEL_GRANT MODULE_ARAC MODULE_ASSISTANT MODULE_REAGENT_BANK
MODULE_CHALLENGE_MODES MODULE_OLLAMA_CHAT MODULE_PLAYER_BOT_LEVEL_BRACKETS MODULE_STATBOOSTER MODULE_DUNGEON_RESPAWN MODULE_BLACK_MARKET_AUCTION_HOUSE MODULE_CHALLENGE_MODES MODULE_OLLAMA_CHAT MODULE_PLAYER_BOT_LEVEL_BRACKETS MODULE_STATBOOSTER MODULE_DUNGEON_RESPAWN
MODULE_SKELETON_MODULE MODULE_BG_SLAVERYVALLEY MODULE_AZEROTHSHARD MODULE_WORGOBLIN MODULE_SKELETON_MODULE MODULE_BG_SLAVERYVALLEY MODULE_AZEROTHSHARD MODULE_WORGOBLIN MODULE_ELUNA_TS
) )
modules_require_playerbot_source(){ modules_require_playerbot_source(){
@@ -170,14 +170,15 @@ REBUILD_SOURCE_PATH="$(realpath "$REBUILD_SOURCE_PATH" 2>/dev/null || echo "$REB
LOCAL_MODULES_DIR="$REBUILD_SOURCE_PATH/modules" LOCAL_MODULES_DIR="$REBUILD_SOURCE_PATH/modules"
LOCAL_STAGING_MODULES_DIR="$LOCAL_STORAGE_PATH/modules" LOCAL_STAGING_MODULES_DIR="$LOCAL_STORAGE_PATH/modules"
if [ -d "$LOCAL_MODULES_DIR" ]; then if [ -d "$LOCAL_STAGING_MODULES_DIR" ] && [ "$(ls -A "$LOCAL_STAGING_MODULES_DIR" 2>/dev/null)" ]; then
echo "🔧 Using modules from source directory: $LOCAL_MODULES_DIR"
MODULES_DIR="$LOCAL_MODULES_DIR"
# Build sentinel always stays in local storage for consistency
else
echo "🔧 Using modules from local staging: $LOCAL_STAGING_MODULES_DIR" echo "🔧 Using modules from local staging: $LOCAL_STAGING_MODULES_DIR"
MODULES_DIR="$LOCAL_STAGING_MODULES_DIR" MODULES_DIR="$LOCAL_STAGING_MODULES_DIR"
# Build sentinel always stays in local storage for consistency elif [ -d "$LOCAL_MODULES_DIR" ]; then
echo "🔧 Using modules from source directory: $LOCAL_MODULES_DIR"
MODULES_DIR="$LOCAL_MODULES_DIR"
else
echo "⚠️ No local module staging detected; falling back to source directory $LOCAL_MODULES_DIR"
MODULES_DIR="$LOCAL_MODULES_DIR"
fi fi
SOURCE_COMPOSE="$REBUILD_SOURCE_PATH/docker-compose.yml" SOURCE_COMPOSE="$REBUILD_SOURCE_PATH/docker-compose.yml"
@@ -208,6 +209,7 @@ declare -A MODULE_REPO_MAP=(
[MODULE_ACCOUNT_ACHIEVEMENTS]=mod-account-achievements [MODULE_ACCOUNT_ACHIEVEMENTS]=mod-account-achievements
[MODULE_AUTO_REVIVE]=mod-auto-revive [MODULE_AUTO_REVIVE]=mod-auto-revive
[MODULE_GAIN_HONOR_GUARD]=mod-gain-honor-guard [MODULE_GAIN_HONOR_GUARD]=mod-gain-honor-guard
[MODULE_ELUNA]=mod-ale
[MODULE_TIME_IS_TIME]=mod-TimeIsTime [MODULE_TIME_IS_TIME]=mod-TimeIsTime
[MODULE_POCKET_PORTAL]=mod-pocket-portal [MODULE_POCKET_PORTAL]=mod-pocket-portal
[MODULE_RANDOM_ENCHANTS]=mod-random-enchants [MODULE_RANDOM_ENCHANTS]=mod-random-enchants
@@ -220,6 +222,7 @@ declare -A MODULE_REPO_MAP=(
[MODULE_ARAC]=mod-arac [MODULE_ARAC]=mod-arac
[MODULE_ASSISTANT]=mod-assistant [MODULE_ASSISTANT]=mod-assistant
[MODULE_REAGENT_BANK]=mod-reagent-bank [MODULE_REAGENT_BANK]=mod-reagent-bank
[MODULE_BLACK_MARKET_AUCTION_HOUSE]=mod-black-market
[MODULE_CHALLENGE_MODES]=mod-challenge-modes [MODULE_CHALLENGE_MODES]=mod-challenge-modes
[MODULE_OLLAMA_CHAT]=mod-ollama-chat [MODULE_OLLAMA_CHAT]=mod-ollama-chat
[MODULE_PLAYER_BOT_LEVEL_BRACKETS]=mod-player-bot-level-brackets [MODULE_PLAYER_BOT_LEVEL_BRACKETS]=mod-player-bot-level-brackets
@@ -229,6 +232,7 @@ declare -A MODULE_REPO_MAP=(
[MODULE_BG_SLAVERYVALLEY]=mod-bg-slaveryvalley [MODULE_BG_SLAVERYVALLEY]=mod-bg-slaveryvalley
[MODULE_AZEROTHSHARD]=mod-azerothshard [MODULE_AZEROTHSHARD]=mod-azerothshard
[MODULE_WORGOBLIN]=mod-worgoblin [MODULE_WORGOBLIN]=mod-worgoblin
[MODULE_ELUNA_TS]=eluna-ts
) )
compile_modules=() compile_modules=()

View File

@@ -0,0 +1,36 @@
DELETE FROM arena_team_member
WHERE guid IN (
SELECT guid
FROM arena_team_member atm
JOIN arena_team ate ON atm.arenaTeamId = ate.arenaTeamId
JOIN characters c ON c.guid = atm.guid
WHERE ate.type = 5
AND c.deleteInfos_Account IS NULL
AND c.name IN (
SELECT p.name
FROM playerbots p
WHERE p.bot = 1
)
AND EXISTS (
SELECT 1
FROM arena_team_member atm2
JOIN characters c2 ON atm2.guid = c2.guid
WHERE atm2.arenaTeamId = atm.arenaTeamId
AND c2.deleteInfos_Account IS NULL
AND c2.guid != c.guid
)
);
DELETE atm
FROM arena_team_member atm
JOIN characters c ON c.guid = atm.guid
WHERE atm.guid IN (
SELECT guid
FROM (
SELECT guid, COUNT(*) AS cnt
FROM arena_team_member
GROUP BY guid
HAVING cnt > 1
) dup
)
AND c.deleteInfos_Account IS NULL;