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

View File

@@ -10,6 +10,22 @@
"MYSQL_PASSWORD": "azerothcore123", "MYSQL_PASSWORD": "azerothcore123",
"MYSQL_DATABASE": "acore_world" "MYSQL_DATABASE": "acore_world"
} }
},
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
},
"docker": {
"command": "npx",
"args": ["-y", "docker-mcp"]
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
} }
} }
} }

401
README.md Normal file
View File

@@ -0,0 +1,401 @@
# AzerothCore Docker/Podman Stack
A complete containerized deployment of AzerothCore WoW 3.3.5a (Wrath of the Lich King) private server with 13 enhanced modules, automated management, and production-ready features.
## 🚀 Quick Start
### Prerequisites
- **Docker** or **Podman** with Docker Compose
- **4GB+ RAM** and **20GB+ storage**
- **Linux/macOS/WSL2** (Windows with WSL2 recommended)
### ⚡ Automated Setup (Recommended)
**1. Get the Code**
```bash
git clone https://github.com/uprightbass360/acore-compose.git
cd acore-compose
```
**2. Run Interactive Setup**
```bash
./scripts/setup-server.sh
```
**3. Deploy Server**
```bash
# Use the generated custom environment files
docker compose --env-file docker-compose-azerothcore-database-custom.env -f docker-compose-azerothcore-database.yml up -d
docker compose --env-file docker-compose-azerothcore-services-custom.env -f docker-compose-azerothcore-services.yml up -d
docker compose --env-file docker-compose-azerothcore-tools-custom.env -f docker-compose-azerothcore-tools.yml up -d
```
**4. Create Admin Account**
Once the worldserver is running:
```bash
# Attach to worldserver console
docker attach ac-worldserver
# In the worldserver console, create admin account:
account create admin yourpassword
account set gmlevel admin 3 -1
server info
# Detach from console without stopping: Ctrl+P, Ctrl+Q
```
**5. Configure Game Client**
**Client Connection Instructions**:
1. **Locate your WoW 3.3.5a client directory**
2. **Edit `realmlist.wtf` file** (in your WoW client folder):
```
set realmlist SERVER_ADDRESS
```
**Examples based on your server configuration**:
```bash
# Local development
set realmlist 127.0.0.1
# LAN server
set realmlist 192.168.1.100
# Public server with custom port
set realmlist your-domain.com 8215
# or for IP with custom port
set realmlist 203.0.113.100 8215
```
**6. Access Your Server**
- **Game Server**: `your-server-ip:8215` (or port you configured)
- **Database Admin**: http://localhost:8081 (phpMyAdmin)
- **Game Content Editor**: http://localhost:4201 (Keira3)
✅ **That's it!** Your server is ready with all 13 modules installed and configured.
---
## 🔧 Manual Setup (Advanced Users)
### Step 1: Clone Repository
```bash
git clone https://github.com/uprightbass360/acore-compose.git
cd acore-compose
```
### Step 2: Configure Environment Files
Edit these files to match your setup:
- `docker-compose-azerothcore-database.env`
- `docker-compose-azerothcore-services.env`
- `docker-compose-azerothcore-tools.env`
Key settings to modify:
```bash
# Server network configuration
SERVER_ADDRESS=your-server-ip
REALM_PORT=8215
AUTH_EXTERNAL_PORT=3784
# Storage location
STORAGE_ROOT=./storage # Local setup
# STORAGE_ROOT=/nfs/containers # NFS/network storage
# Database settings
MYSQL_ROOT_PASSWORD=your-secure-password
```
### Step 3: Deploy Layers in Order
```bash
# 1. Database layer (MySQL + backup system)
docker compose --env-file docker-compose-azerothcore-database.env -f docker-compose-azerothcore-database.yml up -d
# 2. Services layer (auth/world servers + modules)
docker compose --env-file docker-compose-azerothcore-services.env -f docker-compose-azerothcore-services.yml up -d
# 3. Tools layer (phpMyAdmin + Keira3)
docker compose --env-file docker-compose-azerothcore-tools.env -f docker-compose-azerothcore-tools.yml up -d
```
### Step 4: Monitor Deployment
```bash
# Watch post-install configuration
docker logs ac-post-install -f
# Check all services are healthy
docker ps
```
---
## 📋 What Gets Installed Automatically
### ✅ Core Server Components
- **AzerothCore 3.3.5a** - WotLK server application
- **MySQL 8.0** - Database with automated schema import
- **Automated Backup System** - Scheduled database backups
- **phpMyAdmin** - Web-based database administration
- **Keira3** - Game content editor and developer tools
### ✅ 13 Enhanced Modules (🔬 IN TESTING)
All modules are automatically downloaded, configured, and SQL scripts executed:
| Module | Description | Status |
|--------|-------------|---------|
| **mod-playerbots** | AI companions for solo play | 🔬 IN TESTING |
| **mod-aoe-loot** | Streamlined loot collection | 🔬 IN TESTING |
| **mod-learn-spells** | Automatic spell learning | 🔬 IN TESTING |
| **mod-fireworks** | Level-up celebrations | 🔬 IN TESTING |
| **mod-individual-progression** | Personal advancement system | 🔬 IN TESTING |
| **mod-transmog** | Appearance customization | 🔬 IN TESTING |
| **mod-solo-lfg** | Solo dungeon access | 🔬 IN TESTING |
| **mod-eluna** | Lua scripting engine | 🔬 IN TESTING |
| **mod-arac** | All races/classes unlocked | 🔬 IN TESTING |
| **mod-npc-enchanter** | Enchanting services | 🔬 IN TESTING |
| **mod-assistant** | AI automation features | 🔬 IN TESTING |
| **mod-reagent-bank** | Reagent storage system | 🔬 IN TESTING |
| **mod-black-market** | Rare item auctions | 🔬 IN TESTING |
### ✅ Automated Configuration
- **Database Setup** - Complete schema import and user creation
- **Realmlist Configuration** - Server address and port setup
- **Module Integration** - SQL scripts execution and config deployment
- **Service Restart** - Automatic restart to apply configurations
- **Health Monitoring** - Container health checks and restart policies
### ✅ Lua Scripting Environment
- **Example Scripts** - Welcome messages, level rewards, server info commands
- **Volume Mounting** - Scripts automatically loaded from `storage/lua_scripts/`
- **Development Tools** - Script reloading with `.reload eluna` command
---
## ⚠️ Manual Configuration Required
While most setup is automated, some modules require manual configuration:
### 🚨 Critical Issues to Resolve
**mod-playerbots Compatibility**
- **Issue**: Requires custom AzerothCore branch
- **Current**: Standard AzerothCore (incompatible)
- **Resolution**: Switch to Playerbot branch OR disable module
### 📦 Client-Side Patches Required
**mod-individual-progression**
- **Required**: `patch-V.mpq` (Vanilla crafting/recipes)
- **Optional**: `patch-J.mpq`, `patch-U.mpq`
- **Location**: `storage/azerothcore/modules/mod-individual-progression/optional/`
- **Install**: Copy patches to client `WoW/Data/` directory
**mod-arac (All Races All Classes)**
- **Required**: `Patch-A.MPQ`
- **Location**: `storage/azerothcore/modules/mod-arac/patch-contents/`
- **Install**: Copy to client `WoW/Data/` directory
### ⚙️ Server Configuration Changes
**mod-individual-progression** requires worldserver.conf updates:
```ini
# Required settings in storage/azerothcore/config/worldserver.conf
EnablePlayerSettings = 1
DBC.EnforceItemAttributes = 0
```
**mod-aoe-loot** optimization:
```ini
# Prevent corpse cleanup issues
Rate.Corpse.Decay.Looted = 0.01
```
### 🤖 NPC Spawning Required
Several modules need NPCs spawned with GM commands:
```bash
# Transmog NPC
.npc add 190010
# Reagent Bank NPC
.npc add 290011
# NPC Enchanter (check module docs for ID)
.npc add [enchanter_id]
```
### 📋 Configuration Analysis Tool
Check your setup for missing configurations:
```bash
./scripts/configure-modules.sh
```
This script analyzes your enabled modules and provides specific guidance for resolving configuration issues.
---
## 🏗️ Architecture Overview
### Container Layers
```
┌─────────────────────────────────────────┐
│ Tools Layer │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ phpMyAdmin │ │ Keira3 │ │
│ │ :8081 │ │ :4201 │ │
│ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Services Layer │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Auth │ │ World │ │ Modules │ │
│ │ :3784 │ │ :8215 │ │ Manager │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Client │ │ Eluna │ │Post-Inst │ │
│ │ Data │ │TypeScript│ │ Config │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────┘
┌─────────────────────────────────────────┐
│ Database Layer │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ MySQL │ │ DB-Init │ │ Backup │ │
│ │ :64306 │ │ (setup) │ │ System │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────┘
```
### Storage Structure
```
storage/azerothcore/
├── config/ # Server configuration files
├── data/ # Game client data (maps, DBC files)
├── logs/ # Server log files
├── modules/ # Module source code and configs
├── lua_scripts/ # Eluna Lua scripts
├── mysql-data/ # Database files
└── backups/ # Automated database backups
```
---
## 🛠️ Management Commands
### Health Monitoring
```bash
# Check all containers
docker ps
# View service logs
docker logs ac-worldserver -f
docker logs ac-authserver -f
docker logs ac-post-install -f
# Check module installation
docker logs ac-modules --tail 50
```
### Module Management
```bash
# Analyze module configuration
./scripts/configure-modules.sh
# Setup Lua scripting environment
./scripts/setup-eluna.sh
# Test Eluna scripts
docker exec ac-worldserver /bin/bash -c 'echo "reload eluna"'
```
### Database Operations
```bash
# Access database via phpMyAdmin
open http://localhost:8081
# Direct MySQL access
docker exec -it ac-mysql mysql -u root -p
# Manual backup
docker exec ac-mysql mysqldump -u root -p --all-databases > backup.sql
```
---
## 🔧 Troubleshooting
### Common Issues
**Containers failing to start**
```bash
# Check container logs
docker logs <container_name>
# Verify network connectivity
docker network ls | grep azerothcore
# Check port conflicts
ss -tulpn | grep -E "(3784|8215|8081|4201)"
```
**Module not working**
```bash
# Check if module is enabled
grep MODULE_NAME docker-compose-azerothcore-services.env
# Verify module installation
ls storage/azerothcore/modules/
# Check configuration files
ls storage/azerothcore/config/mod_*.conf*
```
**Database connection issues**
```bash
# Verify MySQL is running
docker exec ac-mysql mysql -u root -p -e "SELECT 1;"
# Check database initialization
docker logs ac-db-import
```
### Getting Help
Run the configuration analysis tool for specific guidance:
```bash
./scripts/configure-modules.sh
```
---
## 📚 Additional Documentation
- **[Module Configuration Requirements](docs/module-configuration-requirements.md)** - Detailed manual setup steps
- **[Lua Scripting Guide](storage/azerothcore/lua_scripts/README.md)** - Eluna development
- **[Deployment Scripts](scripts/README.md)** - Automation tools reference
---
## 🎯 Next Steps After Installation
1. **Test Client Connection** - Connect with WoW 3.3.5a client
2. **Spawn Required NPCs** - Use GM commands for service modules
3. **Apply Client Patches** - For mod-arac and mod-individual-progression
4. **Test Module Functionality** - Verify each module works as expected
---
## 📄 Implementation Credits
This project builds upon:
- **[AzerothCore](https://github.com/azerothcore/azerothcore-wotlk)** - Core server application
- **[AzerothCore Docker Setup](https://github.com/coc0nut/AzerothCore-with-Playerbots-Docker-Setup)** - Initial containerization approach
### Key Improvements
-**Fully Automated Setup** - Interactive configuration script
-**13 Enhanced Modules** - Complete gameplay enhancement suite
-**Production Ready** - Health checks, backups, monitoring
-**Cross-Platform** - Docker and Podman support
- ✅ **Comprehensive Documentation** - Clear setup and troubleshooting guides

View File

@@ -100,24 +100,24 @@ NETWORK_NAME=azerothcore
PLAYERBOT_ENABLED=1 PLAYERBOT_ENABLED=1
PLAYERBOT_MAX_BOTS=40 PLAYERBOT_MAX_BOTS=40
# Module configuration (ALL DISABLED for clean baseline) # Module configuration - ENABLED MODULES
# Enable modules individually after testing compatibility # Selected modules for enhanced gameplay experience
MODULE_PLAYERBOTS=0 MODULE_PLAYERBOTS=1
MODULE_AOE_LOOT=0 MODULE_AOE_LOOT=1
MODULE_LEARN_SPELLS=0 MODULE_LEARN_SPELLS=1
MODULE_FIREWORKS=0 MODULE_FIREWORKS=1
MODULE_INDIVIDUAL_PROGRESSION=0 MODULE_INDIVIDUAL_PROGRESSION=1
# Quality of Life Modules # Quality of Life Modules
# NOTE: mod-ahbot has linking issues - undefined reference to 'Addmod_ahbotScripts()' # NOTE: mod-ahbot has linking issues - undefined reference to 'Addmod_ahbotScripts()'
MODULE_AHBOT=0 MODULE_AHBOT=0
MODULE_AUTOBALANCE=0 MODULE_AUTOBALANCE=0
MODULE_TRANSMOG=0 MODULE_TRANSMOG=1
MODULE_NPC_BUFFER=0 MODULE_NPC_BUFFER=0
# Gameplay Enhancement Modules # Gameplay Enhancement Modules
MODULE_DYNAMIC_XP=0 MODULE_DYNAMIC_XP=0
MODULE_SOLO_LFG=0 MODULE_SOLO_LFG=1
MODULE_1V1_ARENA=0 MODULE_1V1_ARENA=0
MODULE_PHASED_DUELS=0 MODULE_PHASED_DUELS=0
@@ -129,16 +129,20 @@ MODULE_ACCOUNT_ACHIEVEMENTS=0
# Additional Modules Found in Config # Additional Modules Found in Config
MODULE_AUTO_REVIVE=0 MODULE_AUTO_REVIVE=0
MODULE_GAIN_HONOR_GUARD=0 MODULE_GAIN_HONOR_GUARD=0
MODULE_ELUNA=0 MODULE_ELUNA=1
MODULE_ARAC=1
MODULE_TIME_IS_TIME=0 MODULE_TIME_IS_TIME=0
MODULE_POCKET_PORTAL=0 MODULE_POCKET_PORTAL=0
MODULE_RANDOM_ENCHANTS=0 MODULE_RANDOM_ENCHANTS=0
MODULE_SOLOCRAFT=0 MODULE_SOLOCRAFT=0
MODULE_PVP_TITLES=0 MODULE_PVP_TITLES=0
MODULE_NPC_BEASTMASTER=0 MODULE_NPC_BEASTMASTER=0
MODULE_NPC_ENCHANTER=0 MODULE_NPC_ENCHANTER=1
MODULE_INSTANCE_RESET=0 MODULE_INSTANCE_RESET=0
MODULE_LEVEL_GRANT=0 MODULE_LEVEL_GRANT=0
MODULE_ASSISTANT=1
MODULE_REAGENT_BANK=1
MODULE_BLACK_MARKET_AUCTION_HOUSE=1
# ============================================== # ==============================================
# ADDITIONAL CONTAINER NAMES # ADDITIONAL CONTAINER NAMES

View File

@@ -256,6 +256,7 @@ services:
- ${STORAGE_PATH}/config:/azerothcore/env/dist/etc - ${STORAGE_PATH}/config:/azerothcore/env/dist/etc
- ${STORAGE_PATH}/logs:/azerothcore/logs - ${STORAGE_PATH}/logs:/azerothcore/logs
- ${STORAGE_PATH}/modules:/azerothcore/modules - ${STORAGE_PATH}/modules:/azerothcore/modules
- ${STORAGE_PATH}/lua_scripts:/azerothcore/lua_scripts
restart: unless-stopped restart: unless-stopped
networks: networks:
- azerothcore - azerothcore
@@ -323,6 +324,10 @@ services:
- MODULE_NPC_ENCHANTER=${MODULE_NPC_ENCHANTER} - MODULE_NPC_ENCHANTER=${MODULE_NPC_ENCHANTER}
- MODULE_INSTANCE_RESET=${MODULE_INSTANCE_RESET} - MODULE_INSTANCE_RESET=${MODULE_INSTANCE_RESET}
- MODULE_LEVEL_GRANT=${MODULE_LEVEL_GRANT} - MODULE_LEVEL_GRANT=${MODULE_LEVEL_GRANT}
- MODULE_ARAC=${MODULE_ARAC}
- MODULE_ASSISTANT=${MODULE_ASSISTANT}
- MODULE_REAGENT_BANK=${MODULE_REAGENT_BANK}
- MODULE_BLACK_MARKET_AUCTION_HOUSE=${MODULE_BLACK_MARKET_AUCTION_HOUSE}
# Database connection for SQL execution # Database connection for SQL execution
- CONTAINER_MYSQL=${CONTAINER_MYSQL} - CONTAINER_MYSQL=${CONTAINER_MYSQL}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
@@ -437,6 +442,10 @@ services:
echo 'Removing mod-eluna (disabled)...' echo 'Removing mod-eluna (disabled)...'
rm -rf mod-eluna rm -rf mod-eluna
fi fi
if [ "$MODULE_ARAC" != "1" ] && [ -d "mod-arac" ]; then
echo 'Removing mod-arac (disabled)...'
rm -rf mod-arac
fi
if [ "$MODULE_TIME_IS_TIME" != "1" ] && [ -d "mod-TimeIsTime" ]; then if [ "$MODULE_TIME_IS_TIME" != "1" ] && [ -d "mod-TimeIsTime" ]; then
echo 'Removing mod-TimeIsTime (disabled)...' echo 'Removing mod-TimeIsTime (disabled)...'
@@ -482,6 +491,18 @@ services:
echo 'Removing mod-quest-count-level (disabled)...' echo 'Removing mod-quest-count-level (disabled)...'
rm -rf mod-quest-count-level rm -rf mod-quest-count-level
fi fi
if [ "$MODULE_ASSISTANT" != "1" ] && [ -d "mod-assistant" ]; then
echo 'Removing mod-assistant (disabled)...'
rm -rf mod-assistant
fi
if [ "$MODULE_REAGENT_BANK" != "1" ] && [ -d "mod-reagent-bank" ]; then
echo 'Removing mod-reagent-bank (disabled)...'
rm -rf mod-reagent-bank
fi
if [ "$MODULE_BLACK_MARKET_AUCTION_HOUSE" != "1" ] && [ -d "mod-black-market" ]; then
echo 'Removing mod-black-market (disabled)...'
rm -rf mod-black-market
fi
echo 'Installing enabled modules...' echo 'Installing enabled modules...'
@@ -493,6 +514,7 @@ services:
echo ' 🚨 INCOMPATIBLE with standard AzerothCore - module will not function properly' echo ' 🚨 INCOMPATIBLE with standard AzerothCore - module will not function properly'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation' echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 📋 POST-INSTALL: Requires manual account/character configuration' echo ' 📋 POST-INSTALL: Requires manual account/character configuration'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/liyunfan1223/mod-playerbots.git mod-playerbots git clone https://github.com/liyunfan1223/mod-playerbots.git mod-playerbots
fi fi
@@ -502,6 +524,7 @@ services:
echo ' 📖 Project: https://github.com/azerothcore/mod-aoe-loot' echo ' 📖 Project: https://github.com/azerothcore/mod-aoe-loot'
echo ' Allows looting multiple corpses with one action' echo ' Allows looting multiple corpses with one action'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation' echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-aoe-loot.git mod-aoe-loot git clone https://github.com/azerothcore/mod-aoe-loot.git mod-aoe-loot
fi fi
@@ -511,6 +534,7 @@ services:
echo ' 📖 Project: https://github.com/azerothcore/mod-learn-spells' echo ' 📖 Project: https://github.com/azerothcore/mod-learn-spells'
echo ' Automatically teaches class spells on level up' echo ' Automatically teaches class spells on level up'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation' echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-learn-spells.git mod-learn-spells git clone https://github.com/azerothcore/mod-learn-spells.git mod-learn-spells
fi fi
@@ -520,6 +544,7 @@ services:
echo ' 📖 Project: https://github.com/azerothcore/mod-fireworks-on-level' echo ' 📖 Project: https://github.com/azerothcore/mod-fireworks-on-level'
echo ' Displays fireworks when players level up' echo ' Displays fireworks when players level up'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation' echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-fireworks-on-level.git mod-fireworks-on-level git clone https://github.com/azerothcore/mod-fireworks-on-level.git mod-fireworks-on-level
fi fi
@@ -531,6 +556,7 @@ services:
echo ' ✅ AUTO-CONFIG: Automatically sets EnablePlayerSettings=1 and DBC.EnforceItemAttributes=0' echo ' ✅ AUTO-CONFIG: Automatically sets EnablePlayerSettings=1 and DBC.EnforceItemAttributes=0'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation' echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 📁 Optional client files available in optional/ directory' echo ' 📁 Optional client files available in optional/ directory'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/ZhengPeiRu21/mod-individual-progression.git mod-individual-progression git clone https://github.com/ZhengPeiRu21/mod-individual-progression.git mod-individual-progression
fi fi
@@ -553,7 +579,11 @@ services:
fi fi
if [ "$MODULE_TRANSMOG" = "1" ] && [ ! -d "mod-transmog" ]; then if [ "$MODULE_TRANSMOG" = "1" ] && [ ! -d "mod-transmog" ]; then
echo 'Installing mod-transmog...' echo '🎭 Installing mod-transmog...'
echo ' 📖 Project: https://github.com/azerothcore/mod-transmog'
echo ' Allows appearance customization of equipment'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-transmog.git mod-transmog git clone https://github.com/azerothcore/mod-transmog.git mod-transmog
fi fi
@@ -574,6 +604,7 @@ services:
echo ' Allows dungeon finder for solo players and small groups' echo ' Allows dungeon finder for solo players and small groups'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation' echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 💡 Pairs perfectly with mod-solocraft and mod-autobalance' echo ' 💡 Pairs perfectly with mod-solocraft and mod-autobalance'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-solo-lfg.git mod-solo-lfg git clone https://github.com/azerothcore/mod-solo-lfg.git mod-solo-lfg
fi fi
@@ -619,9 +650,22 @@ services:
fi fi
if [ "$MODULE_ELUNA" = "1" ] && [ ! -d "mod-eluna" ]; then if [ "$MODULE_ELUNA" = "1" ] && [ ! -d "mod-eluna" ]; then
echo 'Installing mod-eluna...' echo '🖥️ Installing mod-eluna...'
echo ' 📖 Project: https://github.com/azerothcore/mod-eluna'
echo ' Lua scripting engine for custom server functionality'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-eluna.git mod-eluna git clone https://github.com/azerothcore/mod-eluna.git mod-eluna
fi fi
if [ "$MODULE_ARAC" = "1" ] && [ ! -d "mod-arac" ]; then
echo '🌈 Installing mod-arac...'
echo ' 📖 Project: https://github.com/heyitsbench/mod-arac'
echo ' All Races All Classes - Removes class restrictions'
echo ' 🚨 CRITICAL: Requires DBC file updates and client patch!'
echo ' 📋 POST-INSTALL: Apply Patch-A.MPQ to client WoW/Data/ directory'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/heyitsbench/mod-arac.git mod-arac
fi
if [ "$MODULE_TIME_IS_TIME" = "1" ] && [ ! -d "mod-TimeIsTime" ]; then if [ "$MODULE_TIME_IS_TIME" = "1" ] && [ ! -d "mod-TimeIsTime" ]; then
echo 'Installing mod-TimeIsTime...' echo 'Installing mod-TimeIsTime...'
@@ -658,7 +702,11 @@ services:
fi fi
if [ "$MODULE_NPC_ENCHANTER" = "1" ] && [ ! -d "mod-npc-enchanter" ]; then if [ "$MODULE_NPC_ENCHANTER" = "1" ] && [ ! -d "mod-npc-enchanter" ]; then
echo 'Installing mod-npc-enchanter...' echo 'Installing mod-npc-enchanter...'
echo ' 📖 Project: https://github.com/azerothcore/mod-npc-enchanter'
echo ' NPC that provides enchanting services'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-npc-enchanter.git mod-npc-enchanter git clone https://github.com/azerothcore/mod-npc-enchanter.git mod-npc-enchanter
fi fi
@@ -671,6 +719,30 @@ services:
echo 'Installing mod-quest-count-level...' echo 'Installing mod-quest-count-level...'
git clone https://github.com/michaeldelago/mod-quest-count-level.git mod-quest-count-level git clone https://github.com/michaeldelago/mod-quest-count-level.git mod-quest-count-level
fi fi
if [ "$MODULE_ASSISTANT" = "1" ] && [ ! -d "mod-assistant" ]; then
echo '🤖 Installing mod-assistant...'
echo ' 📖 Project: https://github.com/azerothcore/mod-assistant'
echo ' Provides AI-powered assistance and automation features'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-assistant.git mod-assistant
fi
if [ "$MODULE_REAGENT_BANK" = "1" ] && [ ! -d "mod-reagent-bank" ]; then
echo '🏦 Installing mod-reagent-bank...'
echo ' 📖 Project: https://github.com/azerothcore/mod-reagent-bank'
echo ' Adds reagent bank functionality similar to retail WoW'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-reagent-bank.git mod-reagent-bank
fi
if [ "$MODULE_BLACK_MARKET_AUCTION_HOUSE" = "1" ] && [ ! -d "mod-black-market" ]; then
echo '🏴‍☠️ Installing mod-black-market...'
echo ' 📖 Project: https://github.com/azerothcore/mod-black-market'
echo ' Black Market Auction House for rare and unique items'
echo ' 🔧 REBUILD REQUIRED: Container must be rebuilt with source-based compilation'
echo ' 🔬 STATUS: IN TESTING - Currently under verification'
git clone https://github.com/azerothcore/mod-black-market.git mod-black-market
fi
echo 'Managing configuration files...' echo 'Managing configuration files...'
@@ -750,6 +822,9 @@ services:
if [ "$MODULE_ELUNA" != "1" ]; then if [ "$MODULE_ELUNA" != "1" ]; then
rm -f /azerothcore/env/dist/etc/mod_LuaEngine.conf* rm -f /azerothcore/env/dist/etc/mod_LuaEngine.conf*
fi fi
if [ "$MODULE_ARAC" != "1" ]; then
rm -f /azerothcore/env/dist/etc/arac.conf*
fi
if [ "$MODULE_TIME_IS_TIME" != "1" ]; then if [ "$MODULE_TIME_IS_TIME" != "1" ]; then
rm -f /azerothcore/env/dist/etc/mod-time_is_time.conf* rm -f /azerothcore/env/dist/etc/mod-time_is_time.conf*
@@ -787,6 +862,18 @@ services:
rm -f /azerothcore/env/dist/etc/levelGrant.conf* rm -f /azerothcore/env/dist/etc/levelGrant.conf*
fi fi
if [ "$MODULE_ASSISTANT" != "1" ]; then
rm -f /azerothcore/env/dist/etc/mod_assistant.conf*
fi
if [ "$MODULE_REAGENT_BANK" != "1" ]; then
rm -f /azerothcore/env/dist/etc/mod_reagent_bank.conf*
fi
if [ "$MODULE_BLACK_MARKET_AUCTION_HOUSE" != "1" ]; then
rm -f /azerothcore/env/dist/etc/mod_black_market.conf*
fi
# Install configuration files for enabled modules # Install configuration files for enabled modules
for module_dir in mod-*; do for module_dir in mod-*; do
if [ -d "$$module_dir" ]; then if [ -d "$$module_dir" ]; then
@@ -942,6 +1029,9 @@ services:
if [ "$MODULE_ELUNA" = "1" ] && [ -d "mod-eluna" ]; then if [ "$MODULE_ELUNA" = "1" ] && [ -d "mod-eluna" ]; then
execute_module_sql "mod-eluna" "Eluna" execute_module_sql "mod-eluna" "Eluna"
fi 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 if [ "$MODULE_TIME_IS_TIME" = "1" ] && [ -d "mod-TimeIsTime" ]; then
execute_module_sql "mod-TimeIsTime" "Time Is Time" execute_module_sql "mod-TimeIsTime" "Time Is Time"
@@ -978,6 +1068,15 @@ services:
if [ "$MODULE_LEVEL_GRANT" = "1" ] && [ -d "mod-quest-count-level" ]; then if [ "$MODULE_LEVEL_GRANT" = "1" ] && [ -d "mod-quest-count-level" ]; then
execute_module_sql "mod-quest-count-level" "Level Grant" execute_module_sql "mod-quest-count-level" "Level Grant"
fi 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
echo 'SQL execution complete.' echo 'SQL execution complete.'
@@ -1032,6 +1131,7 @@ services:
[ "$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_ARAC" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-arac"
[ "$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"
@@ -1041,6 +1141,9 @@ services:
[ "$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"
[ "$MODULE_ASSISTANT" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-assistant"
[ "$MODULE_REAGENT_BANK" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-reagent-bank"
[ "$MODULE_BLACK_MARKET_AUCTION_HOUSE" = "1" ] && ENABLED_MODULES="$ENABLED_MODULES mod-black-market"
if [ -n "$ENABLED_MODULES" ]; then if [ -n "$ENABLED_MODULES" ]; then
ENABLED_COUNT=$(echo $ENABLED_MODULES | wc -w) ENABLED_COUNT=$(echo $ENABLED_MODULES | wc -w)

View File

@@ -0,0 +1,282 @@
# AzerothCore Module Configuration Requirements
This document outlines all manual configuration steps required for the enabled modules that cannot be automated through Docker container processes.
## 🚨 Critical Compatibility Issues
### MODULE_PLAYERBOTS - INCOMPATIBLE WITH STANDARD AZEROTHCORE
**❌ BREAKING ISSUE**: mod-playerbots requires a completely different AzerothCore branch:
- **Required Branch**: `liyunfan1223/azerothcore-wotlk/tree/Playerbot`
- **Current Setup**: Standard AzerothCore (INCOMPATIBLE)
**Resolution Options**:
1. **Switch to Playerbot Branch** (Recommended for bot-focused servers)
- Fork the Playerbot branch
- Rebuild entire server stack with Playerbot core
- Note: May be incompatible with some other modules
2. **Disable Playerbots** (Recommended for standard servers)
- Set `MODULE_PLAYERBOTS=0` in environment file
- Continue with standard AzerothCore
---
## 📦 Client-Side Patch Requirements
### MODULE_INDIVIDUAL_PROGRESSION
**Required Client Patches** (stored in: `${STORAGE_PATH}/modules/mod-individual-progression/optional/`):
| Patch File | Description | Required |
|------------|-------------|----------|
| `patch-V.mpq` | Vanilla crafting and recipe restoration | ✅ Yes |
| `patch-J.mpq` | Vanilla login screen | ❌ Optional |
| `patch-U.mpq` | Vanilla loading screens | ❌ Optional |
| `patch-S.mpq` | Alternative WotLK mana costs | ❌ Don't use with patch-V |
**Installation**: Players must copy required patches to their `WoW/Data/` directory.
### MODULE_ARAC (All Races All Classes)
**Required Client Patch**:
- **File**: `Patch-A.MPQ`
- **Location**: `${STORAGE_PATH}/modules/mod-arac/patch-contents/`
- **Installation**: Players must copy to `WoW/Data/` directory
**Server-Side**: DBC files are automatically applied during module installation.
---
## ⚙️ Critical Server Configuration Changes
### MODULE_INDIVIDUAL_PROGRESSION
**Required worldserver.conf Changes**:
```ini
# CRITICAL - Required for progress saving
EnablePlayerSettings = 1
# CRITICAL - Required for item stat overrides
DBC.EnforceItemAttributes = 0
```
**File Location**: `${STORAGE_PATH}/config/worldserver.conf`
### MODULE_AOE_LOOT
**Required worldserver.conf Optimization**:
```ini
# Prevent corpse cleanup issues with AoE looting
# Default: 0.5, Required: 0.01 or lower
Rate.Corpse.Decay.Looted = 0.01
```
---
## 🤖 Manual NPC Spawning Requirements
The following modules require manual NPC spawning using GM commands:
### MODULE_TRANSMOG
```
.npc add 190010
```
**Recommended Locations**: Major cities (Stormwind, Orgrimmar, Ironforge, Undercity)
### MODULE_NPC_ENCHANTER
```
.npc add [enchanter_npc_id]
```
**Note**: Check module documentation for specific NPC ID
### MODULE_REAGENT_BANK
```
.npc add 290011
```
**Recommended Locations**: Major cities near banks
### MODULE_ASSISTANT
```
.npc add [assistant_npc_id]
```
**Note**: Check module documentation for specific NPC ID
**Requirements**:
- GM account with level 3+ permissions
- Access to worldserver console or in-game GM commands
---
## 💾 Database Backup Requirements
**CRITICAL**: The following modules modify core database tables and require backup:
- **MODULE_ARAC**: Modifies race/class restrictions
- **MODULE_INDIVIDUAL_PROGRESSION**: Adds progression tracking tables
**Backup Command**:
```bash
docker exec ac-mysql mysqldump -u root -p${MYSQL_ROOT_PASSWORD} --all-databases > backup-$(date +%Y%m%d-%H%M%S).sql
```
---
## 🖥️ Eluna Lua Scripting Setup
### MODULE_ELUNA - Complete Setup
**Automated Setup Available**:
```bash
./scripts/setup-eluna.sh
```
**Manual Configuration Requirements**:
- **Script Directory**: `${STORAGE_PATH}/lua_scripts/` (volume mounted automatically)
- **English DBC Files**: Recommended for full functionality
- **Container Integration**: Scripts loaded automatically on worldserver start
**Example Scripts Provided**:
- `welcome.lua` - Player login welcome messages
- `server_info.lua` - Custom `.info` and `.serverinfo` commands
- `level_rewards.lua` - Milestone rewards for leveling
- `init.lua` - Script documentation and loader
**Key Configuration** (`mod_LuaEngine.conf`):
```ini
Eluna.ScriptPath = "lua_scripts"
Eluna.AutoReload = false # Enable only for development
Eluna.BytecodeCache = true # Performance optimization
Eluna.TraceBack = false # Enable for debugging
```
**Important Compatibility Notes**:
- ⚠️ **AzerothCore mod-eluna is NOT compatible with standard Eluna scripts**
- Scripts must be written specifically for AzerothCore's mod-eluna API
- Standard Eluna community scripts will NOT work
**Script Management Commands**:
- `.reload eluna` - Reload all Lua scripts
- `.lua [code]` - Execute Lua code directly (if enabled)
---
## 🔧 Module-Specific Configuration Files
### MODULE_PLAYERBOTS - playerbots.conf
**Key Settings**:
- `MinRandomBots = 500` (Default - reduce for performance)
- `MaxRandomBots = 500` (Default - reduce for performance)
- RandomBot account management settings
### MODULE_AOE_LOOT - mod_aoe_loot.conf
**Key Settings**:
- Loot range configuration (default: 55.0)
- Group behavior settings
### MODULE_LEARN_SPELLS - mod_learnspells.conf
**Key Settings**:
- Maximum level limits
- First login behavior
### MODULE_INDIVIDUAL_PROGRESSION - individual_progression.conf
**Key Settings**:
- Era progression rules
- Content unlock thresholds
### MODULE_TRANSMOG - transmog.conf
**Key Settings**:
- Transmogrification rules
- Cost settings
- Restriction configurations
---
## 🎯 Performance Considerations
### MODULE_PLAYERBOTS
- **Impact**: High - Can run thousands of AI bots
- **Recommendation**: Start with low bot counts (50-100)
- **Monitoring**: CPU usage, memory consumption, database load
### MODULE_ELUNA
- **Impact**: Variable - Depends on Lua script complexity
- **Requirement**: English DBC files for full functionality
- **Script Location**: `${STORAGE_PATH}/lua_scripts/` (automatically mounted)
- **Setup**: Run `./scripts/setup-eluna.sh` to create example scripts
- **Monitoring**: Script execution times
- **Reloading**: Use `.reload eluna` command in worldserver console
---
## 📋 Deployment Checklist
### Pre-Deployment
- [ ] **Critical**: Resolve Playerbots compatibility (switch branch OR disable)
- [ ] Backup database (if using ARAC or INDIVIDUAL_PROGRESSION)
- [ ] Update worldserver.conf with required settings
- [ ] Test configuration in development environment
### During Deployment
- [ ] Rebuild containers: `./scripts/rebuild-with-modules.sh`
- [ ] Verify module compilation success
- [ ] Apply any remaining SQL scripts manually
- [ ] Create GM account for NPC spawning
### Post-Deployment
- [ ] Spawn required NPCs using GM commands
- [ ] Test each module's functionality
- [ ] Distribute client patches to players
- [ ] Monitor server performance
- [ ] Adjust module configurations as needed
---
## 🚨 Known Compatibility Issues
### AzerothCore Version Dependencies
- **MODULE_TRANSMOG**: Requires minimum commit `b6cb9247ba96a862ee274c0765004e6d2e66e9e4`
- **MODULE_PLAYERBOTS**: Requires custom Playerbot branch (incompatible with standard)
### Module Conflicts
- **INDIVIDUAL_PROGRESSION + Standard AzerothCore**: patch-S.mpq conflicts with patch-V.mpq
- **ELUNA Scripts**: AzerothCore mod-eluna is NOT compatible with standard Eluna scripts
### Database Conflicts
- **MODULE_TRANSMOG**: Must delete conflicting npc_text IDs (50000, 50001) if upgrading
---
## 📞 Support and Resources
### Module Documentation
Each module's GitHub repository contains detailed configuration documentation:
- Configuration file examples (`.conf.dist` files)
- SQL requirements
- Client-side patch information
### Testing Recommendations
1. **Development Environment**: Test all modules in non-production environment first
2. **Staged Rollout**: Enable modules incrementally to identify issues
3. **Player Communication**: Provide clear client patch installation instructions
4. **Rollback Plan**: Maintain database backups for quick rollback if needed
---
## 🔄 Configuration Update Script
Run the module configuration analysis script to check your current setup:
```bash
./scripts/configure-modules.sh
```
This script will:
- Analyze your enabled modules
- Identify missing configuration requirements
- Provide step-by-step resolution guidance
- Check for compatibility issues
---
*Last Updated: $(date)*

0
readme-old.md Normal file
View File

1456
readme.md

File diff suppressed because it is too large Load Diff

View File

@@ -1,35 +1,76 @@
# Scripts Directory # Scripts Directory
This directory contains deployment and validation scripts for the AzerothCore Docker deployment. This directory contains deployment, configuration, and management scripts for the AzerothCore Docker deployment.
## Contents ## Core Scripts
### 🚀 Setup & Deployment
- **`setup-server.sh`** - Interactive server setup wizard (recommended for new users)
- **`deploy-and-check.sh`** - Automated deployment and comprehensive health check script - **`deploy-and-check.sh`** - Automated deployment and comprehensive health check script
- **`auto-post-install.sh`** - Automated post-installation configuration
### 🔧 Configuration & Management
- **`configure-modules.sh`** - Module configuration analysis and guidance tool
- **`setup-eluna.sh`** - Lua scripting environment setup
- **`update-realmlist.sh`** - Update server address in realmlist configuration
- **`update-config.sh`** - Configuration file updates and management
### 💾 Backup & Restore
- **`backup.sh`** - Manual database backup
- **`backup-hourly.sh`** - Hourly automated backup script
- **`backup-daily.sh`** - Daily automated backup script
- **`restore.sh`** - Database restoration from backup
### 🧹 Maintenance
- **`cleanup.sh`** - Resource cleanup script with multiple cleanup levels - **`cleanup.sh`** - Resource cleanup script with multiple cleanup levels
- **`DEPLOYMENT.md`** - Complete documentation for the deployment script - **`rebuild-with-modules.sh`** - Rebuild containers with module compilation
- **`CLEANUP.md`** - Complete documentation for the cleanup script - **`test-local-worldserver.sh`** - Local worldserver testing
### 📚 Documentation
- **`DEPLOYMENT.md`** - Complete documentation for deployment scripts
- **`CLEANUP.md`** - Complete documentation for cleanup scripts
## Quick Usage ## Quick Usage
### Run Health Check on Current Deployment ### 🆕 First-Time Setup (Recommended)
```bash
# Interactive setup wizard
./scripts/setup-server.sh
```
### 🔧 Module Configuration Analysis
```bash
# Check module configuration requirements
./scripts/configure-modules.sh
```
### 🎮 Lua Scripting Setup
```bash
# Setup Eluna scripting environment
./scripts/setup-eluna.sh
```
### 🩺 Health Checks & Deployment
**Run Health Check on Current Deployment**
```bash ```bash
cd scripts cd scripts
./deploy-and-check.sh --skip-deploy ./deploy-and-check.sh --skip-deploy
``` ```
### Full Deployment with Health Checks **Full Deployment with Health Checks**
```bash ```bash
cd scripts cd scripts
./deploy-and-check.sh ./deploy-and-check.sh
``` ```
### Quick Health Check (Basic Tests Only) **Quick Health Check (Basic Tests Only)**
```bash ```bash
cd scripts cd scripts
./deploy-and-check.sh --skip-deploy --quick-check ./deploy-and-check.sh --skip-deploy --quick-check
``` ```
### Cleanup Resources ### 🧹 Cleanup Resources
```bash ```bash
cd scripts cd scripts
@@ -46,22 +87,94 @@ cd scripts
./cleanup.sh --hard --dry-run ./cleanup.sh --hard --dry-run
``` ```
### 💾 Backup & Restore Operations
```bash
# Manual backup
./scripts/backup.sh
# Restore from backup
./scripts/restore.sh backup_filename.sql
# Setup automated backups (already configured in containers)
# Hourly: ./scripts/backup-hourly.sh
# Daily: ./scripts/backup-daily.sh
```
## Features ## Features
**Container Health Validation**: Checks all 8 core containers ### 🚀 Setup & Deployment Features
**Interactive Setup Wizard**: Guided configuration for new users
**Automated Server Deployment**: Complete three-layer deployment system
**Module Management**: Automated installation and configuration of 13 enhanced modules
**Post-Install Automation**: Automatic database setup, realmlist configuration, and service restart
### 🔧 Configuration Features
**Module Analysis**: Identifies missing configurations and requirements
**Lua Scripting Setup**: Automated Eluna environment with example scripts
**Realmlist Management**: Dynamic server address configuration
**Config File Management**: Automated .conf file generation from .conf.dist templates
### 🩺 Health & Monitoring Features
**Container Health Validation**: Checks all core containers
**Port Connectivity Tests**: Validates all external ports **Port Connectivity Tests**: Validates all external ports
**Web Service Verification**: HTTP response and content validation **Web Service Verification**: HTTP response and content validation
**Database Validation**: Schema and realm configuration checks **Database Validation**: Schema and realm configuration checks
**Automated Deployment**: Three-layer deployment (database → services → tools)
**Comprehensive Reporting**: Color-coded status with detailed results **Comprehensive Reporting**: Color-coded status with detailed results
## Variable Names Verified ### 💾 Backup & Maintenance Features
**Automated Backups**: Scheduled hourly and daily database backups
**Manual Backup/Restore**: On-demand backup and restoration tools
**Multi-Level Cleanup**: Safe, hard, and nuclear cleanup options
**Container Rebuilding**: Module compilation and container rebuilding support
The scripts validate the updated variable names: ## Script Usage Examples
- `MYSQL_EXTERNAL_PORT` (was `DOCKER_DB_EXTERNAL_PORT`)
- `AUTH_EXTERNAL_PORT` (was `DOCKER_AUTH_EXTERNAL_PORT`)
- `WORLD_EXTERNAL_PORT` (was `DOCKER_WORLD_EXTERNAL_PORT`)
- `SOAP_EXTERNAL_PORT` (was `DOCKER_SOAP_EXTERNAL_PORT`)
- `MYSQL_ROOT_PASSWORD` (was `DOCKER_DB_ROOT_PASSWORD`)
For complete documentation, see `DEPLOYMENT.md`. ### First-Time Server Setup
```bash
# Complete guided setup (recommended)
./scripts/setup-server.sh
# Follow the interactive prompts to configure:
# - Server network settings
# - Storage locations
# - Database passwords
# - Module selections
```
### Post-Installation Configuration
```bash
# Analyze and configure modules
./scripts/configure-modules.sh
# Setup Lua scripting environment
./scripts/setup-eluna.sh
# Update server address after IP changes
./scripts/update-realmlist.sh new.server.address
```
### Maintenance Operations
```bash
# Health check existing deployment
./scripts/deploy-and-check.sh --skip-deploy
# Clean restart (preserves data)
./scripts/cleanup.sh --hard
./scripts/deploy-and-check.sh
# Backup before major changes
./scripts/backup.sh
```
## Configuration Variables
The scripts work with the updated environment variable names:
- `MYSQL_EXTERNAL_PORT` (database port)
- `AUTH_EXTERNAL_PORT` (authentication server port)
- `WORLD_EXTERNAL_PORT` (world server port)
- `SOAP_EXTERNAL_PORT` (SOAP API port)
- `MYSQL_ROOT_PASSWORD` (database root password)
- `SERVER_ADDRESS` (external server address)
- `STORAGE_ROOT` (data storage location)
For complete documentation, see `DEPLOYMENT.md` and `CLEANUP.md`.

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"

347
scripts/setup-eluna.sh Executable file
View File

@@ -0,0 +1,347 @@
#!/bin/bash
# ==============================================
# AzerothCore Eluna Lua Scripting Setup
# ==============================================
# Sets up Lua scripting environment for mod-eluna
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}"
;;
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 ELUNA LUA SCRIPTING SETUP"
# Check if Eluna is enabled
if [ "$MODULE_ELUNA" != "1" ]; then
print_status "ERROR" "MODULE_ELUNA is not enabled. Set MODULE_ELUNA=1 in environment file."
exit 1
fi
print_status "SUCCESS" "mod-eluna is enabled"
# Create lua_scripts directory
LUA_SCRIPTS_DIR="${STORAGE_PATH}/lua_scripts"
print_status "INFO" "Creating Lua scripts directory: $LUA_SCRIPTS_DIR"
if [ ! -d "$LUA_SCRIPTS_DIR" ]; then
mkdir -p "$LUA_SCRIPTS_DIR"
print_status "SUCCESS" "Created lua_scripts directory"
else
print_status "INFO" "lua_scripts directory already exists"
fi
# Create example scripts
print_status "HEADER" "CREATING EXAMPLE LUA SCRIPTS"
# Welcome script
cat > "$LUA_SCRIPTS_DIR/welcome.lua" << 'EOF'
-- ==============================================
-- Welcome Script for AzerothCore mod-eluna
-- ==============================================
-- Sends welcome message to players on login
local PLAYER_EVENT_ON_LOGIN = 3
local function OnPlayerLogin(event, player)
local playerName = player:GetName()
local accountId = player:GetAccountId()
-- Send welcome message
player:SendBroadcastMessage("|cff00ff00Welcome to the AzerothCore server, " .. playerName .. "!|r")
player:SendBroadcastMessage("|cffyellow🎮 This server features custom modules and Lua scripting!|r")
-- Log the login
print("Player " .. playerName .. " (Account: " .. accountId .. ") has logged in")
end
-- Register the event
RegisterPlayerEvent(PLAYER_EVENT_ON_LOGIN, OnPlayerLogin)
print("✅ Welcome script loaded successfully")
EOF
print_status "SUCCESS" "Created example welcome.lua script"
# Server info script
cat > "$LUA_SCRIPTS_DIR/server_info.lua" << 'EOF'
-- ==============================================
-- Server Info Commands for AzerothCore mod-eluna
-- ==============================================
-- Provides custom server information commands
local function ServerInfoCommand(player, command)
if command == "info" or command == "serverinfo" then
player:SendBroadcastMessage("|cff00ffffServer Information:|r")
player:SendBroadcastMessage("• Core: AzerothCore with mod-eluna")
player:SendBroadcastMessage("• Lua Scripting: Enabled")
player:SendBroadcastMessage("• Active Modules: 13 gameplay enhancing modules")
player:SendBroadcastMessage("• Features: Playerbots, Transmog, Solo LFG, and more!")
return false -- Command handled
end
return true -- Command not handled, continue processing
end
-- Register the command handler
local PLAYER_EVENT_ON_COMMAND = 42
RegisterPlayerEvent(PLAYER_EVENT_ON_COMMAND, ServerInfoCommand)
print("✅ Server info commands loaded successfully")
print(" Usage: .info or .serverinfo")
EOF
print_status "SUCCESS" "Created example server_info.lua script"
# Level reward script
cat > "$LUA_SCRIPTS_DIR/level_rewards.lua" << 'EOF'
-- ==============================================
-- Level Reward Script for AzerothCore mod-eluna
-- ==============================================
-- Gives rewards to players when they level up
local PLAYER_EVENT_ON_LEVEL_CHANGE = 13
local function OnPlayerLevelUp(event, player, oldLevel)
local newLevel = player:GetLevel()
local playerName = player:GetName()
-- Skip if level decreased (rare edge case)
if newLevel <= oldLevel then
return
end
-- Congratulate the player
player:SendBroadcastMessage("|cffff6600Congratulations on reaching level " .. newLevel .. "!|r")
-- Give rewards for milestone levels
local milestoneRewards = {
[10] = {item = 6948, count = 1, message = "Hearthstone for your travels!"},
[20] = {gold = 100, message = "1 gold to help with expenses!"},
[30] = {gold = 500, message = "5 gold for your dedication!"},
[40] = {gold = 1000, message = "10 gold for reaching level 40!"},
[50] = {gold = 2000, message = "20 gold for reaching level 50!"},
[60] = {gold = 5000, message = "50 gold for reaching the original level cap!"},
[70] = {gold = 10000, message = "100 gold for reaching the Burning Crusade cap!"},
[80] = {gold = 20000, message = "200 gold for reaching max level!"}
}
local reward = milestoneRewards[newLevel]
if reward then
if reward.item then
player:AddItem(reward.item, reward.count or 1)
end
if reward.gold then
player:ModifyMoney(reward.gold * 10000) -- Convert gold to copper
end
player:SendBroadcastMessage("|cffff0000Milestone Reward: " .. reward.message .. "|r")
-- Announce to server for major milestones
if newLevel >= 60 then
SendWorldMessage("|cffff6600" .. playerName .. " has reached level " .. newLevel .. "! Congratulations!|r")
end
end
print("Player " .. playerName .. " leveled from " .. oldLevel .. " to " .. newLevel)
end
-- Register the event
RegisterPlayerEvent(PLAYER_EVENT_ON_LEVEL_CHANGE, OnPlayerLevelUp)
print("✅ Level rewards script loaded successfully")
EOF
print_status "SUCCESS" "Created example level_rewards.lua script"
# Create a main loader script
cat > "$LUA_SCRIPTS_DIR/init.lua" << 'EOF'
-- ==============================================
-- Main Loader Script for AzerothCore mod-eluna
-- ==============================================
-- This script loads all other Lua scripts
print("🚀 Loading AzerothCore Lua Scripts...")
-- Load all scripts in this directory
-- Note: Individual scripts are loaded automatically by mod-eluna
-- This file serves as documentation for loaded scripts
local loadedScripts = {
"welcome.lua - Player welcome messages on login",
"server_info.lua - Custom server information commands",
"level_rewards.lua - Milestone rewards for leveling"
}
print("📜 Available Lua Scripts:")
for i, script in ipairs(loadedScripts) do
print(" " .. i .. ". " .. script)
end
print("✅ Lua script initialization complete")
print("🔧 To reload scripts: .reload eluna")
EOF
print_status "SUCCESS" "Created init.lua loader script"
# Create Eluna configuration documentation
cat > "$LUA_SCRIPTS_DIR/README.md" << 'EOF'
# AzerothCore Eluna Lua Scripts
This directory contains Lua scripts for the AzerothCore mod-eluna engine.
## Available Scripts
### welcome.lua
- Sends welcome messages to players on login
- Logs player login events
- Demonstrates basic player event handling
### server_info.lua
- Provides `.info` and `.serverinfo` commands
- Shows server configuration and features
- Demonstrates custom command registration
### level_rewards.lua
- Gives rewards to players at milestone levels (10, 20, 30, etc.)
- Announces major level achievements to the server
- Demonstrates player level change events and item/gold rewards
### init.lua
- Documentation script listing all available scripts
- Serves as a reference for loaded functionality
## Script Management
### Reloading Scripts
```
.reload eluna
```
### Adding New Scripts
1. Create `.lua` file in this directory
2. Use RegisterPlayerEvent, RegisterCreatureEvent, etc. to register events
3. Reload scripts with `.reload eluna` command
### Configuration
Eluna configuration is managed in `/azerothcore/config/mod_LuaEngine.conf`:
- Script path: `lua_scripts` (this directory)
- Auto-reload: Disabled by default (enable for development)
- Bytecode cache: Enabled for performance
## Event Types
Common event types for script development:
- `PLAYER_EVENT_ON_LOGIN = 3`
- `PLAYER_EVENT_ON_LOGOUT = 4`
- `PLAYER_EVENT_ON_LEVEL_CHANGE = 13`
- `PLAYER_EVENT_ON_COMMAND = 42`
- `CREATURE_EVENT_ON_SPAWN = 5`
- `SPELL_EVENT_ON_CAST = 1`
## API Reference
### Player Methods
- `player:GetName()` - Get player name
- `player:GetLevel()` - Get player level
- `player:SendBroadcastMessage(msg)` - Send message to player
- `player:AddItem(itemId, count)` - Add item to player
- `player:ModifyMoney(copper)` - Add/remove money (in copper)
### Global Functions
- `print(message)` - Log to server console
- `SendWorldMessage(message)` - Send message to all players
- `RegisterPlayerEvent(eventId, function)` - Register player event handler
## Development Tips
1. **Test in Development**: Enable auto-reload during development
2. **Error Handling**: Use pcall() for error-safe script execution
3. **Performance**: Avoid heavy operations in frequently called events
4. **Debugging**: Use print() statements for debugging output
## Compatibility Notes
- **AzerothCore Specific**: These scripts are for AzerothCore's mod-eluna
- **Not Compatible**: Standard Eluna scripts will NOT work
- **API Differences**: AzerothCore mod-eluna has different API than standard Eluna
EOF
print_status "SUCCESS" "Created comprehensive README.md documentation"
# Check if volume mount exists in docker-compose
print_status "HEADER" "CHECKING DOCKER COMPOSE CONFIGURATION"
if grep -q "lua_scripts" docker-compose-azerothcore-services.yml; then
print_status "SUCCESS" "lua_scripts volume mount already configured"
else
print_status "WARNING" "lua_scripts volume mount not found in docker-compose-azerothcore-services.yml"
print_status "INFO" "You may need to add volume mount to worldserver service:"
echo " volumes:"
echo " - \${STORAGE_PATH}/lua_scripts:/azerothcore/lua_scripts"
fi
# Check if Eluna container is configured
if grep -q "ac-eluna:" docker-compose-azerothcore-services.yml; then
print_status "SUCCESS" "Eluna container (ac-eluna) is configured"
else
print_status "INFO" "No separate Eluna container found (using embedded mod-eluna)"
fi
# Summary
print_status "HEADER" "SETUP COMPLETE"
echo "📁 Lua Scripts Directory: $LUA_SCRIPTS_DIR"
echo "📜 Example Scripts Created:"
echo " • welcome.lua - Player login messages"
echo " • server_info.lua - Custom info commands"
echo " • level_rewards.lua - Milestone rewards"
echo " • init.lua - Script loader documentation"
echo " • README.md - Complete documentation"
echo ""
print_status "INFO" "Next Steps:"
echo "1. Start/restart your worldserver container"
echo "2. Test scripts with GM commands:"
echo " • .reload eluna"
echo " • .info (test server_info.lua)"
echo "3. Login with a character to test welcome.lua"
echo "4. Level up a character to test level_rewards.lua"
echo ""
print_status "SUCCESS" "Eluna Lua scripting environment setup complete!"
print_status "WARNING" "Remember: AzerothCore mod-eluna is NOT compatible with standard Eluna scripts"