mirror of
https://github.com/notepadguyOfficial/WSL-Debian-Docker-Azerothcore-Playerbots-Installation.git
synced 2026-01-12 16:58:35 +00:00
96 lines
2.7 KiB
Bash
96 lines
2.7 KiB
Bash
#!/bin/bash
|
|
|
|
set -e
|
|
set -o pipefail
|
|
|
|
# Ensure Docker is running
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "❌ Docker not installed or not in PATH. Run system-prep.sh first."
|
|
exit 1
|
|
fi
|
|
|
|
# Set timezone in .env
|
|
if [ -f "src/.env" ]; then
|
|
timezone=$(cat /etc/timezone)
|
|
sed -i "s|^TZ=.*$|TZ=$timezone|" src/.env
|
|
else
|
|
echo "src/.env not found. Aborting."
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v mysql &> /dev/null; then
|
|
echo "[*] MySQL client not found. Installing mariadb-client..."
|
|
sudo apt-get update
|
|
sudo apt install -y mariadb-client
|
|
else
|
|
echo "✔️ MySQL client is already installed."
|
|
fi
|
|
|
|
# Clone AzerothCore if not already
|
|
if [ -d "azerothcore-wotlk" ]; then
|
|
echo "✔️ azerothcore-wotlk already exists. Cleaning SQL..."
|
|
destination_dir="data/sql/custom"
|
|
rm -rf "$destination_dir/db_world/"*.sql
|
|
rm -rf "$destination_dir/db_characters/"*.sql
|
|
rm -rf "$destination_dir/db_auth/"*.sql
|
|
else
|
|
echo "[*] Cloning AzerothCore..."
|
|
git clone https://github.com/liyunfan1223/azerothcore-wotlk.git --branch=Playerbot
|
|
echo "[*] Copying environment files..."
|
|
cp src/.env azerothcore-wotlk/
|
|
cp src/*.yml azerothcore-wotlk/
|
|
|
|
# Install modules
|
|
cd azerothcore-wotlk/modules
|
|
git clone https://github.com/liyunfan1223/mod-playerbots.git --branch=master
|
|
git clone https://github.com/noisiver/mod-learnspells.git
|
|
git clone https://github.com/azerothcore/mod-autobalance.git
|
|
git clone https://github.com/azerothcore/mod-solo-lfg.git
|
|
git clone https://github.com/azerothcore/mod-individual-xp.git
|
|
cd ..
|
|
fi
|
|
|
|
# Build and start containers
|
|
docker compose up -d --build
|
|
cd ..
|
|
|
|
# Fix ownership (if needed)
|
|
sudo chown -R 1000:1000 wotlk
|
|
|
|
# Execute SQL
|
|
custom_sql_dir="src/sql"
|
|
auth="acore_auth"
|
|
world="acore_world"
|
|
chars="acore_characters"
|
|
ip_address=$(hostname -I | awk '{print $1}')
|
|
|
|
function execute_sql() {
|
|
local db_name=$1
|
|
local dir="$custom_sql_dir/$db_name"
|
|
|
|
if [ -d "$dir" ] && compgen -G "$dir/*.sql" > /dev/null; then
|
|
for sql_file in "$dir"/*.sql; do
|
|
echo "Executing $sql_file"
|
|
temp_sql_file=$(mktemp)
|
|
if [[ "$(basename "$sql_file")" == "update_realmlist.sql" ]]; then
|
|
sed "s/{{IP_ADDRESS}}/$ip_address/g" "$sql_file" > "$temp_sql_file"
|
|
else
|
|
cp "$sql_file" "$temp_sql_file"
|
|
fi
|
|
mysql -h "$ip_address" -uroot -proot "$db_name" < "$temp_sql_file"
|
|
rm "$temp_sql_file"
|
|
done
|
|
else
|
|
echo "No SQL files found in $dir, skipping..."
|
|
fi
|
|
}
|
|
|
|
echo "[*] Running SQL imports..."
|
|
execute_sql "$auth"
|
|
execute_sql "$world"
|
|
execute_sql "$chars"
|
|
|
|
echo ""
|
|
echo "✅ AzerothCore project setup complete!"
|
|
echo "👉 `docker attach ac-worldserver` Use the worldserver console to create accounts and set GM level as needed."
|