Компиляция TrinityCore на Windows 10 х64

WinWoolF

New member
Команда форума
Администратор
Регистрация
13.10.2013
Сообщения
5 354
Реакции
452
Баллы
0
Гайд по компиляции сервера TrinityCore на Windows 10 х64

246


Это подробный гайд по компиляции (сборке) серверов World of Warcraft на базе ядра TrinityCore. Следуя подсказкам гайда вы сможете скомпилировать сервер любой из доступных версий с сайта разработчика GitHub - TrinityCore/TrinityCore: TrinityCore Open Source MMO Framework (master = 7.3.5.25996, 3.3.5 = 3.3.5a.12340). В гайде будет подробно рассказано о том какой софт необходим и сам процесс сборки сервера из исходников.
Так же сразу стоит отметить, что этот гайд создавался с целью показать как собрать сервер у себя на ПК для людей которые до этого ни когда этим не занимались и не имеют каких либо познаний в этой области. По этому в нем будут опущены все технические моменты тех или иных настроек программ и компонентов локального сервера, которые будут только путать новичков. Для тех кому интересно разобраться допустим с принципами работы MySQL есть специализированные сайты, где это все подробно можно изучить.
Гайд составлен именно под windows 10 64 битной разрядности а не более ранние версии windows. Это обоснованно тем, что разработчики TrinityCore всегда оптимизируют свои продукты под последние стабильные версии софта, это приводит к различным отличиям от компиляции на более ранних версиях windows. И если опытному человеку не составит труда скомпилировать и на XP, то у новичка возникнет много сложностей и вопросов. Так же весь набор программ, на которые тут будут приведены ссылки, будут корректно работать только с windows 10 х64.


Нужный софт:
Для компиляции сервера и дальнейшей работы с ним потребуются определенные программы и пакеты библиотек. Ниже будет приведен список софта с пояснениями для каждой программы. Вы сможете скачать их по ссылкам (рекомендуется), либо найти в сети самостоятельно. Так же советую сначала установить все необходимые программы из списка, и только потом переходить к следующим шагам из гайда.

Актуальный софт на странице Тринитикор - TrinityCore Collaboration Platform

Софт который использовался мной при написании гайда несколько лет назад:
boost_1_64_0-msvc-14.1-64 - Набор библиотек C ++ необходимых для работ программ для компиляции - скачать.
Win64OpenSSL-1_0_2m - Так же набор динамических библиотек необходимых для работы сервера TrinityCore - скачать.
Git 2.15.1.2 - софт для получения исходников, так же у него существует очень полезная функция сохранности файлов. Если один из файлов был удален или изменен, то Git об этом сразу же начнет сигнализировать изменив значок на папке с зеленого на красный - скачать.
mysql-5.6.26 - Софт необходимый для работы баз данных сервера - скачать.
cmake-3.10.0 - Программа для генерации файлов из исходного кода разработчиков - скачать.
Microsoft: Visual Studio - Программа для компиляции сгенерированных файлов - скачать.
NavicatPremium12.0.16 - Программа для работы с базами данных сервера, имеющая отличный функционал - скачать.


Установка и настройка программ:
Рекомендую установку программ производить по дефолтному пути установки указанному в установщике, в дальнейшем это поможет избежать лишних сложностей.
Так же желательно соблюсти порядок установки программ соответствующий этому списку. И все работы проводить непосредственно на диске C:
Очень важно! Не использовать в устанавливаемых программах или папках сервера названия написанные не на латинице! Приводит к ошибкам при компиляции 100%.

Boost:
Установка этой программы не вызовет ни каких сложностей и вопросов. Просто следуйте по шагам установки не изменяя стандартных настроек. После того как установили программу нужно настроить windows для корректной работы. Для этого переходим в панель "Система" и во вкладку "Дополнительные параметры системы"
247


В открывшемся окне переходим во вкладку "Переменные среды".
248


Далее в окне "Системные переменные" кликаем по кнопке "создать"
249


И в открывшемся окне указываем необходимые данные.
В поле "Имя переменной" пишем BOOST_ROOT
в поле "Значение переменной" пишем путь к к папке в которую устанавливали boost. Если установку проводили как и рекомендовалось с дефолтными настройками то путь будет C:/local/boost_1_64_0.

250


После нажимаем "ОК" и сохраняем все изменения.


OpenSSL:
Установка этих библиотек так же не вызовет ни каких вопросов или сложностей. Просто следуйте пунктам установки сохроняя дефолтные настройки инсталятора. Каких либо дополнительных настроек эти библиотеки не требуют.


Git:
Во время установки Git так же оставляем все установочные пути без изменений. Большая часть установки не потребует внесения каких либо изменений. Но есть и пункты в которых будет необходимо указать правильный пункт.

В окне выбора устанавливаемых компонентов проследите чтоб у вас были указанны все галочки как на скриншоте ниже
251


В окне выбора того, как будет использоваться Git так же нужно установить галочку как на скриншоте.
252


И последний пункт в котором необходимо правильно указать выбор при установке. Указываем использование библиотек OpenSSL.
253


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


