mirror of
https://github.com/uprightbass360/AzerothCore-RealmMaster.git
synced 2026-01-13 09:07:20 +00:00
playerbots fixes
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -2,4 +2,5 @@ data/
|
|||||||
backups/
|
backups/
|
||||||
local-data-tools/
|
local-data-tools/
|
||||||
storage/
|
storage/
|
||||||
|
.claude/
|
||||||
*custom.env
|
*custom.env
|
||||||
|
|||||||
@@ -173,4 +173,5 @@ IMAGE_PULL_POLICY=if_not_present
|
|||||||
# Optional service container names
|
# Optional service container names
|
||||||
|
|
||||||
# Reference to core services (for external linking)
|
# Reference to core services (for external linking)
|
||||||
CONTAINER_WORLDSERVER=ac-worldserver
|
CONTAINER_WORLDSERVER=ac-worldserver
|
||||||
|
|
||||||
|
|||||||
@@ -720,14 +720,14 @@ services:
|
|||||||
|
|
||||||
# Create current module state hash
|
# Create current module state hash
|
||||||
for module_var in MODULE_PLAYERBOTS 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_BREAKING_NEWS MODULE_BOSS_ANNOUNCER MODULE_ACCOUNT_ACHIEVEMENTS MODULE_AUTO_REVIVE MODULE_GAIN_HONOR_GUARD 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; do
|
for module_var in MODULE_PLAYERBOTS 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_BREAKING_NEWS MODULE_BOSS_ANNOUNCER MODULE_ACCOUNT_ACHIEVEMENTS MODULE_AUTO_REVIVE MODULE_GAIN_HONOR_GUARD 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; do
|
||||||
eval "value=\$$module_var"
|
eval "value=\$$${module_var}"
|
||||||
CURRENT_STATE="$CURRENT_STATE$module_var=$value|"
|
CURRENT_STATE="$${CURRENT_STATE}$${module_var}=$${value}|"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Check if state has changed
|
# Check if state has changed
|
||||||
if [ -f "$MODULES_STATE_FILE" ]; then
|
if [ -f "$${MODULES_STATE_FILE}" ]; then
|
||||||
PREVIOUS_STATE=$(cat "$MODULES_STATE_FILE")
|
PREVIOUS_STATE=$$(cat "$${MODULES_STATE_FILE}")
|
||||||
if [ "$CURRENT_STATE" != "$PREVIOUS_STATE" ]; then
|
if [ "$${CURRENT_STATE}" != "$${PREVIOUS_STATE}" ]; then
|
||||||
echo "🔄 Module configuration has changed - rebuild required"
|
echo "🔄 Module configuration has changed - rebuild required"
|
||||||
REBUILD_REQUIRED=1
|
REBUILD_REQUIRED=1
|
||||||
else
|
else
|
||||||
@@ -739,47 +739,48 @@ services:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Save current state
|
# Save current state
|
||||||
echo "$CURRENT_STATE" > "$MODULES_STATE_FILE"
|
echo "$${CURRENT_STATE}" > "$${MODULES_STATE_FILE}"
|
||||||
|
|
||||||
# Check if any C++ modules are enabled (all current modules require compilation)
|
# Check if any C++ modules are enabled (modules requiring source compilation)
|
||||||
|
# NOTE: mod-playerbots uses pre-built images and doesn't require rebuild
|
||||||
ENABLED_MODULES=""
|
ENABLED_MODULES=""
|
||||||
[ "$MODULE_PLAYERBOTS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-playerbots"
|
# [ "$MODULE_PLAYERBOTS" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-playerbots" # Uses pre-built images
|
||||||
[ "$MODULE_AOE_LOOT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-aoe-loot"
|
[ "$MODULE_AOE_LOOT" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-aoe-loot"
|
||||||
[ "$MODULE_LEARN_SPELLS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-learn-spells"
|
[ "$MODULE_LEARN_SPELLS" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-learn-spells"
|
||||||
[ "$MODULE_FIREWORKS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-fireworks-on-level"
|
[ "$MODULE_FIREWORKS" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-fireworks-on-level"
|
||||||
[ "$MODULE_INDIVIDUAL_PROGRESSION" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-individual-progression"
|
[ "$MODULE_INDIVIDUAL_PROGRESSION" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-individual-progression"
|
||||||
[ "$MODULE_AHBOT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-ahbot"
|
[ "$MODULE_AHBOT" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-ahbot"
|
||||||
[ "$MODULE_AUTOBALANCE" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-autobalance"
|
[ "$MODULE_AUTOBALANCE" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-autobalance"
|
||||||
[ "$MODULE_TRANSMOG" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-transmog"
|
[ "$MODULE_TRANSMOG" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-transmog"
|
||||||
[ "$MODULE_NPC_BUFFER" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-npc-buffer"
|
[ "$MODULE_NPC_BUFFER" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-npc-buffer"
|
||||||
[ "$MODULE_DYNAMIC_XP" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-dynamic-xp"
|
[ "$MODULE_DYNAMIC_XP" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-dynamic-xp"
|
||||||
[ "$MODULE_SOLO_LFG" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-solo-lfg"
|
[ "$MODULE_SOLO_LFG" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-solo-lfg"
|
||||||
[ "$MODULE_1V1_ARENA" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-1v1-arena"
|
[ "$MODULE_1V1_ARENA" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-1v1-arena"
|
||||||
[ "$MODULE_PHASED_DUELS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-phased-duels"
|
[ "$MODULE_PHASED_DUELS" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-phased-duels"
|
||||||
[ "$MODULE_BREAKING_NEWS" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-breaking-news-override"
|
[ "$MODULE_BREAKING_NEWS" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-breaking-news-override"
|
||||||
[ "$MODULE_BOSS_ANNOUNCER" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-boss-announcer"
|
[ "$MODULE_BOSS_ANNOUNCER" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-boss-announcer"
|
||||||
[ "$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-eluna"
|
||||||
[ "$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_POCKET_PORTAL" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-pocket-portal"
|
[ "$MODULE_POCKET_PORTAL" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-pocket-portal"
|
||||||
[ "$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"
|
||||||
[ "$MODULE_PVP_TITLES" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-pvp-titles"
|
[ "$MODULE_PVP_TITLES" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-pvp-titles"
|
||||||
[ "$MODULE_NPC_BEASTMASTER" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-npc-beastmaster"
|
[ "$MODULE_NPC_BEASTMASTER" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-npc-beastmaster"
|
||||||
[ "$MODULE_NPC_ENCHANTER" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-npc-enchanter"
|
[ "$MODULE_NPC_ENCHANTER" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-npc-enchanter"
|
||||||
[ "$MODULE_INSTANCE_RESET" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-instance-reset"
|
[ "$MODULE_INSTANCE_RESET" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-instance-reset"
|
||||||
[ "$MODULE_LEVEL_GRANT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-quest-count-level"
|
[ "$MODULE_LEVEL_GRANT" = "1" ] && ENABLED_MODULES="$${ENABLED_MODULES} mod-quest-count-level"
|
||||||
|
|
||||||
if [ -n "$ENABLED_MODULES" ]; then
|
if [ -n "$${ENABLED_MODULES}" ]; then
|
||||||
ENABLED_COUNT=$(echo $ENABLED_MODULES | wc -w)
|
ENABLED_COUNT=$$(echo $${ENABLED_MODULES} | wc -w)
|
||||||
echo "🔧 Detected $ENABLED_COUNT enabled C++ modules requiring compilation:"
|
echo "🔧 Detected $${ENABLED_COUNT} enabled C++ modules requiring compilation:"
|
||||||
for mod in $ENABLED_MODULES; do
|
for mod in $${ENABLED_MODULES}; do
|
||||||
echo " • $mod"
|
echo " • $${mod}"
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$REBUILD_REQUIRED" = "1" ]; then
|
if [ "$${REBUILD_REQUIRED}" = "1" ]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "🚨 REBUILD REQUIRED 🚨"
|
echo "🚨 REBUILD REQUIRED 🚨"
|
||||||
echo "Module configuration has changed. To integrate C++ modules into AzerothCore:"
|
echo "Module configuration has changed. To integrate C++ modules into AzerothCore:"
|
||||||
|
|||||||
@@ -62,11 +62,13 @@ DB_CHARACTERS_NAME=acore_characters
|
|||||||
# ==============================================
|
# ==============================================
|
||||||
# DOCKER IMAGES
|
# DOCKER IMAGES
|
||||||
# ==============================================
|
# ==============================================
|
||||||
# Core service images - mod-playerbots compatible builds
|
# Core service images - TO ENABLE PLAYERBOTS: swap _PLAYERBOTS with standard images
|
||||||
AC_AUTHSERVER_IMAGE_DISABLED=uprightbass360/azerothcore-wotlk-playerbots:authserver-Playerbot
|
# STANDARD IMAGES (currently active):
|
||||||
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_DISABLED=uprightbass360/azerothcore-wotlk-playerbots:worldserver-Playerbot
|
|
||||||
AC_WORLDSERVER_IMAGE=acore/ac-wotlk-worldserver:14.0.0-dev
|
AC_WORLDSERVER_IMAGE=acore/ac-wotlk-worldserver:14.0.0-dev
|
||||||
|
# PLAYERBOTS IMAGES (to enable, swap with lines above):
|
||||||
|
AC_AUTHSERVER_IMAGE_PLAYERBOTS=uprightbass360/azerothcore-wotlk-playerbots:authserver-Playerbot
|
||||||
|
AC_WORLDSERVER_IMAGE_PLAYERBOTS=uprightbass360/azerothcore-wotlk-playerbots:worldserver-Playerbot
|
||||||
ALPINE_IMAGE=alpine:latest
|
ALPINE_IMAGE=alpine:latest
|
||||||
|
|
||||||
# Optional service images (from combined optional layer)
|
# Optional service images (from combined optional layer)
|
||||||
@@ -124,6 +126,12 @@ PLAYERBOT_MAX_BOTS=40
|
|||||||
|
|
||||||
# Module configuration - ENABLED MODULES
|
# Module configuration - ENABLED MODULES
|
||||||
# Selected modules for enhanced gameplay experience
|
# Selected modules for enhanced gameplay experience
|
||||||
|
#
|
||||||
|
# TO ENABLE PLAYERBOTS:
|
||||||
|
# 1. Change MODULE_PLAYERBOTS=1
|
||||||
|
# 2. Swap the image lines below (move _PLAYERBOTS to active, move standard to _STANDARD)
|
||||||
|
# 3. Redeploy services: docker compose -f docker-compose-azerothcore-services.yml up -d
|
||||||
|
# 4. No rebuild required - uses pre-built playerbots images!
|
||||||
MODULE_PLAYERBOTS=0
|
MODULE_PLAYERBOTS=0
|
||||||
MODULE_AOE_LOOT=0
|
MODULE_AOE_LOOT=0
|
||||||
MODULE_LEARN_SPELLS=0
|
MODULE_LEARN_SPELLS=0
|
||||||
|
|||||||
190
docker-compose-azerothcore-services.env.bak
Normal file
190
docker-compose-azerothcore-services.env.bak
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
# ==============================================
|
||||||
|
# AZEROTHCORE SERVICES ENVIRONMENT
|
||||||
|
# ==============================================
|
||||||
|
# Environment variables for auth server, world server, client data, modules, and optional services
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# DEPLOYMENT CONFIGURATION
|
||||||
|
# ==============================================
|
||||||
|
# Storage root path - local: ./storage, production: /nfs/azerothcore or custom mount
|
||||||
|
STORAGE_ROOT=/nfs/azerothcore
|
||||||
|
# Storage configuration (must match database layer)
|
||||||
|
STORAGE_PATH=${STORAGE_ROOT}
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# USER MAPPING CONFIGURATION (for NFS compatibility)
|
||||||
|
# ==============================================
|
||||||
|
# User and group IDs for container processes (PUID/PGID pattern)
|
||||||
|
# Set these to match your NFS server's user mapping
|
||||||
|
# Default: 1001:1000 (matches 'sharing' user on most systems)
|
||||||
|
PUID=1001
|
||||||
|
PGID=1000
|
||||||
|
SHARING_USER=${PUID}:${PGID}
|
||||||
|
# Legacy compatibility
|
||||||
|
CONTAINER_USER_ID=${PUID}
|
||||||
|
CONTAINER_GROUP_ID=${PGID}
|
||||||
|
CONTAINER_USER=${CONTAINER_USER_ID}:${CONTAINER_GROUP_ID}
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# NETWORK CONFIGURATION
|
||||||
|
# ==============================================
|
||||||
|
# External ports for game services
|
||||||
|
AUTH_EXTERNAL_PORT=3784
|
||||||
|
WORLD_EXTERNAL_PORT=8215
|
||||||
|
SOAP_EXTERNAL_PORT=7778
|
||||||
|
|
||||||
|
# Server address for client connections (production)
|
||||||
|
# SERVER_ADDRESS=192.168.0.188
|
||||||
|
# Server address for client connections (local)
|
||||||
|
SERVER_ADDRESS=192.168.0.188
|
||||||
|
# Use WORLD_EXTERNAL_PORT for realmlist (client connection port)
|
||||||
|
REALM_PORT=8215
|
||||||
|
|
||||||
|
# Internal ports (container side)
|
||||||
|
AUTH_PORT=3724
|
||||||
|
WORLD_PORT=8085
|
||||||
|
SOAP_PORT=7878
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# DATABASE CONNECTION
|
||||||
|
# ==============================================
|
||||||
|
# Connect to database layer (must match database layer settings)
|
||||||
|
MYSQL_HOST=ac-mysql
|
||||||
|
MYSQL_PORT=3306
|
||||||
|
MYSQL_USER=root
|
||||||
|
MYSQL_ROOT_PASSWORD=azerothcore123
|
||||||
|
|
||||||
|
# Database names (must match database layer)
|
||||||
|
DB_AUTH_NAME=acore_auth
|
||||||
|
DB_WORLD_NAME=acore_world
|
||||||
|
DB_CHARACTERS_NAME=acore_characters
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# DOCKER IMAGES
|
||||||
|
# ==============================================
|
||||||
|
# Core service images - TO ENABLE PLAYERBOTS: swap _PLAYERBOTS with standard images
|
||||||
|
# STANDARD IMAGES (currently active):
|
||||||
|
AC_AUTHSERVER_IMAGE=uprightbass360/azerothcore-wotlk-playerbots:authserver-Playerbot
|
||||||
|
AC_WORLDSERVER_IMAGE=uprightbass360/azerothcore-wotlk-playerbots:worldserver-Playerbot
|
||||||
|
# PLAYERBOTS IMAGES (to enable, swap with lines above):
|
||||||
|
AC_AUTHSERVER_IMAGE_PLAYERBOTS=uprightbass360/azerothcore-wotlk-playerbots:authserver-Playerbot
|
||||||
|
AC_WORLDSERVER_IMAGE_PLAYERBOTS=uprightbass360/azerothcore-wotlk-playerbots:worldserver-Playerbot
|
||||||
|
ALPINE_IMAGE=alpine:latest
|
||||||
|
|
||||||
|
# Optional service images (from combined optional layer)
|
||||||
|
AC_ELUNA_IMAGE=acore/eluna-ts:master
|
||||||
|
ALPINE_GIT_IMAGE=alpine/git:latest
|
||||||
|
|
||||||
|
# mod-playerbots compatible client data image
|
||||||
|
AC_CLIENT_DATA_IMAGE_DISABLED=uprightbass360/azerothcore-wotlk-playerbots:client-data-Playerbot
|
||||||
|
AC_CLIENT_DATA_IMAGE=alpine:latest
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# IMAGE PULL POLICY
|
||||||
|
# ==============================================
|
||||||
|
IMAGE_PULL_POLICY=if_not_present
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# CONTAINER HEALTH CHECKS
|
||||||
|
# ==============================================
|
||||||
|
# Auth server health check
|
||||||
|
AUTH_HEALTHCHECK_INTERVAL=30s
|
||||||
|
AUTH_HEALTHCHECK_TIMEOUT=10s
|
||||||
|
AUTH_HEALTHCHECK_RETRIES=3
|
||||||
|
AUTH_HEALTHCHECK_START_PERIOD=60s
|
||||||
|
|
||||||
|
# World server health check
|
||||||
|
WORLD_HEALTHCHECK_INTERVAL=30s
|
||||||
|
WORLD_HEALTHCHECK_TIMEOUT=10s
|
||||||
|
WORLD_HEALTHCHECK_RETRIES=3
|
||||||
|
WORLD_HEALTHCHECK_START_PERIOD=120s
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# CONTAINER NAMES
|
||||||
|
# ==============================================
|
||||||
|
# Core service container names
|
||||||
|
CONTAINER_AUTHSERVER=ac-authserver
|
||||||
|
CONTAINER_WORLDSERVER=ac-worldserver
|
||||||
|
CONTAINER_CLIENT_DATA=ac-client-data
|
||||||
|
|
||||||
|
# Database container name (for external linking)
|
||||||
|
CONTAINER_MYSQL=ac-mysql
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# NETWORK SETTINGS
|
||||||
|
# ==============================================
|
||||||
|
# Network must already exist from database layer
|
||||||
|
NETWORK_NAME=azerothcore
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# CUSTOM MODULE SETTINGS
|
||||||
|
# ==============================================
|
||||||
|
|
||||||
|
# Playerbot settings
|
||||||
|
PLAYERBOT_ENABLED=1
|
||||||
|
PLAYERBOT_MAX_BOTS=40
|
||||||
|
|
||||||
|
# Module configuration - ENABLED MODULES
|
||||||
|
# Selected modules for enhanced gameplay experience
|
||||||
|
#
|
||||||
|
# TO ENABLE PLAYERBOTS:
|
||||||
|
# 1. Change MODULE_PLAYERBOTS=1
|
||||||
|
# 2. Swap the image lines below (move _PLAYERBOTS to active, move standard to _STANDARD)
|
||||||
|
# 3. Redeploy services: docker compose -f docker-compose-azerothcore-services.yml up -d
|
||||||
|
# 4. No rebuild required - uses pre-built playerbots images!
|
||||||
|
MODULE_PLAYERBOTS=1
|
||||||
|
MODULE_AOE_LOOT=0
|
||||||
|
MODULE_LEARN_SPELLS=0
|
||||||
|
MODULE_FIREWORKS=0
|
||||||
|
MODULE_INDIVIDUAL_PROGRESSION=0
|
||||||
|
|
||||||
|
# Quality of Life Modules
|
||||||
|
# NOTE: mod-ahbot has linking issues - undefined reference to 'Addmod_ahbotScripts()'
|
||||||
|
MODULE_AHBOT=0
|
||||||
|
MODULE_AUTOBALANCE=0
|
||||||
|
MODULE_TRANSMOG=0
|
||||||
|
MODULE_NPC_BUFFER=0
|
||||||
|
|
||||||
|
# Gameplay Enhancement Modules
|
||||||
|
MODULE_DYNAMIC_XP=0
|
||||||
|
MODULE_SOLO_LFG=0
|
||||||
|
MODULE_1V1_ARENA=0
|
||||||
|
MODULE_PHASED_DUELS=0
|
||||||
|
|
||||||
|
# Server Management Modules
|
||||||
|
MODULE_BREAKING_NEWS=0
|
||||||
|
MODULE_BOSS_ANNOUNCER=0
|
||||||
|
MODULE_ACCOUNT_ACHIEVEMENTS=0
|
||||||
|
|
||||||
|
# Additional Modules Found in Config
|
||||||
|
MODULE_AUTO_REVIVE=0
|
||||||
|
MODULE_GAIN_HONOR_GUARD=0
|
||||||
|
MODULE_ELUNA=0
|
||||||
|
MODULE_ARAC=0
|
||||||
|
MODULE_TIME_IS_TIME=0
|
||||||
|
MODULE_POCKET_PORTAL=0
|
||||||
|
MODULE_RANDOM_ENCHANTS=0
|
||||||
|
MODULE_SOLOCRAFT=0
|
||||||
|
MODULE_PVP_TITLES=0
|
||||||
|
MODULE_NPC_BEASTMASTER=0
|
||||||
|
MODULE_NPC_ENCHANTER=0
|
||||||
|
MODULE_INSTANCE_RESET=0
|
||||||
|
MODULE_LEVEL_GRANT=0
|
||||||
|
MODULE_ASSISTANT=0
|
||||||
|
MODULE_REAGENT_BANK=0
|
||||||
|
MODULE_BLACK_MARKET_AUCTION_HOUSE=0
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# ADDITIONAL CONTAINER NAMES
|
||||||
|
# ==============================================
|
||||||
|
# Optional service container names
|
||||||
|
CONTAINER_ELUNA=ac-eluna
|
||||||
|
CONTAINER_MODULES=ac-modules
|
||||||
|
CONTAINER_POST_INSTALL=ac-post-install
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# MODULE MANAGEMENT
|
||||||
|
# ==============================================
|
||||||
|
GIT_USERNAME=
|
||||||
|
GIT_EMAIL=
|
||||||
|
GIT_PAT=
|
||||||
0
scripts/auto-post-install.sh
Executable file → Normal file
0
scripts/auto-post-install.sh
Executable file → Normal file
0
scripts/backup-daily.sh
Executable file → Normal file
0
scripts/backup-daily.sh
Executable file → Normal file
0
scripts/backup-hourly.sh
Executable file → Normal file
0
scripts/backup-hourly.sh
Executable file → Normal file
0
scripts/backup.sh
Executable file → Normal file
0
scripts/backup.sh
Executable file → Normal file
0
scripts/cleanup.sh
Executable file → Normal file
0
scripts/cleanup.sh
Executable file → Normal file
0
scripts/configure-modules.sh
Executable file → Normal file
0
scripts/configure-modules.sh
Executable file → Normal file
28
scripts/db-import-conditional.sh
Executable file → Normal file
28
scripts/db-import-conditional.sh
Executable file → Normal file
@@ -153,6 +153,34 @@ if [ -z "$backup_path" ] && [ -d "$BACKUP_DIRS" ]; then
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "📅 No daily backup directory found"
|
echo "📅 No daily backup directory found"
|
||||||
|
# Check for timestamped backup directories (legacy format: YYYYMMDD_HHMMSS)
|
||||||
|
echo "🔍 Checking for timestamped backup directories..."
|
||||||
|
timestamped_backups=$(ls -1t $BACKUP_DIRS 2>/dev/null | grep -E '^[0-9]{8}_[0-9]{6}$' | head -n 1)
|
||||||
|
if [ -n "$timestamped_backups" ]; then
|
||||||
|
latest_timestamped="$timestamped_backups"
|
||||||
|
echo "📦 Found timestamped backup: $latest_timestamped"
|
||||||
|
if [ -d "$BACKUP_DIRS/$latest_timestamped" ]; then
|
||||||
|
# Check if directory has .sql.gz files
|
||||||
|
if ls "$BACKUP_DIRS/$latest_timestamped"/*.sql.gz >/dev/null 2>&1; then
|
||||||
|
# Validate at least one backup file has content
|
||||||
|
echo "🔍 Validating timestamped backup content..."
|
||||||
|
for backup_file in "$BACKUP_DIRS/$latest_timestamped"/*.sql.gz; do
|
||||||
|
if [ -f "$backup_file" ] && [ -s "$backup_file" ]; then
|
||||||
|
# Use timeout to prevent hanging on zcat
|
||||||
|
if timeout 10 zcat "$backup_file" 2>/dev/null | head -20 | grep -q "CREATE DATABASE\|INSERT INTO\|CREATE TABLE"; then
|
||||||
|
echo "✅ Valid timestamped backup found: $(basename $backup_file)"
|
||||||
|
backup_path="$BACKUP_DIRS/$latest_timestamped"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "⚠️ No .sql.gz files found in timestamped backup directory"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "📅 No timestamped backup directories found"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "📁 Backup directory is empty"
|
echo "📁 Backup directory is empty"
|
||||||
|
|||||||
0
scripts/db-init-enhanced.sh
Executable file → Normal file
0
scripts/db-init-enhanced.sh
Executable file → Normal file
0
scripts/deploy-and-check-distrobox.sh
Executable file → Normal file
0
scripts/deploy-and-check-distrobox.sh
Executable file → Normal file
0
scripts/deploy-and-check.sh
Executable file → Normal file
0
scripts/deploy-and-check.sh
Executable file → Normal file
0
scripts/post-install-setup.sh
Executable file → Normal file
0
scripts/post-install-setup.sh
Executable file → Normal file
0
scripts/rebuild-with-modules.sh
Executable file → Normal file
0
scripts/rebuild-with-modules.sh
Executable file → Normal file
0
scripts/restore.sh
Executable file → Normal file
0
scripts/restore.sh
Executable file → Normal file
0
scripts/setup-eluna.sh
Executable file → Normal file
0
scripts/setup-eluna.sh
Executable file → Normal file
0
scripts/setup-server.sh
Executable file → Normal file
0
scripts/setup-server.sh
Executable file → Normal file
0
scripts/status.sh
Executable file → Normal file
0
scripts/status.sh
Executable file → Normal file
0
scripts/test-backup-detection-enhanced.sh
Executable file → Normal file
0
scripts/test-backup-detection-enhanced.sh
Executable file → Normal file
0
scripts/test-backup-detection.sh
Executable file → Normal file
0
scripts/test-backup-detection.sh
Executable file → Normal file
0
scripts/test-local-worldserver.sh
Executable file → Normal file
0
scripts/test-local-worldserver.sh
Executable file → Normal file
96
scripts/toggle-playerbots.sh
Normal file
96
scripts/toggle-playerbots.sh
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# ==============================================
|
||||||
|
# Playerbots Toggle Script
|
||||||
|
# ==============================================
|
||||||
|
# Simple script to enable/disable playerbots without rebuilding
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
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}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Change to project root
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
|
||||||
|
ENV_FILE="docker-compose-azerothcore-services.env"
|
||||||
|
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
print_status "ERROR" "Environment file not found: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check current state
|
||||||
|
current_state=$(grep "^MODULE_PLAYERBOTS=" "$ENV_FILE" | cut -d'=' -f2)
|
||||||
|
current_authserver=$(grep "^AC_AUTHSERVER_IMAGE=" "$ENV_FILE" | cut -d'=' -f2)
|
||||||
|
|
||||||
|
if [[ "$current_authserver" == *"playerbots"* ]]; then
|
||||||
|
is_playerbots_active=true
|
||||||
|
else
|
||||||
|
is_playerbots_active=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_status "INFO" "CURRENT PLAYERBOTS STATUS"
|
||||||
|
echo "Module Setting: MODULE_PLAYERBOTS=$current_state"
|
||||||
|
echo "Active Images: $(if $is_playerbots_active; then echo "Playerbots"; else echo "Standard AzerothCore"; fi)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [ "$1" = "status" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Toggle logic
|
||||||
|
if $is_playerbots_active; then
|
||||||
|
print_status "WARNING" "Disabling playerbots (switching to standard AzerothCore images)"
|
||||||
|
|
||||||
|
# Switch to standard images
|
||||||
|
sed -i.bak \
|
||||||
|
-e 's/^AC_AUTHSERVER_IMAGE=uprightbass360.*/AC_AUTHSERVER_IMAGE=acore\/ac-wotlk-authserver:14.0.0-dev/' \
|
||||||
|
-e 's/^AC_WORLDSERVER_IMAGE=uprightbass360.*/AC_WORLDSERVER_IMAGE=acore\/ac-wotlk-worldserver:14.0.0-dev/' \
|
||||||
|
-e 's/^MODULE_PLAYERBOTS=1/MODULE_PLAYERBOTS=0/' \
|
||||||
|
"$ENV_FILE"
|
||||||
|
|
||||||
|
print_status "SUCCESS" "Playerbots disabled"
|
||||||
|
else
|
||||||
|
print_status "INFO" "Enabling playerbots (switching to pre-built playerbots images)"
|
||||||
|
|
||||||
|
# Switch to playerbots images
|
||||||
|
sed -i.bak \
|
||||||
|
-e 's/^AC_AUTHSERVER_IMAGE=acore.*/AC_AUTHSERVER_IMAGE=uprightbass360\/azerothcore-wotlk-playerbots:authserver-Playerbot/' \
|
||||||
|
-e 's/^AC_WORLDSERVER_IMAGE=acore.*/AC_WORLDSERVER_IMAGE=uprightbass360\/azerothcore-wotlk-playerbots:worldserver-Playerbot/' \
|
||||||
|
-e 's/^MODULE_PLAYERBOTS=0/MODULE_PLAYERBOTS=1/' \
|
||||||
|
"$ENV_FILE"
|
||||||
|
|
||||||
|
print_status "SUCCESS" "Playerbots enabled"
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_status "INFO" "To apply changes, redeploy the services:"
|
||||||
|
echo " docker compose --env-file $ENV_FILE -f docker-compose-azerothcore-services.yml up -d"
|
||||||
|
echo ""
|
||||||
|
print_status "INFO" "No rebuild required - using pre-built images!"
|
||||||
0
scripts/update-config.sh
Executable file → Normal file
0
scripts/update-config.sh
Executable file → Normal file
0
scripts/update-realmlist.sh
Executable file → Normal file
0
scripts/update-realmlist.sh
Executable file → Normal file
0
scripts/wait-and-start-worldserver.sh
Executable file → Normal file
0
scripts/wait-and-start-worldserver.sh
Executable file → Normal file
Reference in New Issue
Block a user