Trinity Core 3.3.5 версию на ubuntu 23.04.
Содержание:
- Установка ПО:
- Выключение STRICT_MODE в Mysql 5.7 (требуется для работы TrinityCore)
- Создаем пользователя и заходим под ним:
- Скачиваем Trinity Core
- Компиляция сервера
- Копируем конфигурационные файлы из шаблонов
- Извлекаем ресурсы из клиента
- Извлекаем DBC и файлы карт:
- Извлекаем Визуальные карты:
- Извлечение карт передвижений
- Настройка базы данных для Trinity
- Создадим пользователя и БД:
- ОПЦИОНАЛЬНО: проброс портов, открытие портов:
- Запуск сервера
- Создание аккаунта и назначение GM
- Настройка клиента
- Установка ПО:
sudo apt-get install git clang cmake make gcc g++ libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev p7zip
sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*
- Выключение STRICT_MODE в Mysql 5.7 (требуется для работы TrinityCore)
sudo nano /etc/mysql/conf.d/disable_mysql_strict_mode.cnf
Содержимое файла:
[mysqld]
sql_mode=»IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION»
sudo service mysql restart
- Создаем пользователя и заходим под ним:
sudo adduser wow
sudo su wow
sudo usermod -aG sudo wow
- Скачиваем Trinity Core
git clone -b 3.3.5 https://github.com/TrinityCore/TrinityCore.git
- Компиляция сервера
cd TrinityCore
mkdir build
cd build
cmake ../ -DCMAKE_INSTALL_PREFIX=/home/wow/server
make
make install
Смотрим что исходники (директория /home/wow/TrinityCore и её содержимое) на месте. У меня почему-то её не оказалось. Пришлось клонировать заново.
6.Копируем конфигурационные файлы из шаблонов
cd /home/wow/server/etc/
cp worldserver.conf.dist worldserver.conf
cp authserver.conf.dist authserver.conf
- Извлекаем ресурсы из клиента
Скачать клиент WOW 3.3.5
Извлекаем DBC и файлы карт:
cd /home/wow/WOW_client/
/home/wow/server/bin/mapextractor
mkdir /home/wow/server/data
cp -r dbc maps /home/wow/server/data
nano /home/wow/server/etc/worldserver.conf
изменить datadir c «.» на «/home/wow/server/data»
Извлекаем Визуальные карты:
Далее в той же директории клиента продолжаем:
cd /home/wow/WOW_client/
/home/wow/server/bin/vmap4extractor
mkdir vmaps
/home/wow/server/bin/vmap4assembler Buildings vmaps
cp -r vmaps /home/wow/server/data
Извлечение карт передвижений
Опционально, делается еще дольше чем vmaps, но рекомендуется.
cd /home/wow/WOW_client/
mkdir mmaps
/home/wow/server/bin/mmaps_generator
cp -r mmaps /home/wow/server/data
- Настройка базы данных для Trinity
Идем по адресу: https://github.com/TrinityCore/TrinityCore/releases
Находим последний релиз TDB 335, копируем ссылку на 7z архив далее:
cd ~
mkdir tdb
cd tdb
wget https://github.com/TrinityCore/TrinityCore/releases/download/TDB335.23061/TDB_full_world_335.23061_2023_06_14.7z
7z x TDB_full_world_335.23061_2023_06_14.7z
cp TDB_full_world_335.23061_2023_06_14.sql /home/wow/
Создадим пользователя и БД:
mysql
USE mysql;
CREATE USER ‘trinity’@’localhost’ IDENTIFIED BY ‘trinity’;
GRANT ALL PRIVILEGES ON *.* TO ‘trinity’@’localhost’;
GRANT ALL ON *.* TO trinity@’localhost’ WITH GRANT OPTION;
FLUSH PRIVILEGES;
Экcпортируем в mysql файл create_mysql.sql
sudo mysql < /home/wow/server/create_mysql.sql
Содержимое файла:
CREATE USER ‘trinity’@’localhost’ IDENTIFIED BY ‘trinity’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
GRANT USAGE ON * . * TO ‘trinity’@’localhost’;
CREATE DATABASE `world` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON `world` . * TO ‘trinity’@’localhost’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `characters` . * TO ‘trinity’@’localhost’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `auth` . * TO ‘trinity’@’localhost’ WITH GRANT OPTION;
Поправить /home/wow/server/etc/worldserver.conf:
Заменить переменные
Logindatabaseinfo
trinity;trinity;auth(world,charachters) на trinity;password;auth(world,charachters)
и /home/wow/server/etc/authserver.conf
Logindatabaseinfo
trinity;trinity;auth на trinity; password;auth
Далее БД должна экспортироваться при первом запуске world сервера.
- ОПЦИОНАЛЬНО: проброс портов, открытие портов:
для 3.3.5 используются порты: 3724 и 8085
- Запуск сервера
далее мы хотим автоматизировать запуск и заодно авторестарт при падении сервера
идем в каталог и создаем 2 файла
Код:
cd /home/wow/server/bin/
tourch auth.sh
tourch world.sh
далее делаем файлы исполняемыми
Код:
sudo chmod +x auth.sh
sudo chmod +x world.sh
добавляем в файлы скрипт
Код:
nano auth.sh
и вставляем текст
#!/bin/bash
while :; do
/home/wow/server/bin/authserver -c /home/wow/server/etc/authserver.conf
sleep 10
done
для world сервера мы изменим параметр sleep
Код:
nano world.sh
#!/bin/bash
while :; do
/home/wow/server/bin/worldserver -c /home/wow/server/etc/worldserver.conf
sleep 30
done
далее установим screen
Код:
sudo apt install screen
и запускаем сервер командами
Код:
screen -AmdS world /home/wow/server/bin/world.sh
screen -AmdS auth /home/wow/server/bin/auth.sh
смотрим запустились процессы
Код:
screen -ls // увидим 2 процесса auth и world
для подключение к консоли сервера
Код:
screen -R world
Ctrl+C // убьет процесс
Ctrl+A+D закроет screen и переведет вас в консоль сервера не убивая процесс
- Создание аккаунта и назначение GM
Выполняется в консоли worldserver
account create username pass
account set gmlevel username 3 -1
- Настройка клиента
Откройте realmlist.wtf внутри директории клиента World of Warcraft/Data/RU-ru. IP адрес внутри файла realmlist.wtf должен быть адресом вашего сервера.
Измените строку: set realmlist X.X.X.X
Например: set realmlist 127.0.0.1
Опционально: если хотите использовать WoW Launcher.exe для запуска клиента, то вы должны установить patchlist тот же ip/dns что и для вашего сервера.
Список полезных игровых команд
Приведу также некоторые часто используемые игровые команды. Большинство из них тестировалось на WoW WotLK 3.3.5.
Справка:
/? — помощь по игре;
.commands — список всех команд;
.help <cmd_name> — справка по команде.
Грандмастер:
.gm <on/off> — вкл/выкл режим GM (Grand Master);
.gm fly <on/off> — вкл/выкл режим полета (Fly). Пробел — летим выше, X — ниже;
.gm visible <on/off> — изменить видимость персонажа;
.bank — отобразить окно с инвентарем;
.die — гибель игока или выбранного персонажа.
Аккаунт:
.levelup 1 — увеличить уровень героя на 1 (число можно изменять);
.ann <TEXT> — большой анонс, от имени сервера;
.nameann <TEXT> — анонс с указанным текстом от имени игрока;
.gmann <TEXT> — анонс от имени GM без отображения имени;
.gmnameann <TEXT> — анонс от имени GM + имя игрока;
.reset level — сброс уровня игрока.
Инвентарь и вещи:
.additem <item_name> 5 — добавить предмет с именем ‘item_name’ в количестве 5-ти штук. Также можно указать предмет ссылкой (вместо указания его имени) — клацнув по нему с зажатой клавишей SHIFT (например в окне с предметами у торговца);
.repairitems — отремонтировать все вещи игрока или выбранного персонажа.
Навыки и заклинания:
.aura <spell_id> — добавляет ауру;
.reset spells — сброс заклинаний;
.reset talents — сброс очков таланта;
.learn all recipes <profession> — изучить все рецепты для профессии;
.learn all talents — изучить/получить все таланты;
.unaura <spell_id> — убирает ауру.
Модификации параметров:
.maxskill — увеличение значений всех навыков к максимуму;
.modify energy <N> — изменить значение энергии на число N;
.modify hp <N> — количество здоровья (Health Points);
.modify mana <N> — количество маны;
.modify money <N> — нужны деньги?;
.modify rep <N> — репутация;
.modify scale 1.5 — изменить размер персонажа в 1,5 раза;
.modify speed all <N> — изменить скорость перемещения во всех режимах (число от 0.1 до 50);
.modify speed fly 15 — изменить скорость перемещения в режиме полета на 15;
.modify speed swim <N> — скорость плавания = N (число);
.modify speed walk <N> — скорость ходьбы.
Перемещения и телепортация:
.explorecheat 1 — открывает всю карту;
.tele <location_name> — телепортация в локацию с именем ‘location_name’. Например: .tele exodar .tele ghostlands;
.gps — показать текущие координаты.
Существа, NPC:
.npc add <ID> — добавить существо с указанным идентификатором ID;
.npc delete — удалить выбранное существо;
.npc set factionid <N> — изменить фракцию для выбранного существа на N (число);
.npc follow — заставит выбранное существо следовать за вами;
.npc follow stop — прекратить следование выбранного существа за игроком;
.npc info — информация про существо.
Разное:
/macro, /m — окно макросов;
Управление сервером:
.reload all — перезагрузка всех таблиц на сервере;
.reload <table_name> — перезагрузка указанной таблицы;
.reload config — перезагрузка настроек мира;
.server info — информация о сервере (версия TC, время работы, количество игроков и подключений);
.server motd — вывести «сообщение дня» на сервере;
.server plimit <N> — установить лимит количества игроков на сервере;
.server restart force 5- перезапуск сервера через 5 секунд;
.server restart cancel — отмена ранее запрошенного перезапуска сервера;
.server set motd — задать на сервере «сообщение дня»;
.server shutdown force 5 — остановка сервера. В случае из статьи сервер остановится и снова запустится, поэтому нужно остановить службу systemd ‘tc-worldserver’ (командой systemctl stop tc-worldserver.service);
.wchange <M> <N> — изменить погоду где: M — тип (0 — отмена, 1 — дождь, 2 — снег, 3 — песок), N — интенсивность (число);
.whispers <on/off> (шептуны) — вкл/выкл прием личных сообщений (ЛС).
Описание настроек worldserver.conf
RealmID = 1 Айди игрового мира
DataDir = «.» Папка где находятся maps и dbc
LogsDir = «.» Папка куда будут создаваться логи
LoginDatabaseInfo = «127.0.0.1;3306;trinity;trinity;auth» Соединение с базой auth
WorldDatabaseInfo = «127.0.0.1;3306;trinity;trinity;world» Соединение с базой world
CharacterDatabaseInfo = «127.0.0.1;3306;trinity;trinity;characters» Соединение с базой characters
WorldServerPort = 8085 Порт сервера
BindIP = «0.0.0.0» Айпи сервера
PlayerLimit = 100 Максимальное количество игроков на сервере
vmap.enableLOS = 0 Vmaps (Геодата) по умолчанию включено, но если нету ставьте 0
vmap.enableHeight = 0
=====================LOGS=====================
LogFile = «Server.log» Лог сервера
WorldLogFile = «World.log» Лог игрового мира
DBErrorLogFile = «DBErrors.log» Лог ошибок в БД
CharLogFile = «Char.log» Лог чаров
GmLogFile = «GM.log» Лог Гейм-Мастеров (ГМов)
GmLogPerAccount = 1 Для каждого аккаунта ГМа отдельный лог
ArenaLogFile = «arena.log» Лог арены
ChatLogFile = «Chat.log» Лог чата
ChatLogs.Whisper = 0 Выключить логи шепота в чате
ChatLogs.Party = 0 Выключить логи группового чата
ChatLogs.Raid = 0 Выключить лог рейдового чата
ChatLogs.Guild = 0 Выключить лог чата гильдий
ChatLogs.Public = 0 Выключить лог общего чата
ChatLogs.BattleGround = 0 Выключить лог чата на поле битв
=====================SERVER SETTINGS=====================
GameType = 0 Тип игры (0 — Нормальный 1 — ПВП, 4 Нормальный, 6 — РП, 8 — РППВП, 16 — ФФА_ПВП все могут бить друг друга, даже своя фракция)
RealmZone = 1 Язык (по умолчанию
Expansion = 2 Поддержка клиентов 0 — Оригинал 1 — Burning Crusade 2 — Lich King
MinPlayerName = 2 Минимально букв в имени игрока
MinPetName = 2
MaxWhoListReturns = 49 Отображение в списке онлайна
CharacterCreating.Disabled = 0 Разрешить создавать персонажей
CharactersPerAccount = 50 Максимальное количество игроков на одном аккаунте
CharactersPerRealm = 10 Максимальное количество персонажей в игровом мире
HeroicCharactersPerRealm = 1 Максимальное количество героических персонажей (ДК)
CharacterCreating.MinLevelForHeroicCharacter = 55 Какого уровня должен быть любой персонаж для того что бы можно было создать героического персонажа
SkipCinematics = 2 Пропустить видео интро
MaxPlayerLevel = 80 Максимальный уровень игроков
MinDualSpecLevel = 40 Уровень на котором можно изучить двойную специализацию
StartPlayerLevel = 1 Старт уровень персонажей
StartHeroicPlayerLevel = 55 Старт уровень героических персонажей (ДК)
StartPlayerMoney = 0 Старт голды у игроков (что бы было например 1000 голд нужно писать 10000000)
MaxHonorPoints = 75000 Максимальное количество очков чести
StartHonorPoints = 0 Стартовое количество очков чести
MaxArenaPoints = 10000 Максимальное количество очков арены
StartArenaPoints = 0 Стартовое количество очков арены
ns)
# 0 — (Enabled, Everyone)
# 2 — (Enabled, GMs/Admins)
# 3 — (Enabled, Admins)
# 4 — (Disabled)
InstantLogout = 1 Моментальный выход в меню (без кд) 0 — игроки, 1 — модераторы/гмы/админы, 2 только для ГМов/Админов, 3 — Только для админов, 4 — Отключить
AllFlightPaths = 1 Открыть все пути полётов
InstantFlightPaths = 0 если 1 то замесь полёта сразу будет телепортировать
AlwaysMaxSkillForLevel = 0 если 1 то скилы будут повышаться сразу с поднятием лвла
CastUnstuck = 1 Разрешить использовать анти-застревание игрокам
Instance.IgnoreLevel = 0 если 1 то во все подземелья смогут ходить игроки любого лвла
Instance.IgnoreRaid = 0 если 1 то игроки смогут ходить в инсты без рейда
Quests.IgnoreRaid = 0 если 1 то рейдовые квесты можно будет испольнять без рейда
MinPetitionSigns = 9 Количество подписей для создания гильдии
MaxGroupXPDistance = 74 Дистанция получение опыта в группе
Event.Announce = 0 Анонсы эвентов
Motd = «Welcome to a Trinity Core Server.» Приветствие в чате
DungeonFinder.Enable = 0 если 1 то включает систему поиска подземелий
AccountInstancesPerHour = 15 Лимит подземелий в течении часа
=====================PLAYER INTERACTION===================
AllowTwoSide.Accounts = 1 Возможность создавать героев за обе фракции
AllowTwoSide.Interaction.Chat = 1 Понимание в чате обоих фракций
AllowTwoSide.Interaction.Channel = 1 Общие каналы обоих фракций
AllowTwoSide.Interaction.Group = 1 Можно в группе ходить игрокам обоих фракций
AllowTwoSide.Interaction.Guild = 1 Можно находится в гильде игрокам обоих фракций
AllowTwoSide.Interaction.Auction = 1 На аукционе вещи обоих фракций
AllowTwoSide.Interaction.Mail = 1 Игроки обоих фракций могут друг другу присылать почту
AllowTwoSide.WhoList = 1 Список онлайн обоих фракций
AllowTwoSide.AddFriend = 1 Можно добавлять игроков противоположной фракции
AllowTwoSide.Trade = 1 Возможность кидать трейд противоположной фракции
TalentsInspecting = 1 Возможность просматривать таланты игроков
==================CREATURE SETTINGS==================
Rate.Creature.Aggro = 1 если 0 все мобы будут не агрессивные
Время реса мобов боссов и т.д (время в секундах)
Corpse.Decay.NORMAL = 60
Corpse.Decay.RARE = 300
Corpse.Decay.ELITE = 300
Corpse.Decay.RAREELITE = 300
Corpse.Decay.WORLDBOSS = 3600
Физический Урон мобов, боссов и т.д (1 = 100%)
Rate.Creature.Normal.Damage = 1
Rate.Creature.Elite.Elite.Damage = 1
Rate.Creature.Elite.RARE.Damage = 1
Rate.Creature.Elite.RAREELITE.Damage = 1
Rate.Creature.Elite.WORLDBOSS.Damage = 1
Магический Урон мобов, боссов и т.д (1 = 100%)
Rate.Creature.Normal.SpellDamage = 1
Rate.Creature.Elite.Elite.SpellDamage = 1
Rate.Creature.Elite.RARE.SpellDamage = 1
Rate.Creature.Elite.RAREELITE.SpellDamage = 1
Rate.Creature.Elite.WORLDBOSS.SpellDamage = 1
Уровень жизни мобов, боссов и т.д (1 = 100%)
Rate.Creature.Normal.HP = 1
Rate.Creature.Elite.Elite.HP = 1
Rate.Creature.Elite.RARE.HP = 1
Rate.Creature.Elite.RAREELITE.HP = 1
Rate.Creature.Elite.WORLDBOSS.HP = 1
====================SERVER RATES===================
Рейты восстановления
Rate.Health = 1
Rate.Mana = 1
Rate.Rage.Income = 1
Rate.Rage.Loss = 1
Rate.RunicPower.Income = 1
Rate.RunicPower.Loss = 1
Rate.Focus = 1
Rate.Energy = 1
Rate.Loyalty = 1
Рейты выпадения итемов (дроп)
Rate.Drop.Item.Poor = 1
Rate.Drop.Item.Normal = 1
Rate.Drop.Item.Uncommon = 1
Rate.Drop.Item.Rare = 1
Rate.Drop.Item.Epic = 1
Rate.Drop.Item.Legendary = 1
Rate.Drop.Item.Artifact = 1
Rate.Drop.Item.Referenced = 1
Rate.Drop.Money = 1
Рейты опыта
Rate.XP.Kill = 1
Rate.XP.Quest = 1
Rate.XP.Explore = 1
Rate.XP.Kill.Premium = 1
Rate.XP.Quest.Premium = 1
Rate.XP.Explore.Premium = 1
Стоимость подчинки
Rate.RepairCost = 1
Rate.Damage.Fall = 1 Урон при падении
Rate.Honor = 1 Рейт очков чести
Rate.Talent = 1 рейт талантов
Рейты репутации
Rate.Reputation.Gain = 1
Rate.Reputation.LowLevel.Kill = 1
Rate.Reputation.LowLevel.Quest = 1
Rate.Reputation.RecruitAFriendBonus = 0.1
Rate.MoveSpeed = 1 Рейт скорости бега игроков
Rate.InstanceResetTime = 1 Рейт реса подземелий
SkillGain.Crafting = 1 Рейт профессий
SkillGain.Defense = 1 Рейт защиты
SkillGain.Weapon = 1 Рейт скиллов оружий
Шанс изучения
SkillChance.Orange = 100
SkillChance.Yellow = 75
SkillChance.Green = 25
SkillChance.Grey = 0
Death.SicknessLevel = 11 после 11-го лвла появляется маска.
===================AUTO BROADCAST=================
AutoBroadcast.On = 1 Включить автоматические обьявления
AutoBroadcast.Center = 0 если 0 — анонсы, 1 уведомления, 2 уведомления и анонсы
AutoBroadcast.Timer = 60000 время показа (60000 = 60 секунд)
==================BATTLEGROUND CONFIG==================
Battleground.CastDeserter = 1 Кидает ауру дезиртира если игрок вышел во время битвы
Battleground.QueueAnnouncer.Enable = 1 Анонсы БГ
Battleground.GiveXPForKills = 0 если 1 то будет давать опыт за убийства игроков на бг
====================ARENA CONFIG====================
Arena.MaxRatingDifference = 150 Максимальная разница рейтинга между двумя командами
Arena.AutoDistributePoints = 0 Автоматически начислять АП
Arena.AutoDistributeInterval = 7 Автоматически начислять 1 раз в 7 дней
Arena.QueueAnnouncer.Enable = 1 Анонсы арены
Arena.ArenaStartRating = 1800 Стартовый рейтинг арены
Arena.ArenaStartPersonalRating = 0 Стартовый персональный рейтинг арены
==================CUSTOM SERVER OPTIONS=================
PlayerStart.AllReputation = 0 если 1 то игроки стартуют с максимальной репутацией
PlayerStart.AllSpells = 0 если 1 то игроки стартуют со всеми заклинаниями классовыми
PlayerStart.MapsExplored = 0 если 1 то у игроков открыта вся карта мира
HonorPointsAfterDuel = 0 если 1-100000 то будет давать количество очков чести за дуэль.
NoResetTalentsCost = 0 если 1 то рес талантов будет бесплатный