MySQL:
Это весьма важный компонент сервера и от правильности его установки в дальнейшем будет зависеть очень многое. По этому в точности соблюдайте пункты установки, которые будут показаны ниже.

В окне выбора типа установки выбираем пункт "Typical"
254


Дойдя до этого пункта обязательно ставим в самом низу галочку как на скриншоте. Если этого не сделать, то все дальнейшие настройки MySQL окажутся недоступными.
255


В этом окне выбираем пункт с детальной конфигурацией как показано на скриншоте.
256


В этом окне выбираем в каком качестве будет использоваться MySQL. На наиболее полезным будет параметр для разработчиков. Устанавливаем галочку как показано на скриншоте.
257


В этом окне выбираем тип работы баз данных. Нам требуется мультифункциональный тип. Устанавливаем галочку как на скриншоте.
258


В этом окне мы указываем адрес порта на котором будет работать MySQL. Рекомендую оставить адрес порта без изменений 3306. Если же по каким либо причинам вы измените этот порт, то в дальнейшем будет необходимо изменить его и в настройках нашей сборки.
259


В окне выбора языковой кодировки указываем пункт с UTF 8, как показано на скриншоте ниже. Выбор других пунктов может вызвать в дальнейшем некорректное отображение букв.
260


В этом окне указываем пароль для root доступа к серверу MySQL. Укажите все настройки как на скрине ниже. Естественно пароль необходимо запомнить или записать. Логин по умолчанию root.
261


Это финальная часть установки. Если вы сделали все правильно то в конце установки при проверке параметров у вас должно получится так же как и на скриншоте.
262



Сmake:
При установке cmake нам нужно будет выбрать только один нужный параметр. Все остальные шаги проходят с настройками по умолчанию

Дойдя до этого окна установки выберите параметр как указан на скриншоте ниже.
.
263


Все дальнейшие шаги установки выполняем без изменений.


Microsoft: Visual Studio:
Это так же важный сфот при установке которого потребуется проследить за правильностью устанавливаемых компонентов программы. Запускаем установку и в открывшемся окне во вкладке "Рабочие нагрузки" в левой части окна отмечаем пункт с разработкой приложений на С++, а в правой части окна устанавливаем в списке все галочки как показаны на скриншоте.
264


После этого переходим во вкладку "Отдельные компоненты". Все галочки которые уже установлены мы не трогаем. Дойдя до раздела в списке "Пакеты SDK, библиотеки и платформы" отмечаем галочками все пункты которые указанны ниже.
  • Инструменты для Entity Framework 6
  • Пакет SDK для графических инструментов Windows 8.1
  • Пакет SDK для TypeScript 2.3
  • Пакет SDK для Windows 10 (10.0.15063.0) для UWP: C#, VB, JS
  • Пакет SDK для Windows 10 (10.0.15063.0) для UWP: C++
  • Поддержка Visual C++ ATL
  • Windows 10 SDK (10.0.10586.0)
  • Windows 10 SDK (10.0.15063.0) для Desktop C++ (x86 и x64)
  • Windows 10 SDK (10.0.16299.0) для Desktop C++ (x86 и x64)
  • Windows 10 SDK (10.0.16299.0) для UWP: C#, VB, JS
  • Windows 10 SDK (10.0.16299.0) для UWP: C++
Далее не изменяя пути установки кликаем по кнопке установить и дожидаемся окончания установки. Это достаточно долгий процесс, поскольку установщик будет качать из сети все необходимые ему файлы. После окончания установки нужно перезагрузить ПК как того и просит установщик.


NavicatPremium:
Здесь нет ни чего сложного, по этому просто следуем шагам установки до окончания. После чего читаем текстовый вайл идущий в комплекте и делаем все как там написано.



Компиляция и настройка сервера:

Теперь когда весь необходимый софт установлен и настроен перейдем непосредственно к компиляции эмулятора сервера WoW.

Получение исходников (сырцов) ядра TrinityCore:
Создаем на диске С: папку Trinity и сразу же в ней создаем папку Build. Вы можете создавать папку в любом удобном вам месте и с любым названием, так же и вторую папку вы можете назвать как хотите. Главное чтоб в названиях не было пропусков и оно состояло только из английского алфавита.
Далее кликаем правой кнопкой мыши по папке Trinity и в появившемся меню выбираем пункт Git Clone

277

В открывшемся окне в строке url указываем адрес github откуда будет идти загрузка.
Поле directory обычно заполнять не требуется, оно автоматически заполняется и создает подпапку TrinityCore в которую и будут загружены исходники. Если вам нужно вы можете в ручную создать папку для загрузки и указать к ней путь.
Отмечаем галочкой поле Branch и в зависимости от того какой сервер мы компилируем указываем в нем данные.
  • Для сервера WOTLK пишем - 3.3.5.
  • Для Legion пишем - master. Заполнение этого поля указывает программе исходники какого сервера необходимо скачать.
После того как все необходимые поля заполнены жмем Ок.

278

Я для примера использовал исходники WOTLK. Далее программа откроет окно загрузки, нам остается только дождаться окончания зарузки.

279



