mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-13 00:58:34 +00:00
fix: workaround for ale+playerbots
This commit is contained in:
@@ -174,7 +174,18 @@ install_enabled_modules(){
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
if [ -d "$dir/.git" ]; then
|
if [ -d "$dir/.git" ]; then
|
||||||
info "$dir already present; skipping clone"
|
info "$dir already present; checking for updates"
|
||||||
|
(cd "$dir" && git fetch origin >/dev/null 2>&1 || warn "Failed to fetch updates for $dir")
|
||||||
|
local current_branch
|
||||||
|
current_branch=$(cd "$dir" && git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "master")
|
||||||
|
if (cd "$dir" && git pull origin "$current_branch" 2>&1 | grep -q "Already up to date"); then
|
||||||
|
info "$dir is already up to date"
|
||||||
|
else
|
||||||
|
ok "$dir updated from remote"
|
||||||
|
fi
|
||||||
|
if [ -n "$ref" ]; then
|
||||||
|
(cd "$dir" && git checkout "$ref") || warn "Unable to checkout ref $ref for $dir"
|
||||||
|
fi
|
||||||
elif [ -d "$dir" ]; then
|
elif [ -d "$dir" ]; then
|
||||||
warn "$dir exists but is not a git repository; leaving in place"
|
warn "$dir exists but is not a git repository; leaving in place"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Module-specific hook for mod-ale compatibility patches
|
# Module-specific hook for mod-ale compatibility patches
|
||||||
|
# NOTE: These patches are primarily needed for the AzerothCore playerbots fork
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Hook environment
|
# Hook environment
|
||||||
@@ -7,12 +8,34 @@ MODULE_KEY="${MODULE_KEY:-}"
|
|||||||
MODULE_DIR="${MODULE_DIR:-}"
|
MODULE_DIR="${MODULE_DIR:-}"
|
||||||
MODULE_NAME="${MODULE_NAME:-}"
|
MODULE_NAME="${MODULE_NAME:-}"
|
||||||
|
|
||||||
|
# Detect if we're building with playerbots fork
|
||||||
|
IS_PLAYERBOTS_FORK=0
|
||||||
|
if [ -n "$MODULE_DIR" ]; then
|
||||||
|
# Check if the parent directory structure indicates playerbots fork
|
||||||
|
if echo "$MODULE_DIR" | grep -q "azerothcore-playerbots"; then
|
||||||
|
IS_PLAYERBOTS_FORK=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Feature flags (set to 0 to disable specific patches)
|
||||||
|
APPLY_MOVEPATH_PATCH="${APPLY_MOVEPATH_PATCH:-0}" # Disabled by default - appears unnecessary
|
||||||
|
# SendTrainerList patch: auto-detect based on fork, but can be overridden
|
||||||
|
if [ -z "${APPLY_SENDTRAINERLIST_PATCH:-}" ]; then
|
||||||
|
APPLY_SENDTRAINERLIST_PATCH="$IS_PLAYERBOTS_FORK" # Only needed for playerbots fork
|
||||||
|
else
|
||||||
|
APPLY_SENDTRAINERLIST_PATCH="${APPLY_SENDTRAINERLIST_PATCH}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$MODULE_DIR" ] || [ ! -d "$MODULE_DIR" ]; then
|
if [ -z "$MODULE_DIR" ] || [ ! -d "$MODULE_DIR" ]; then
|
||||||
echo "❌ mod-ale-patches: Invalid module directory: $MODULE_DIR"
|
echo "❌ mod-ale-patches: Invalid module directory: $MODULE_DIR"
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "🔧 mod-ale-patches: Applying compatibility fixes to $MODULE_NAME"
|
if [ "$IS_PLAYERBOTS_FORK" = "1" ]; then
|
||||||
|
echo "🔧 mod-ale-patches: Applying playerbots fork compatibility fixes to $MODULE_NAME"
|
||||||
|
else
|
||||||
|
echo "🔧 mod-ale-patches: Checking compatibility fixes for $MODULE_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
# Apply MovePath compatibility patch
|
# Apply MovePath compatibility patch
|
||||||
apply_movepath_patch() {
|
apply_movepath_patch() {
|
||||||
@@ -37,10 +60,42 @@ apply_movepath_patch() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Apply SendTrainerList compatibility patch
|
||||||
|
apply_sendtrainerlist_patch() {
|
||||||
|
local target_file="$MODULE_DIR/src/LuaEngine/methods/PlayerMethods.h"
|
||||||
|
|
||||||
|
if [ ! -f "$target_file" ]; then
|
||||||
|
echo " ⚠️ SendTrainerList patch target file missing: $target_file"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the buggy code exists (without GET_GUID())
|
||||||
|
if grep -q 'player->GetSession()->SendTrainerList(obj);' "$target_file"; then
|
||||||
|
# Apply the fix by adding ->GET_GUID()
|
||||||
|
if sed -i 's/player->GetSession()->SendTrainerList(obj);/player->GetSession()->SendTrainerList(obj->GET_GUID());/' "$target_file"; then
|
||||||
|
echo " ✅ Applied SendTrainerList compatibility fix"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo " ❌ Failed to apply SendTrainerList compatibility fix"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo " ✅ SendTrainerList compatibility fix already present"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Apply all patches
|
# Apply all patches
|
||||||
patch_count=0
|
patch_count=0
|
||||||
if apply_movepath_patch; then
|
if [ "$APPLY_MOVEPATH_PATCH" = "1" ]; then
|
||||||
patch_count=$((patch_count + 1))
|
if apply_movepath_patch; then
|
||||||
|
patch_count=$((patch_count + 1))
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$APPLY_SENDTRAINERLIST_PATCH" = "1" ]; then
|
||||||
|
if apply_sendtrainerlist_patch; then
|
||||||
|
patch_count=$((patch_count + 1))
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $patch_count -eq 0 ]; then
|
if [ $patch_count -eq 0 ]; then
|
||||||
|
|||||||
Reference in New Issue
Block a user