Установка сервера WOW 3.3.5 на Ubuntu 23.04 + клиент Wow 3.3.5

Trinity Core 3.3.5 версию на ubuntu 23.04.

Содержание:

  1. Установка ПО:
  2. Выключение STRICT_MODE в Mysql 5.7 (требуется для работы TrinityCore)
  3. Создаем пользователя и заходим под ним:
  4. Скачиваем Trinity Core
  5. Компиляция сервера
  6. Копируем конфигурационные файлы из шаблонов
  7. Извлекаем ресурсы из клиента
  8. Извлекаем DBC и файлы карт:
  9. Извлекаем Визуальные карты:
  10. Извлечение карт передвижений
  11. Настройка базы данных для Trinity
  12. Создадим пользователя и БД:
  13. ОПЦИОНАЛЬНО: проброс портов, открытие портов:
  14. Запуск сервера
  15. Создание аккаунта и назначение GM
  16. Настройка клиента

 

  1. Установка ПО:

sudo apt-get install git clang cmake make gcc g++ libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev p7zip

mysql 5.7 https://linux.how2shout.com/install-mysql-5-7-server-and-client-on-ubuntu-22-04-lts-linux/#2_Installing_necessary_packages

sudo apt install -f mysql-client=5.7* mysql-community-server=5.7* mysql-server=5.7*

  1. Выключение 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

  1. Создаем пользователя и заходим под ним:

sudo adduser wow

sudo su wow

sudo usermod -aG sudo wow

  1. Скачиваем Trinity Core

git clone -b 3.3.5 https://github.com/TrinityCore/TrinityCore.git

  1. Компиляция сервера

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

  1. Извлекаем ресурсы из клиента

Скачать клиент 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

  1. Настройка базы данных для 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 сервера.

  1. ОПЦИОНАЛЬНО: проброс портов, открытие портов:

для 3.3.5 используются порты: 3724 и 8085

  1. Запуск сервера

далее мы хотим автоматизировать запуск и заодно авторестарт при падении сервера
идем в каталог и создаем 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 и переведет вас в консоль сервера не убивая процесс

  1. Создание аккаунта и назначение GM

Выполняется в консоли worldserver

account create  username  pass

account set gmlevel username 3 -1

  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 то рес талантов будет бесплатный

Написать комментарий