Накатывание патчей:
Большинство патчей устанавливаются непосредственно в само ядро сервера. И их необходимо устанавливать до компиляции. По этому переходим к накатыванию патчей, если вам не нужно устанавливать патчи, то просто переходим к следующему разделу. Если же вы все таки решили накатить патчи, то советую перед этим сделать копию папки с загруженными исходниками, поскольку если патч окажется кривой или что то пойдет не так, вам придется по новой выкачивать исходники.
Для примера рассмотрим накатывание патча позволяющего получать различные звания за количество убийств пвп. Вот сам код патча:
Код:
# HG changeset patch -- Bitbucket.org
# Project EasyCore
# URL [url]http://bitbucket.org/easytrinity/easycore/overview[/url]
# User easytrinity <admin@likenet.ru>
# Date 1285770323 -14400
# Node ID ccb906b16695e1f93c91ea9d6f173f60968b9c45
# Parent  9696c9e8cca39bf0626faaf07240ed434d2df805
added PvP Rank system

--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -862,6 +862,18 @@ void World::LoadConfigSettings(bool relo
         sLog.outError("MinPetitionSigns (%i) must be in range 0..9. Set to 9.", m_int_configs[CONFIG_MIN_PETITION_SIGNS]);
         m_int_configs[CONFIG_MIN_PETITION_SIGNS] = 9;
     }
+    rate_values[RATE_PVP_RANK_EXTRA_HONOR] = sConfig.GetFloatDefault("PvPRank.Rate.ExtraHonor", 1);
+    std::string s_pvp_ranks = sConfig.GetStringDefault("PvPRank.HKPerRank", "10,50,100,200,450,750,1300,2000,3500,6000,9500,15000,21000,30000");
+    char *c_pvp_ranks = const_cast<char*>(s_pvp_ranks.c_str());
+    for (int i = 0; i !=HKRANKMAX; i++)
+    {
+        if (i==0)
+            pvp_ranks[0] = 0;
+        else if (i==1)
+            pvp_ranks[1] = atoi(strtok (c_pvp_ranks, ","));
+        else
+            pvp_ranks[i] = atoi(strtok (NULL, ","));
+    }

     m_int_configs[CONFIG_GM_LOGIN_STATE]        = sConfig.GetIntDefault("GM.LoginState", 2);
     m_int_configs[CONFIG_GM_VISIBLE_STATE]      = sConfig.GetIntDefault("GM.Visible", 2);

--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -390,9 +390,30 @@ enum Rates
     RATE_DURABILITY_LOSS_PARRY,
     RATE_DURABILITY_LOSS_ABSORB,
     RATE_DURABILITY_LOSS_BLOCK,
+    RATE_PVP_RANK_EXTRA_HONOR,
     RATE_MOVESPEED,
     MAX_RATES
};
+
+enum HonorKillPvPRank
+{
+    HKRANK00,
+    HKRANK01,
+    HKRANK02,
+    HKRANK03,
+    HKRANK04,
+    HKRANK05,
+    HKRANK06,
+    HKRANK07,
+    HKRANK08,
+    HKRANK09,
+    HKRANK10,
+    HKRANK11,
+    HKRANK12,
+    HKRANK13,
+    HKRANK14,
+    HKRANKMAX
+};

/// Can be used in SMSG_AUTH_RESPONSE packet
enum BillingPlanFlags
@@ -639,6 +660,8 @@ class World
         void SendZoneText(uint32 zone, const char *text, WorldSession *self = 0, uint32 team = 0);
         void SendServerMessage(ServerMessageType type, const char *text = "", Player* player = NULL);

+        uint32 pvp_ranks[HKRANKMAX];
+
         /// Are we in the middle of a shutdown?
         bool IsShutdowning() const { return m_ShutdownTimer > 0; }
         void ShutdownServ(uint32 time, uint32 options, uint8 exitcode);

