Компиляция Trinity Core на Ubuntu Server

Устанавливаем необходимые дистрибутивы:

sudo apt-get install build-essential autoconf libtool gcc g++ make cmake git-core patch wget links zip unzip unrar libncurses5-dev
sudo apt-get install openssl libssl-dev mysql-server mysql-client libmysqlclient15-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev
sudo apt-get install libboost-dev libboost-thread-dev libboost-system-dev libboost-program-options-dev

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

sudo adduser trinity

По сути ACE и OpenSSL устанавливаются командами выше, но в случае проблем их можно скомпилировать вручную как указано ниже. Тогда желательно удалить их перед компилированием из системы к примеру такой командой apt-get autoremove libace-dev. Командой apt-cache search ace можно посмотреть какие файлы есть в репозитории Ubuntu и также версию ACE.

Устанавливаем ACE:

wget http://download.dre.vanderbilt.edu/previous_versions/ACE-6.0.3.tar.gz

(другие версии: http://download.dre.vanderbilt.edu/previous_versions/)

Распаковываем скачанный архив и открываем директорию:

tar xvzf ACE-6.0.3.tar.gz
cd ACE_wrappers

Создаем каталог для компиляции и открываем его:

mkdir build & cd build

Конфигурируем и устанавливаем:

../configure --prefix=/home/user/.sys/
make
make install

Возвращаемся обратно в директорию пользователя:

cd ~

Устанавливаем OpenSSL:
Скачиваем последнюю версию с http://openssl.org/source/:

wget http://openssl.org/source/openssl-0.9.8o.tar.gz

Распаковываем скачанный архив и открываем директорию:

tar -xvf openssl-0.9.8o.tar.gz
cd openssl-0.9.8o

Конфигурируем и устанавливаем:

./config --prefix=/home/user/.sys shared
make
make install

Возвращаемся обратно в директорию пользователя:

cd ~

Загружаем исходники Trinity:

git clone git://github.com/TrinityCore/TrinityCore.git

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

patch -p1 < file.patch

Открываем директорию с исходниками, создаем каталог для компиляции и открываем его:

cd TrinityCore-master && mkdir build && cd build

Конфигурируем на свое усмотрение (это всего лишь пример):

cmake ../ -DPREFIX=/home/user/server -DTOOLS=1

или так

cmake ../ -DPREFIX=/home/user/server -DTOOLS=1-DCMAKE_C_FLAGS="-O3 -pipe" -DCMAKE_CXX_FLAGS="${CMAKE_C_FLAGS}" -DDO_RA=1 -DLARGE_CELL=1 -DACE_LIBRARY=/home/user/.sys/lib/libACE.so -DACE_INCLUDE_DIR=/home/user/.sys/include/ -DSSLLIB=/home/user/.sys/lib/libssl.so

Если нужно указываем путь к gcc: -DCMAKE_C_COMPILER=/usr/bin/gcc-4.6
Если нужно указываем путь к g++: -DCMAKE_CXX_COMPILER=/usr/bin/g++-4.6

Параметры которые можно указать при конфигурации:
-DACE_LIBRARY=<путь к библиотеке ACE > (полный путь к библиотеке libACE.so, если ACE установлено «глобально», то данный флаг не применяется )
-DACE_INCLUDE_DIR=<путь к каталогу includes/headers, вашей библиотеки ACE> (полный путь к include директории ACE, если ACE установлено «глобально», то данный флаг не применяется )
-DOPENSSL_LIBRARIES=<путь к библиотеке OpenSSL> (путь к библиотеке OpenSSL library, если OpenSSL установлено «глобально», то данный флаг не применяется )
-DOPENSSL_INCLUDE_DIR=<путь к каталогу include, вашей библиотеки OpenSSL > (путь к каталогу include, вашей библиотеки OpenSSL, если OpenSSL установлено «глобально», то данный флаг не применяется)
-DSCRIPTS Сборка сервера и скриптов.
-DTOOLS Собрать так же и экстракторы карта/коллизии/дбц.
-DUSE_SFMT Использовать SFMT как случайный генератор чисел.
-DWITH_WARNINGS Показывать предупреждения.
-DWITH_COREDEBUG «собрать в дебаге».
-DWITH_SQL Скопировать SQL-файлы в каталог с установленным сервером.
-DPREFIX Задать каталог установки.

Компилируем:
make -j (число ядер процессора + 1) //пример для четырех ядерного процессора: make -j 5
make install
Настраиваем конфиги и переименовываем их:
mv /home/<папка пользователя>/server/etc/worldserver.conf.dist /home/<папка пользователя>/server/etc/worldserver.conf
mv /home/<папка пользователя>/server/etc/authserver.conf.dist /home/<папка пользователя>/server/etc/authserver.conf
Извлечение карт:
После компиляции ядра с использованием флага -DTOOLS=1 в папку bin должны скомпилироваться такие фалы как: mapextractor, vmap3extractor, vmap3assembler. Копируем их в директорию с World of Warcraft и запускаем их по очереди:

./mapextractor
./vmap4extractor
mkdir vmaps
./vmap4assembler Buildings vmaps

После создаем в папке с сервером папку к примеру «data» перемещаем в нее созданные экстракторами карт директории. Прописываем в worldserver.conf путь к данной папке.

Запуск:
auth.sh (путь к данному простому скрипту, в случае правильного запуска, можно сразу поместить в /etc/rc.local для автоматического запуска при старте системы)

#!/bin/bash
while :; do
/home/user/server/bin/authserver -c /home/user/server/etc/authserver.conf
sleep 10
done

world.sh

#!/bin/sh
while :; do
servlog=’/home/user/server/logs/server.log’;
outpatch=’/home/user/server/logs/crash/’;
date=`date «+%Y-%m-%d_%H:%M:%S»`;
echo «Server CRASHED !!! Start Bugreport System.» >> $outpatch$date.txt;
echo «Server.log Log FILE Last 30 Lines:» >> $outpatch$date.txt;
cat $servlog | tail -n 30 >> $outpatch$date.txt;
echo «» >> $outpatch$date.txt;
echo «END bugtracker system.» >> $outpatch$date.txt;
/home/user/server/bin/worldserver -c /home/user/server/etc/worldserver.conf
sleep 20
done

Загрузка баз данных:
Необходимо скачать последнюю официальную компиляцию базы данных с https://github.com/TrinityCore/TrinityCore/downloads
Либо YTDB базу подогнанную под TrinityCore http://ytdb.ru/showthread.php?t=5227, http://svn2.assembla.com/svn/ytdbase/, http://trinity-core.ru/threads/ytdb-for-trinity-%D1%80%D0%B5%D0%BB%D0%B8%D0%B7%D1%8B.1339/page-5
Также необходимо скачать все патчи опубликованные после полной версии и залить по очереди. Для YTDB если в архиве больше одного файла, то сначала заливать апдейты от ядра, потом от базы. Для официальной базы они находятся в скачанной ранее директории с исходниками ядра /sql/updates.

Изменение стартовой локации в YTDB 3.3.5a

Приведу пример mysql запросов на изменение стартовой локации для всех рас, на примере указана локация в Даларане.
Координаты в игре вычисляются командой .gps
— меняем стартовую локацию орков:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='2';

— меняем стартовую локацию нежити:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='5';

— меняем стартовую локацию тауренов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='6';

— меняем стартовую локацию троллей:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='8';

— меняем стартовую локацию эльфов крови:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='10';

— меняем стартовую локацию людей:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='1';

— меняем стартовую локацию дворфов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='3';

— меняем стартовую локацию ночных эльфов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='4';

— меняем стартовую локацию гномов:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='7';

— меняем стартовую локацию дренеев:

update playercreateinfo set position_x='5822' , position_y='499' , position_z='659' , orientation='1.137035' , map='571' , zone='4395' where race='11';

Так как ДК появится сразу не в своей локации и не будет иметь специализации «Гравирование», то сделаем чтобы ДК всех классов знали это при старте:

INSERT INTO playercreateinfo_spell (race, class, Spell, Note) VALUES
(1, 6, 53428, 'Runeforging'),
(2, 6, 53428, 'Runeforging'),
(3, 6, 53428, 'Runeforging'),
(4, 6, 53428, 'Runeforging'),
(5, 6, 53428, 'Runeforging'),
(6, 6, 53428, 'Runeforging'),
(7, 6, 53428, 'Runeforging'),
(8, 6, 53428, 'Runeforging'),
(10, 6, 53428, 'Runeforging'),
(11, 6, 53428, 'Runeforging');

P.S: Координаты Восточные королевства «Акерус: Черный оплот» (хуz map): 2408 -5633 380 0.

ID тренера для ДК: 29194.