В этой статье я опишу все телодвижения необходимые для компиляции и последующего запуска сервера 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’;
Теперь точно можете играть))