--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -6770,6 +6770,7 @@ bool Player::RewardHonor(Unit *uVictim,

     uint64 victim_guid = 0;
     uint32 victim_rank = 0;
+    uint32 rank_diff = 0;

     // need call before fields update to have chance move yesterday data to appropriate fields before today data change.
     UpdateHonorFields();
@@ -6808,22 +6809,52 @@ bool Player::RewardHonor(Unit *uVictim,
             //  [15..28] Horde honor titles and player name
             //  [29..38] Other title and player name
             //  [39+]    Nothing
-            uint32 victim_title = pVictim->GetUInt32Value(PLAYER_CHOSEN_TITLE);
-                                                        // Get Killer titles, CharTitlesEntry::bit_index
+            // PLAYER__FIELD_KNOWN_TITLES describe which titles player can use,
+            // so we must find biggest pvp title , even for killer to find extra honor value
+            uint32 vtitle = pVictim->GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES);
+            uint32 victim_title = 0;
+            uint32 ktitle = GetUInt32Value(PLAYER__FIELD_KNOWN_TITLES);
+            uint32 killer_title = 0;
+            if (PLAYER_TITLE_MASK_ALL_PVP & ktitle)
+            {
+                for (int i = ((GetTeam() == ALLIANCE) ? 1:HKRANKMAX);i!=((GetTeam() == ALLIANCE) ? HKRANKMAX : (2*HKRANKMAX-1));i++)
+                {
+                    if (ktitle & (1<<i))
+                        killer_title = i;
+                }
+            }
+            if (PLAYER_TITLE_MASK_ALL_PVP & vtitle)
+            {
+                for (int i = ((pVictim->GetTeam() == ALLIANCE) ? 1:HKRANKMAX);i!=((pVictim->GetTeam() == ALLIANCE) ? HKRANKMAX : (2*HKRANKMAX-1));i++)
+                {
+                    if (vtitle & (1<<i))
+                        victim_title = i;
+                }
+            }
+            // Get Killer titles, CharTitlesEntry::bit_index
             // Ranks:
             //  title[1..14]  -> rank[5..18]
             //  title[15..28] -> rank[5..18]
             //  title[other]  -> 0
             if (victim_title == 0)
+                victim_guid = 0;                        // Don't show HK: <rank> message, only log.]
+            else if (victim_title < HKRANKMAX)
+                victim_rank = victim_title + 4;
+            else if (victim_title < (2*HKRANKMAX-1))
+                victim_rank = victim_title - (HKRANKMAX-1) + 4;
+            else
                 victim_guid = 0;                        // Don't show HK: <rank> message, only log.
-            else if (victim_title < 15)
-                victim_rank = victim_title + 4;
-            else if (victim_title < 29)
-                victim_rank = victim_title - 14 + 4;
-            else
-                victim_guid = 0;                        // Don't show HK: <rank> message, only log.
+
+            // now find rank difference
+            if (killer_title == 0 && victim_rank>4)
+                rank_diff = victim_rank - 4;
+            else if (killer_title < HKRANKMAX)
+                rank_diff = (victim_rank>(killer_title + 4))? (victim_rank - (killer_title + 4)) : 0;
+            else if (killer_title < (2*HKRANKMAX-1))
+                rank_diff = (victim_rank>(killer_title - (HKRANKMAX-1) +4))? (victim_rank - (killer_title - (HKRANKMAX-1) + 4)) : 0;

-             honor_f = ceil(Trinity::Honor::hk_honor_at_level_f(k_level) * (v_level - k_grey) / (k_level - k_grey));
+            honor_f = 1 + sWorld.getRate(RATE_PVP_RANK_EXTRA_HONOR)*(((float)rank_diff) / 10.0f);

             // count the number of playerkills in one day
             ApplyModUInt32Value(PLAYER_FIELD_KILLS, 1, true);
@@ -6832,6 +6863,7 @@ bool Player::RewardHonor(Unit *uVictim,
             UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_EARN_HONORABLE_KILL);
             UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HK_CLASS, pVictim->getClass());
             UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_HK_RACE, pVictim->getRace());
+            UpdateKnownTitles();
         }
         else
         {
@@ -6905,6 +6937,30 @@ bool Player::RewardHonor(Unit *uVictim,
     return true;
}

+void Player::UpdateKnownTitles()
+{
+    uint32 new_title = 0;
+    uint32 honor_kills = GetUInt32Value(PLAYER_FIELD_LIFETIME_HONORABLE_KILLS);
+    uint32 old_title = GetUInt32Value(PLAYER_CHOSEN_TITLE);
+    RemoveFlag64(PLAYER__FIELD_KNOWN_TITLES,PLAYER_TITLE_MASK_ALL_PVP);
+    if (honor_kills < 0)
+        return;
+    bool max_rank = ((honor_kills >= sWorld.pvp_ranks[HKRANKMAX-1]) ? true : false);
+    for (int i = HKRANK01; i != HKRANKMAX; ++i)
+    {
+        if (honor_kills < sWorld.pvp_ranks[i] || (max_rank))
+        {
+            new_title = ((max_rank) ? (HKRANKMAX-1) : (i-1));
+            if (new_title > 0)
+                new_title += ((GetTeam() == ALLIANCE) ? 0 : (HKRANKMAX-1));
+            break;
+        }
+    }
+    SetFlag64(PLAYER__FIELD_KNOWN_TITLES,uint64(1) << new_title);
+    if (old_title > 0 && old_title < (2*HKRANKMAX-1) && new_title > old_title)
+        SetUInt32Value(PLAYER_CHOSEN_TITLE,new_title);
+}
+
void Player::ModifyHonorPoints(int32 value)
{
     if (value < 0)

--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -387,6 +387,27 @@ enum PlayerFlags
     PLAYER_FLAGS_NO_XP_GAIN     = 0x02000000
};

+#define PLAYER_TITLE_MASK_ALLIANCE_PVP             \
+    (PLAYER_TITLE_PRIVATE | PLAYER_TITLE_CORPORAL |
+      PLAYER_TITLE_SERGEANT_A | PLAYER_TITLE_MASTER_SERGEANT |
+      PLAYER_TITLE_SERGEANT_MAJOR | PLAYER_TITLE_KNIGHT |
+      PLAYER_TITLE_KNIGHT_LIEUTENANT | PLAYER_TITLE_KNIGHT_CAPTAIN |
+      PLAYER_TITLE_KNIGHT_CHAMPION | PLAYER_TITLE_LIEUTENANT_COMMANDER |
+      PLAYER_TITLE_COMMANDER | PLAYER_TITLE_MARSHAL |
+      PLAYER_TITLE_FIELD_MARSHAL | PLAYER_TITLE_GRAND_MARSHAL)
+
+#define PLAYER_TITLE_MASK_HORDE_PVP                           \
+    (PLAYER_TITLE_SCOUT | PLAYER_TITLE_GRUNT |
+      PLAYER_TITLE_SERGEANT_H | PLAYER_TITLE_SENIOR_SERGEANT |
+      PLAYER_TITLE_FIRST_SERGEANT | PLAYER_TITLE_STONE_GUARD |
+      PLAYER_TITLE_BLOOD_GUARD | PLAYER_TITLE_LEGIONNAIRE |
+      PLAYER_TITLE_CENTURION | PLAYER_TITLE_CHAMPION |
+      PLAYER_TITLE_LIEUTENANT_GENERAL | PLAYER_TITLE_GENERAL |
+      PLAYER_TITLE_WARLORD | PLAYER_TITLE_HIGH_WARLORD)
+
+#define PLAYER_TITLE_MASK_ALL_PVP  \
+    (PLAYER_TITLE_MASK_ALLIANCE_PVP | PLAYER_TITLE_MASK_HORDE_PVP)
+
// used for PLAYER__FIELD_KNOWN_TITLES field (uint64), (1<<bit_index) without (-1)
// can't use enum for uint64 values
#define PLAYER_TITLE_DISABLED              UI64LIT(0x0000000000000000)
@@ -1975,6 +1996,7 @@ class Player : public Unit, public GridO
             if (value)
                 AddKnownCurrency(ITEM_ARENA_POINTS_ID); // Arena Points
         }
