Компиляция сервера mangos one для WoW 2.4.3 под ubuntu

В этой статье я опишу все телодвижения необходимые для компиляции и последующего запуска сервера mangos для игры в WoW 2.4.3. Для более новых версий действия теже, но другая версия сервера и базы данных.

Для начала необходимо установить зависимости необходимые для компиляции сервера:

sudo apt-get install build-essential gcc g++ cpp automake git-core autoconf make patch libmysql++-dev libtool libcurl4-openssl-dev libssl-dev grep binutils subversion zlibc libc6 nano mysql-server

После окончания закачки и установки пакетов необходимо скачать исходники сервера. Создадим для них папку Sources и скачаем неё сорцы:

mkdir Sources
cd Sources
git clone git://github.com/mangos/one.git

Гит мангоса для WoW 2,4,3 вынесен в отдельную ветку и называется mangos one.
После выполнения в папке Sources появится папка с именем one, которая содержит исходники сервера.

Для «добавления мозгов» мобам можно пропатчить исходники патчем ScriptDev2:

cd one

svn co https://scriptdev2.svn.sourceforge.net/svnroot/scriptdev2/ src/bindings/ScriptDev2/

git am src/bindings/ScriptDev2/patches/MaNGOS-11167-ScriptDev2.patch

Обратите внимание на то, что версия патча может изменяться. Соответственно имя файла тоже.

Приступим к компиляции:

autoreconf -fvi && mkdir objdir && cd objdir

Теперь сконфигурируем мангос. Вы можете заменить /opt/mangos/ на любую удобную для вас папку.

../configure —prefix=/opt/mangos —sysconfdir=/opt/mangos/etc —enable-cli —enable-ra —datadir=/opt/mangos

После окончания конфигурирования приступим к сборке:

make

Если у вас многоядерный компьютер можете использовать make -j N. Где N = число ядер + 1.

Для установки сервера запустите команду:

make install

Если вы устанавливаете в папку к которой у вас нет прав, запустите команду c sudo:

sudo make install

Теперь создадим конфигурационные файлы. Учитывая что вы в корневой папке сервера (у меня /opt/mangos/):

cp etc/mangosd.conf.dist etc/mangosd.conf
cp etc/realmd.conf.dist etc/realmd.conf

Теперь создадим в папке bin нашего сервера вов каталоги maps, dbc и vmaps. Их необходимо предварительно извлеч экстрактором. Написан он только под win но под wine отлично сработал. Взять экстракторы можно тут. Для извлечения запустите vmapextract_v2.exe и ad.exe в папке с игрой. Затем переименуйте папку dbc в vmaps и скопируйте в папку bin сервера.

Теперь необходимо создать базы данных и наполнить их контентом.

sudo mysql -p < mangos/sql/create_mysql.sql

Базы созданы. Для наполнения я использовал phpmyadmin но можно и из консоли:

sudo mysql -p mangos < mangos/sql/mangos.sql
sudo mysql -p characters < mangos/sql/characters.sql
sudo mysql -p realmd < mangos/sql/realmd.sql

Обратите внимание сервер имеет вложеную папку mangos, в ней папка sql в которой в свою очередь лежат файлы баз данных необходимых для сервера.

Теперь можно попробовать запустить сервер. Для этого необходимо запустить файлы mangos-worldd и mangos-realmd в папке bin сервера.
Если всё успешно можно исправить файл realmlist.wtf:

set realmlist 127.0.0.1

После чего можно соединиться. Не пугайтесь в мире никого не будет!) Для заселения необходима база данных mangos TBCDB или YTDB. Скачайте её и импортируйте в базу mangos. После чего её необходимо пропатчить до версии сервера.
Сначала узнаем версию базы. Для этого рассмотрим таблицу db_version в базе данных mangos. Она будет содержать поле вроде этого:

required_s0056_8815_01_mangos_mangos_string

Необходимо найти в папках сорцов папку sql/updates а в ней найти патч с билдом большим чем у нас. Из поля в базе мы знаем, что последней ревизией в базу был добавлен патч s0056_8815_01_mangos_mangos_string.sql находим следуюший (число после s должно быть больше) и импортируем в базу. Потом импортирум следующий патч и т.д. пока не получим новейший вариант.

Можете не делать всего этого! А просто скачать пропатченую базу версии 0656.

После патчинга в базе появятся записи о всех объектах и персонажах мира. Перезапустите сервер и войдите в игру.
Обратите внимание, что для входа используются аккаунты из базы данных realmd таблици account. Пароль задаётся таким образом:

sha1(strtoupper($username.’:’.$password))

Можно создать php скрипт для регистрации пользователей вроде этого:

<meta content=»text/html; charset=utf8″ />
<?php
if (!isset($_POST[«name»])||!isset($_POST[«pass»])) {
    printf(‘<form action=»md.php» method=»post»>
    Имя: <input type=»text» name=»name» /><br>
    Пароль: <input type=»text» name=»pass» /><br>
    <input type=»submit» name=»ok» value=»Готово»/>
    </form>’);
} else {
    $username = $_POST[«name»];
    $password = $_POST[«pass»];
    $sha = sha1(strtoupper($username.’:’.$password));   

    $db = mysql_connect («localhost»,»mangos»,»mangos»);
    mysql_select_db («realmd»,$db);
    mysql_query(«SET NAMES utf8»);
    mysql_query(«INSERT INTO account (username,sha_pass_hash) VALUES (‘$username’,’$sha’)»,$db);
}
?>

Ну или же скачать красивый сайтег и через него всё делать=)
Осталось только изменить IP сервера и можно звать друзей играть в бёрнин крусейда)))

Выполните такие команды. Назначте название сервера и его ip адрес:

mysql -u root -p

mysql> use realmd;
mysql> UPDATE `realmlist` SET `name` = ‘название_сервера’ , `address` = ‘ip адрес сервера’ WHERE `id` = ‘1’;

Также необходимо исправить значения в конфигах. Измените в файле realmd.conf строку

BindIP = «0.0.0.0»

на

BindIP = «IP_Сервера»

Вот и всё теперь можете звать друзей.
Ах да… Если вы не можете создать блад эльфов и тауренов выполните такой скрипт к базе realmd:

UPDATE `account` SET `expansion`=’1′ WHERE (`expansion`=’0′);              
ALTER TABLE `account` CHANGE `expansion` `expansion` tinyint(3) unsigned NOT NULL default ‘1’;

Теперь точно можете играть))

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий

  1. Fack

    не работает после того места где надо скачать непосредственно сервер оне с гетахаба точнее его там нет и вообше нечего с него не качается почему-то. И я не умею пользоваться github и пишу с ошибками )

    Ответить