From 2aadbcc2a174a79e5eee60e0e752541f77f9218b Mon Sep 17 00:00:00 2001 From: uprightbass360 Date: Mon, 17 Nov 2025 02:33:27 -0500 Subject: [PATCH] feat: add import/ directory for user database and config files - Created import/db/ for custom SQL files - Created import/conf/ for configuration overrides - Added comprehensive README with usage examples - Created example files for NPCs and playerbots config - Updated import-database-files.sh to support new directory - Maintains backward compatibility with database-import/ - Includes .gitignore to prevent accidental commits of sensitive data --- import/.gitignore | 11 +++ import/README.md | 123 ++++++++++++++++++++++++++ import/conf/examples/playerbots.conf | 24 +++++ import/db/examples/custom_npcs.sql | 18 ++++ scripts/bash/import-database-files.sh | 12 ++- 5 files changed, 186 insertions(+), 2 deletions(-) create mode 100644 import/.gitignore create mode 100644 import/README.md create mode 100644 import/conf/examples/playerbots.conf create mode 100644 import/db/examples/custom_npcs.sql diff --git a/import/.gitignore b/import/.gitignore new file mode 100644 index 0000000..5c63f3c --- /dev/null +++ b/import/.gitignore @@ -0,0 +1,11 @@ +# Ignore all files in import directories by default +db/* +conf/* + +# But keep the directory structure and examples +!db/examples/ +!db/examples/** +!conf/examples/ +!conf/examples/** +!.gitignore +!README.md diff --git a/import/README.md b/import/README.md new file mode 100644 index 0000000..df3afd5 --- /dev/null +++ b/import/README.md @@ -0,0 +1,123 @@ +# Import Directory + +This directory allows you to easily import custom database files and configuration overrides into your AzerothCore server. + +## 📁 Directory Structure + +``` +import/ +├── db/ # Database SQL files to import +└── conf/ # Configuration file overrides +``` + +## 🗄️ Database Import (`import/db/`) + +Place your custom SQL files here to import them into the database on server startup or deployment. + +### Supported Files + +- `auth.sql` - Authentication database updates +- `characters.sql` - Character database updates +- `world.sql` - World database updates +- `*.sql` - Any other SQL files will be imported automatically + +### Usage + +1. Place your SQL files in `import/db/`: + ```bash + cp my_custom_npcs.sql import/db/world.sql + cp my_accounts.sql import/db/auth.sql + ``` + +2. Deploy or restart your server: + ```bash + ./scripts/bash/import-database-files.sh + ``` + +### Example Files + +See `import/db/examples/` for sample SQL files. + +## ⚙️ Configuration Import (`import/conf/`) + +Place module configuration files here to override default settings. + +### Supported Files + +Any `.conf` file placed here will be copied to the server's config directory, overriding the default settings. + +### Common Configuration Files + +- `worldserver.conf` - Core world server settings +- `authserver.conf` - Authentication server settings +- `playerbots.conf` - Playerbot module settings +- `AutoBalance.conf` - AutoBalance module settings +- Any other module `.conf` file + +### Usage + +1. Create or copy a configuration file: + ```bash + cp storage/config/playerbots.conf.dist import/conf/playerbots.conf + ``` + +2. Edit the file with your custom settings: + ```ini + AiPlayerbot.MinRandomBots = 100 + AiPlayerbot.MaxRandomBots = 200 + ``` + +3. Apply the configuration: + ```bash + ./scripts/bash/configure-server.sh + ``` + + Or use the Python config tool for advanced merging: + ```bash + python3 scripts/python/apply-config.py + ``` + +### Configuration Presets + +Instead of manual configuration, you can use presets from `config/server-overrides.conf`: + +```ini +[worldserver.conf] +Rate.XP.Kill = 2.0 +Rate.XP.Quest = 2.0 + +[playerbots.conf] +AiPlayerbot.MinRandomBots = 100 +AiPlayerbot.MaxRandomBots = 200 +``` + +See `config/CONFIG_MANAGEMENT.md` for detailed preset documentation. + +## 🔄 Automated Import + +Both database and configuration imports are automatically handled during: + +- **Initial Setup**: `./setup.sh` +- **Deployment**: `./deploy.sh` +- **Module Staging**: `./scripts/bash/stage-modules.sh` + +## 📝 Notes + +- Files in `import/` are preserved across deployments +- SQL files are only imported once (tracked by filename hash) +- Configuration files override defaults but don't replace them +- Use `.gitignore` to keep sensitive files out of version control + +## 🚨 Best Practices + +1. **Backup First**: Always backup your database before importing SQL +2. **Test Locally**: Test imports on a dev server first +3. **Document Changes**: Add comments to your SQL files explaining what they do +4. **Use Transactions**: Wrap large imports in transactions for safety +5. **Version Control**: Keep track of what you've imported + +## 📚 Related Documentation + +- [Database Management](../docs/DATABASE_MANAGEMENT.md) +- [Configuration Management](../config/CONFIG_MANAGEMENT.md) +- [Module Management](../docs/ADVANCED.md#module-management) diff --git a/import/conf/examples/playerbots.conf b/import/conf/examples/playerbots.conf new file mode 100644 index 0000000..c2384cc --- /dev/null +++ b/import/conf/examples/playerbots.conf @@ -0,0 +1,24 @@ +# Example Playerbots Configuration Override +# Copy this file to import/conf/playerbots.conf and customize + +[worldserver] + +################################################################################################### +# PLAYERBOTS SETTINGS +################################################################################################### + +# Number of random bots +AiPlayerbot.MinRandomBots = 100 +AiPlayerbot.MaxRandomBots = 200 + +# Bot movement speed modifier (1.0 = normal speed) +AiPlayerbot.BotActiveAlone = 1 + +# Allow bots to form groups with players +AiPlayerbot.AllowPlayerBots = 1 + +# Bot gear update frequency (in seconds) +AiPlayerbot.BotGearScoreUpdateTime = 600 + +# Enable random bot login +AiPlayerbot.EnableRandomBots = 1 diff --git a/import/db/examples/custom_npcs.sql b/import/db/examples/custom_npcs.sql new file mode 100644 index 0000000..2740503 --- /dev/null +++ b/import/db/examples/custom_npcs.sql @@ -0,0 +1,18 @@ +-- Example: Add a custom NPC vendor +-- This file demonstrates how to add a custom NPC to your world database + +-- Add the NPC template +INSERT INTO `creature_template` (`entry`, `name`, `subname`, `minlevel`, `maxlevel`, `faction`, `npcflag`, `scale`, `unit_class`, `unit_flags`, `type`, `type_flags`, `InhabitType`, `RegenHealth`, `flags_extra`, `ScriptName`) +VALUES +(900000, 'Custom Vendor', 'Example NPC', 80, 80, 35, 128, 1, 1, 0, 7, 0, 3, 1, 2, ''); + +-- Add the NPC spawn location (Stormwind Trade District) +INSERT INTO `creature` (`guid`, `id1`, `map`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `MovementType`) +VALUES +(900000, 900000, 0, -8833.38, 628.628, 94.0066, 0.715585, 300, 0); + +-- Add some items to sell (optional) +-- INSERT INTO `npc_vendor` (`entry`, `item`, `maxcount`, `incrtime`, `ExtendedCost`) +-- VALUES +-- (900000, 2901, 0, 0, 0), -- Mining Pick +-- (900000, 5956, 0, 0, 0); -- Blacksmith Hammer diff --git a/scripts/bash/import-database-files.sh b/scripts/bash/import-database-files.sh index 5fca69b..0d40a0f 100755 --- a/scripts/bash/import-database-files.sh +++ b/scripts/bash/import-database-files.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copy user database files or full backup archives from database-import/ to backup system +# Copy user database files or full backup archives from import/db/ or database-import/ to backup system set -euo pipefail # Source environment variables @@ -9,7 +9,15 @@ if [ -f ".env" ]; then set +a fi -IMPORT_DIR="./database-import" +# Support both new (import/db) and legacy (database-import) directories +IMPORT_DIR_NEW="./import/db" +IMPORT_DIR_LEGACY="./database-import" + +# Prefer new directory if it has files, otherwise fall back to legacy +IMPORT_DIR="$IMPORT_DIR_NEW" +if [ ! -d "$IMPORT_DIR" ] || [ -z "$(ls -A "$IMPORT_DIR" 2>/dev/null)" ]; then + IMPORT_DIR="$IMPORT_DIR_LEGACY" +fi STORAGE_PATH="${STORAGE_PATH:-./storage}" STORAGE_PATH_LOCAL="${STORAGE_PATH_LOCAL:-./local-storage}" BACKUP_ROOT="${STORAGE_PATH}/backups"