+        void UpdateKnownTitles();

         //End of PvP System

Копируем содержимое и вставляем в текстовой документ, который нужно сохранить с расширением .patch, например honorrank.patch. Далее копируем этот патч в папку с загруженными исходниками, у меня это С:\Trinity\TrinityCore, если вы изменяли путь и название, то скопируйте в нужную вам папку.
Далее кликаем по папке с исходниками правой кнопкой мышки и выбираем в появившемся меню пункт Git Bash Here

280

В появившейся консоли нам нужно указать путь до устанавливаемого патча, у меня это выглядит так
patch -p1 < honorrank.patch
Если у вас название патча написано иначе, то вместо honorrank укажите свое название.

281

После того как прописали путь до патча, жмем Enter.
Если после завершения установки патча в консоли мы видим примерно следующий текст

282

Значит патч установился правильно и не вызвал ни каких ошибок. Если же в тексте будут сообщения об ошибках, то это значит что ваш патч не под ту версию ядра или криво написанный. С таким патчем сервер не будет работать. И вам стоит отказаться от установки этого патча и продолжить дальнейшую работу с сохраненной копией исходников. Вы же сделали копию как я и говорил?!.
В нашем случае все прошло успешно, и мы можем перейти к установки следующего патча. Все патчи в ядро ставятся именно таким способом, по этому мы закончим с показательной установкой патчей и перейдем к следующему пункту.


Компиляция ядра сервера:

Запускаем программу Смаке и в открывшемся окне заполняем необходимые поля:
В первом поле указываем путь до папки с исходниками - С:\Trinity\TrinityCore.
Во втором поле до созданной нами папки Build - С:\Trinity\Build

283

и жмем Configure. И в открывшемся окне выбираем из списка Visual Studio 15 2017 Win64

284

Далее жмем Finish и ожидаем окончания построения конфигурации. После того как программа закончит построение вы увидите новое окно, в котором необходимо отметить галочкой пункт Tools, если по умолчанию он не отмечен.

285

После этого еще раз нажимаем Configure и потом Generate. Ожидаем завершения процесса. По окончанию процесса вы можете прям в Смаке кликнуть по кнопке Open Project и тогда скомпилированный проект сборки сам откроется в Visual Studio. Либо перейти в папку С:\Trinity\Build и вручную открыть от туда файл с расширением .sln. В нашем случае этот файл будет называться TrinityCore.sln.

Далее ждем когда в Visual Studio полностью прогрузится наша сборка. Далее в конфигураторе решения изменяем значение на Release.

287

Переходим во вкладку "Сборка", где сначала выбираем пункт "Очистить решение", и дождавшись окончания процесса выбираем пункт "Собрать решение". Далее остается только дождаться завершения сборки, насколько быстро это произойдет зависит только от вашего ПК.
Когда решение будет собрано вы увидите примерно следующий текст
Код:
========== Сборка: успешно: 19, с ошибками: 0, без изменений: 0, пропущено: 2 ==========
Если вы видите примерно такую же надпись, значит у вас все прошло успешно. Если же в поле с ошибками будет указанно значение кроме 0, значит вы что то сделали не верно, и стоит попробовать сделать все заново. Возможно даже по новой скачать исходники, поскольку бывает что Git качает с пропусками или ошибками.


Подготовка к запуску:

После построения сборки наш сервер практически готов к запуску. Его можно найти по следующему пути C:\Trinity\Build\bin\Release.

Если все прошло успешно, то в сборке WOTLK у вас должны присутствовать следующие файлы:
  1. authserver.exe
  2. authserver.pdb
  3. authserver.conf.dist
  4. worldserver.exe
  5. worldserver.pdb
  6. worldserver.conf.dist
  7. libmysql.dll
  8. libeay32.dll
  9. ssleay32.dll
А в сборке Legion у вас должны присутствовать следующие файлы:
  1. bnetserver.exe
  2. bnetserver.pdb
  3. bnetserver.conf.dist
  4. bnetserver.cert.perm
  5. bnetserver.key.perm
  6. worldserver.exe
  7. worldserver.pdb
  8. worldserver.conf.dist
  9. libmysql.dll
  10. libeay32.dll
  11. ssleay32.dll
Сразу переименуем файлы конфигов, а точнее уберем из расширения .dist. И после этого отредактируем в конфигах соединение с базами MySQL под свои настройки, которые вы указывали в процессе установки.

Далее нам потребуется в папку с готовым сервером скопировать файлы библиотек.
libmySQL.dll --> C:\Program Files\MySQL\MySQL Server 5.x\lib\
libeay32.dll, ssleay32.dll --> C:\OpenSSL-Win64\

Теперь переходим в папку TrinityCore\contrib и копируем из нее файл extractor.bat в папку с клиентом и запускаем его.
, а так же из папки с готовым проектом перенести файлы:
  • mapextractor.exe
  • mmaps_generator.exe
  • vmap4assembler.exe
  • vmap4extractor.exe
Иначе extractor.bat не сработает.
302

В открывшейся консоли видим 5 вариантов действий. По очереди запускаем пункты от 1 до 3. Это извлечет из клиента файлы карт и создаст папки с ними dbc, maps, mmaps и vmaps. Папка vmaps не является необходимой, но все же желательно извлечь и эти карты.
Можно сразу выбрать 4 пункт действий, тогда программа сама выполнит все необходимые пункты. Это весьма длительный процесс, который может занять несколько часов времени. По окончании работы программы нажимаем цифру 5 и закрываем программу.
Теперь в папке C:\Trinity\Build\bin\Release создаем папку Data и из папки с клиентом копируем в нее папки с картами.
Далее открываем файл worldserver.conf находим в нем строку
DataDir = "."
и редактируем значение в ковычках на название нашей папки с картами Data. Это укажет серверу на папку в которой у нас расположены файлы с картами. В результате у вас должно получится
DataDir = "Data"

На этом подготовка сервера к запуску завершена и нам остается только заполнить базы данных.


Работа с БД.

Базы создаются запросом в MySQL

Для серверов 3.3.5
SQL:
CREATE DATABASE `world` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Далее запускаем файл worldserver.exe и при запросе сервера на создание баз данных нажимаем Enter и ждем пока базы заполнятся автоматически.

Для серверов 7.х.х
SQL:
CREATE DATABASE `world` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `auth` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

CREATE DATABASE `hotfixes` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Для серверов версии 7.х.х так же необходимо скопировать файлы « TDB_world_» и «TDB_hotfixes_» из \TrinityCore\sql\base\dev в папку C:\Trinity\Build\bin\Release и запускаем файл worldserver.exe, при запросе сервера на создание баз данных нажимаем Enter и ждем пока базы заполнятся автоматически.

После того как сервер заполнит все базы и полностью загрузится он уже полностью готов к работе. Остается только запустить сервер авторизации authserver.exe и можно переходить к созданию учетной записи и игре.
















Гайд составлен специально для сайта
Игровой портал 1n-GAME
Любое использование материала
разрешено только при наличии

активной ссылки на источник!
 
Последнее редактирование:

Drogon

New member
Новичок
Регистрация
01.06.2018
Сообщения
3
Реакции
3
Баллы
0
Возраст
34
Местоположение
Samara
Привет всем!
Когда ждать продолжения темы? :)
 

Drogon

New member
Новичок
Регистрация
01.06.2018
Сообщения
3
Реакции
3
Баллы
0
Возраст
34
Местоположение
Samara
WinWoolF, во первых огромное спасибо за потраченное время, гайд очень сильно помог не заморачиваться на самостоятельные и скорее всего безуспешные попытки что-то сделать :)

При возможности добавь несколько строк:
Теперь переходим в папку TrinityCore\contrib и копируем из нее файл extractor.bat в папку с клиентом и запускаем его.
, а так же из папки с готовым проектом перенести файлы:
  • mapextractor.exe
  • mmaps_generator.exe
  • vmap4assembler.exe
  • vmap4extractor.exe
Иначе extractor.bat не сработает.
 

WinWoolF

New member
Команда форума
Администратор
Регистрация
13.10.2013
Сообщения
5 354
Реакции
452
Баллы
0
Да, упустил момент. Гайд дополнил.
 

Drogon

New member
Новичок
Регистрация
01.06.2018
Сообщения
3
Реакции
3
Баллы
0
Возраст
34
Местоположение
Samara
Ну что же... Сделаем небольшую оценку гайду:
- Все очень подробно и доходчиво написано, что довольно редко встречается в рунете и сразу видно, что WinWoolF качественно подошел к его написанию.
- Следуя инструкциям получилось сделать сборку своими руками из-за размеров файлов и их количества занявшее у меня почти два дня ( с учетом перерывов на работу и сон) :rolleyes:
- Ну и на последок, потратив вышеуказанное время нужного результата я не добился (но в среднем и в целом это совершенно не вина гайда и его автора), а скорее всего моя криворукость и недальновидность :) Когда весь замечательный процесс формирования файлов был наконец то завершен, из двух файлов стартует только реалм, сам сервер прочитывает db2 и автоматически закрывается. Решения (так же как и проблемы) пока не нашел и в логах нет ни какой информации о креше.

Буду искать дальше.
 

WinWoolF

New member
Команда форума
Администратор
Регистрация
13.10.2013
Сообщения
5 354
Реакции
452
Баллы
0
Drogon, ну я так понимаю разговор идет о 7.3.5, по этому совершенно не удивительно что такое произошло. могу лишь посоветовать воспользоваться исходниками Ashaman и его же базой. Но боюсь что и там будет не все так просто.
А для закрепления навыков в компиляции можно потренироваться со сборкой 3.3.5, там должно проити все гладко.
 

iskezil

New member
Новичок
Регистрация
17.05.2018
Сообщения
16
Реакции
5
Баллы
0
Возраст
29
Местоположение
Москва

dren

New member
Новичок
Регистрация
05.06.2017
Сообщения
46
Реакции
0
Баллы
0
Возраст
24
спасибо
 

Sisil

New member
Новичок
Регистрация
28.06.2018
Сообщения
7
Реакции
0
Баллы
0
Возраст
28
Местоположение
Россия, г.Иркутск
По-моему, я тупо проклята. Либо у меня мозгов меньше грецкого ореха.
Устанавливала все программы как вы и прописали, WinWoolF, однако же начались проблемы буквально вначале получения исходников. Как видно на скрине, таких пунктов у меня тупо нет(Windows 8.1, установлено точно по инструкции):
8tx04kutsLQ.jpg



Получение исходников (сырцов) ядра TrinityCore:
Создаем на диске С: папку Trinity и сразу же в ней создаем папку Build. Вы можете создавать папку в любом удобном вам месте и с любым названием, так же и вторую папку вы можете назвать как хотите. Главное чтоб в названиях не было пропусков и оно состояло только из английского алфавита.
Далее кликаем правой кнопкой мыши по папке Trinity и в появившемся меню выбираем пункт Git Clone

 

WinWoolF

New member
Команда форума
Администратор
Регистрация
13.10.2013
Сообщения
5 354
Реакции
452
Баллы
0
Sisil, гайд составлен под 10тую винду, возможна некоя несовместимость софта. Я бы посоветовал в таком случае использовать вот этот софт для скачки исходников Git Extensions. Это практически равноценные софтины, правда та, на которую ссылался я, более просто и предназначена для новичков в этом деле. Gitextensions на которую я сейчас оставил ссылку, напичкана большим набором функций для профи, но для цели выкачивания исходников она так же подходит. Там нужно будет выбрать пункт в меню GitExt Clone
 

Sisil

New member
Новичок
Регистрация
28.06.2018
Сообщения
7
Реакции
0
Баллы
0
Возраст
28
Местоположение
Россия, г.Иркутск
Sisil, гайд составлен под 10тую винду, возможна некоя несовместимость софта. Я бы посоветовал в таком случае использовать вот этот софт для скачки исходников Git Extensions. Это практически равноценные софтины, правда та, на которую ссылался я, более просто и предназначена для новичков в этом деле. Gitextensions на которую я сейчас оставил ссылку, напичкана большим набором функций для профи, но для цели выкачивания исходников она так же подходит. Там нужно будет выбрать пункт в меню GitExt Clone
Сделала так как вы сказали. В поле действительно появилось GitExt Clone. Но окно, открывшееся мне, координально отличается от того что есть в гайде. Я в замешательстве.
K_F3az4SeiM.jpg

Сообщения автоматически объединены:

Прошу прощения... Но я жду помощи. Пыталась делать всё сама - не выходит. Устанавливала другие, более ранние версии Git - тоже нет результата(как и нужного пункта). К сожалению, я не программист, и поэтому не понимаю что мне делать в этом случае.
 
Последнее редактирование:

Borisov99

New member
Новичок
Регистрация
11.07.2018
Сообщения
5
Реакции
0
Баллы
0
Возраст
25
Местоположение
Красноярск
Привет! у меня исходники декабрь 2017, могу ли я воспользоваться данным гайдом?
 

WinWoolF

New member
Команда форума
Администратор
Регистрация
13.10.2013
Сообщения
5 354
Реакции
452
Баллы
0
Sisil, я думаю что не требуется быть программистом для того что бы понять, что поле внешний репозиторой нужно для указания внешнего адреса откуда идет загрузка. А поле назначение нужно для выбора каталога в который идет загрузка.
Borisov99, да
 

Sisil

New member
Новичок
Регистрация
28.06.2018
Сообщения
7
Реакции
0
Баллы
0
Возраст
28
Местоположение
Россия, г.Иркутск
Sisil, я думаю что не требуется быть программистом для того что бы понять, что поле внешний репозиторой нужно для указания внешнего адреса откуда идет загрузка. А поле назначение нужно для выбора каталога в который идет загрузка.
Блин... Помогите... Сделала вот всё как надо, в точности. .exe - файлы не патчатся(никакие, даже более ранней версии), на сервера зайти не могу. В голове каша. Ушло на всю эту магию около 10-ти часов(возможно, этого мало). Мне нужна помощь.
Где прописывать БД? Что делать с тем, что .exe не пропатчиваются? Что за authserver.exe? И возможно ли с вами хоть как-то связаться, чтобы разобраться конкретно с проблемой по мере поступления? Потому что это уже выше моих знаний и сил
 
Последнее редактирование:

Borisov99

New member
Новичок
Регистрация
11.07.2018
Сообщения
5
Реакции
0
Баллы
0
Возраст
25
Местоположение
Красноярск
А можно как-нибудь с 1.64 бустом использоваться Travis Ci ?
 

WinWoolF

New member
Команда форума
Администратор
Регистрация
13.10.2013
Сообщения
5 354
Реакции
452
Баллы
0
А можно как-нибудь с 1.64 бустом использоваться Travis Ci ?
Возможно я чего то не понимаю, но какая связь между бустом и тревисом? Буст это сборник библиотек для С++, Тревис это вообще веб сервис для тестирования ПО. Или мы говорим о разных вещах?
 

Sisil

New member
Новичок
Регистрация
28.06.2018
Сообщения
7
Реакции
0
Баллы
0
Возраст
28
Местоположение
Россия, г.Иркутск
Ну блииин... Я понимаю, что я вас уже зае...здила...
 

Borisov99

New member
Новичок
Регистрация
11.07.2018
Сообщения
5
Реакции
0
Баллы
0
Возраст
25
Местоположение
Красноярск
Возможно я чего то не понимаю, но какая связь между бустом и тревисом? Буст это сборник библиотек для С++, Тревис это вообще веб сервис для тестирования ПО. Или мы говорим о разных вещах?
Понимаешь, просто я не могу свои исходы тестить на нём, трнити использует 1.58 буст и тестит, а я использую 1.64. И он мне ошибки бьет, я не могу понять как установить 1.64
Код:
Build world/auth       : Yes (default)
* Build with scripts     : Yes (static)
* Build map/vmap tools   : Yes (default)
* Build core w/PCH       : Yes (default)
* Build scripts w/PCH    : Yes (default)
* Show compile-warnings  : No  (default)
* Use coreside debug     : No  (default)
* Show source tree       : Yes (hierarchical)
* Use GIT revision hash  : Yes (default)

-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE 
CMake Error at cmake/macros/FindBoost.cmake:1204 (message):
  Unable to find the requested Boost libraries.

  Boost version: 1.55.0

  Boost include path: /usr/include

  Detected version of Boost is too old.  Requested version was 1.64 (or
  newer).
Call Stack (most recent call first):
  dep/boost/CMakeLists.txt:44 (find_package)


-- Performing Test boost_filesystem_copy_links_without_NO_SCOPED_ENUM
-- Performing Test boost_filesystem_copy_links_without_NO_SCOPED_ENUM - Failed
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8")
-- Looking for open
-- Looking for open - found
-- Found OpenSSL library: /usr/lib/x86_64-linux-gnu/libssl.so;/usr/lib/x86_64-linux-gnu/libcrypto.so
-- Found OpenSSL headers: /usr/include
-- Found Readline library: /usr/lib/x86_64-linux-gnu/libreadline.so
-- Include dir is: /usr/include
-- Found BZip2: /usr/lib/x86_64-linux-gnu/libbz2.so (found version "1.0.6")
-- Looking for BZ2_bzCompressInit
-- Looking for BZ2_bzCompressInit - found

* Script configuration (static):
    |
    +- worldserver
    |   +- Commands
    |   +- Custom
    |   +- EasternKingdoms
    |   +- Events
    |   +- Kalimdor
    |   +- Northrend
    |   +- OutdoorPvP
    |   +- Outland
    |   +- Pet
    |   +- Spells
    |   +- World
    |

-- Configuring incomplete, errors occurred!
See also "/home/travis/build/borisov99/dessower/bin/CMakeFiles/CMakeOutput.log".
See also "/home/travis/build/borisov99/dessower/bin/CMakeFiles/CMakeError.log".

travis_time:end:0cecc674:start=1531384051708475226,finish=1531384056337913721,duration=4629438495
[0K
[31;1mThe command "cmake ../ -DCMAKE_INSTALL_PREFIX=check_install" failed and exited with 1 during .[0m

Your build has been stopped.
 

king888

New member
Новичок
Регистрация
01.04.2018
Сообщения
47
Реакции
14
Баллы
0
Местоположение
Lvov
Ого, какой подробный гайд, думаю тоже попробовать =)
 
Верх Низ