Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Документация (https://forum.zone-game.info/forumdisplay.php?f=76)
-   -   Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32 (https://forum.zone-game.info/showthread.php?t=11457)

PuShKinG 06.12.2010 22:16

Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
http://image.zone-game.info/images/1276026531.gif
Сегодня мы будем компилировать ядро Trinity Core и создавать на его основе полноценную рабочую сборку.
Гайд ориентирован на новичков, но все таки понимающих то, что они будут делать.

Нам понадобится:

  • Visual C++ 2008 Express или Visual C++ 2010. Express издания не поддерживают компиляцию на системах с 64 битной архитектурой.
  • .NET Framework 3.5 - вполне возможно, что он уже скачан вами во время обновления системы Windows.
  • MySQL - сервер баз данных, рекомендуется использовать версии 5.1.х.
  • Git - распределённая система управления версиями файлов.
  • CMake - программа для построения проекта и подготовки исходного кода непосредственно к процессу компиляции.
  • OpenSSL - система безопасных сокетов позволяющая создавать ключи RSA, DH, DSA и сертификаты.
  • Navicat - приложение для графического управления сервером MySQL, рекомендуется использовать Lite версию программы.

После того как мы скачали и установили весь необходимый софт, идём дальше по плану, который состоит из следующих пунктов:

1. Скачивание исходников.
2. "Накатывание" патчей на ядро.
3. Сборка компилятора.
4. Компиляция ядра.
5. Настройка ядра.
6. Работа с базами.
6.1. Создание баз.
6.2. Заполнение баз.
6.3. Настройки баз.
7. Запуск сервера.
8. F.A.Q.



Начинаем.
1. Скачивание исходников.
Создаем рабочий каталог в "корне" диска, например:
Код:

D:\Trinity - Путь не должен содержать кириллицы.
Как скачивать исходники с помощью Git описано в отдельной теме.
Но с помощью этой программы можно скачать и исходники Trinity. Нужно лишь изменить адрес
вместо
Код:

git clone git://github.com/mangos/mangos.git
нужно прописать
Код:

git clone git://github.com/TrinityCore/TrinityCore.git
После скачивания, переименуем папку с нашими исходниками, в source (для удобства), так, чтобы путь к исходникам был такой:
Код:

D:\work\source
http://image.zone-game.info/images/3.jpg
Скачивание исходников завершено.

2. "Накатывание" патчей на ядро.
Патч - это некая модификация для ядра, написанная на CPP, которая может в корне изменить работоспособность сервера, начиная от работы спелов заканчивая Гильд-Хаусами.
Установка патчей производится с помощью программы Git.
Для примера "накатывания" патча, я предлагаю Вам воспользоваться патчем, который дает возможность игрокам получать различные звания за убийства игроков противоположной фракции в зависимости от количества убийств.

Сам патч:

# 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 
 
Code: Diff
Копируем всё это содержимое, сохраняем в файл с расширением .patch, например:
Код:

rank.patch
После того как мы сохранили наш патч на компьютере, нам необходимо перенести его в папку с нашими исходниками, а точнее:
Код:

D:\work\source
Так чтобы полный путь к патчу был такой:
Код:

D:\work\source\rank.patch
Так следует поступать с любым устанавливаемым патчем.

После того как мы перенесли наш патч, жмем ПКМ по папке с исходниками, а точнее:
Код:

D:\work\source
И выбераем Git Bash Here:

http://image.zone-game.info/images/4.jpg

В появившемся окне, пишем:
Код:

patch -p1 < название.patch, в нашем случае:
http://image.zone-game.info/images/5.jpg

Жмем Enter.

Если после завершения вы видите:

http://image.zone-game.info/images/6.jpg

Значит всё в порядке, можно продолжать.
Вы можете продолжить установку других патчей (если они у вас имеются), но у нас он один, так что мы продолжим. Закрываем Git.

3. Сборка компилятора.
Создаем новую папку в нашей рабочей директории, например:
Код:

D:\work\tc - в этой папке будет хранится готовый к компиляции проект.
После того как мы подготовили директорию, запускаем ранее нами установленный CMake.

Where is the source code - папка с исходниками, у нас это:
Код:

D:\work\source
Where to build the binaries - папка для готового проекта VS, у нас это:
Код:

D:\work\tc
Указываем эти данные в программе:

http://image.zone-game.info/images/7.jpg

После жмем Configure и выбираем, на какой платформе будем компилировать, в моем случае это Visual Studio 10, выбираем, после чего жмем Finish:

http://image.zone-game.info/images/8.jpg

Ждем завершение процесса, после чего вы увидите:

http://image.zone-game.info/images/9.jpg

Столбец - TOOLS, позволяет нам после компилирования получить экстракторы карт. Так что ставим галочку.
Больше ничего не меняем.
Снова жмем Configure и видим:

http://image.zone-game.info/images/17.jpg

После жмем:
http://image.zone-game.info/images/18.jpg.

Если все прошло успешно - то мы увидим:

http://image.zone-game.info/images/19.jpg

Можно закрывать CMake.

4. Компиляция ядра.
Наш проект теперь хранится в:
Код:

D:\work\tc
Запускаем файл с расширением .sln, в нашем случае это:
Код:

TrinityCore.sln

После открытия VS, запускаем Диспетчер конфигураций... и меняем Активную конфигурацию решения с Debug на Release, после жмем Закрыть:

http://image.zone-game.info/images/11.jpg

Если мы все сделали как надо, то можно смело жать F7 (Построить решение).

http://image.zone-game.info/images/12.jpg

Если после компиляции мы видим результат без ошибок, значит, компиляция прошла успешно.
Все, наше ядро скомпилировано, но оно ещё не работоспособно.

5. Настройка ядра.
Наше скомпилированное ядро хранится в папке:
Код:

D:\work\tc\bin\Release
Для удобства переместим и переименуем папку с ядром.
Перенесем папку Release в корень нашей рабочей папки, то есть:
Код:

D:\work\Release
И переименуем в server:
Код:

D:\work\server
После этого, нашему ядру не хватает три файла:
Код:

libeay32.dll, ssleay32.dll и libmysql.dll

Найти libeay32.dll и ssleay32.dll мы может в папке с ранее установленным OpenSSL-Win32. Копируем libeay32.dll и ssleay32.dll с директории OpenSSL-Win32 в директорию с ядром:
Код:

D:\work\server
Файл libmysql.dll у нас в ядре имеется, но нам необходимо его заменить на тот, что использует наш MySQL сервер, взять его нужно отсюда:
Код:

C:\Program Files\MySQL\MySQL Server\bin
Копируем его и вставляем в директорию с ядром с заменой имеющегося.

После чего переименовываем файлы:
Код:

worldserver.conf.dist в worldserver.conf
authserver.conf.dist в аuthserver.conf

Теперь надо настроить подключение ядра к БД.
Для этого открываем уже переименованный authserver.conf и настраиваем строчку:
Код:

LoginDatabaseInfo = "127.0.0.1;3306;trinity;trinity;auth"
Распишу по порядку:
Код:

127.0.0.1 - адрес БД, выставлено по умолчанию.
3306 - порт БД, выставлено по умолчанию.
trinity - логин БД - менять на свой.
trinity - пароль БД - менять на свой.
auth - название БД, выставлено по умолчанию.

Нам необходимо поменять только логин и пароль на те, которые мы указали при установке MySQL сервера.
После этого, сохраняем и закрываем authserver.conf.
Открываем worldserver.conf, тут хранятся все настройки сервера, мы пока в них вникать не будем, сделаем только необходимое:
Код:

LoginDatabaseInfo    = "127.0.0.1;3306;trinity;trinity;auth"
WorldDatabaseInfo    = "127.0.0.1;3306;trinity;trinity;world"
CharacterDatabaseInfo = "127.0.0.1;3306;trinity;trinity;characters"

Настраиваем также как и в authserver.conf.
Закрываем worldserver.conf.
После нам необходимо указать путь к папке содержащей карты для сервера, как извлечь я объясню чуть позже, а пока создаем папку в корне нашей рабочей папки с названием data:
Код:

D:\work\data - тут будут храниться карты.
Теперь нам необходимо указать путь к папке data, для этого снова открываем worldserver.conf и строку:
Код:

DataDir = "."
меняем на:
Код:

DataDir = "D:\work\data\"
После, нам необходимо выключить проверку на vmaps, т.к. мы их извлекать не будем, так что меняем строки:
Код:

vmap.enableLOS    = 1
vmap.enableHeight = 1

на
Код:

vmap.enableLOS    = 0
vmap.enableHeight = 0

Сохраняем, закрываем.
Если вы помните, в программе CMake мы ставили галочку в столбце TOOLS, впоследствии чего мы получили экстракторы карт.
Карты необходимы для работы сервера.
Мне известно 3 вида карт:
Код:

dbc & maps - самые необходимые для работы сервера.
vmaps - дополнительные карты, позволяющие более точно смоделировать мир World of Warcraft, исключает стрельбу и агр через стены.
mmaps - это расчет траектории обхода препятствий мобов. То есть моб при агре не будет лететь к вам по воздуху, а будет искать путь по земле.

Сейчас мы будем извлекать только необходимые для работы сервера карты .maps и dbc. Без VMAPS и MMAPS.
Для этого в папке с ядром:
Код:

D:\work\server
Имеется файл:
Код:

mapextractor.exe
Переносим его в папку с игровым клиентом и запускаем.
ВАЖНО "Версии ядра, экстрактора и игрового клиента должны быть ИДЕНТИЧНЫ"

http://image.zone-game.info/images/13.jpg

После того как экстрактор закончит работу, он создаст 2 папки:
Код:

dbc и maps
Переноси эти 2 папки в папку data, которую мы создали ранее:
Код:

D:\work\data
http://image.zone-game.info/images/14.jpg

На этом начальная нстройка ядра окончена.

6. Работа с базами.
Trinity Core имеет три базы:
auth - база аккаунтов.
characters - база персонажей.
world - база мира, игрового :)
Сейчас мы займемся созданием этих трех баз.

6.1. Создание баз.
Открываем скаченный нами ранее Navicat, жмем на Conntection, заполняем:
Код:

User name: логин MySQL сервера
Password: пароль MySQL сервера

Жмем ок:

http://image.zone-game.info/images/15.jpg

После в левой части у нас появится подключение, открываем его и видим:

http://image.zone-game.info/images/16.jpg

Щелкаем ПКМ на нашем подключении и выбираем:
Код:

New database...
Далее заполняем название базы и кодировки как на скрине:

http://image.zone-game.info/images/20.jpg

Жмем ОК, теперь мы создали одну из трех баз. Также поступаем с остальными двумя. Меняется только название.
После того как мы создали все три базы, мы видим:

http://image.zone-game.info/images/21.jpg

Все, базы созданы. Можно пока закрыть Navicat. Наши базы ещё пусты, нам необходимо их заполнить.

6.2. Заполнение баз.
Заполнение баз auth и characters не вызовет у вас лишних вопросов, а вот с world можно подумать.
Но все по порядку.
Сами .sql файлы с базами лежат тут:
Код:

D:\work\source\sql\base
У нас имеются все три базы, но заливать будем только две, auth и characters, т.к. world будем качать.

Заполнение базы auth.
Заливать будем через консоль.

Код:

1. Открываем консоль - Пуск > Все программы > MySQL > MySQL Server > MySQL Command Line Client.
2. Вводим пароль MySQL сервера.
3. Подключаемся к БД, набираем:
\u название базы, в нашем случае:
\u auth
4. Выполняем "заливку" базы:
\. D:\work\source\sql\base\auth_database.sql

http://image.zone-game.info/images/24.jpg

И жмем Enter.
По завершению процесса, меняем базу с auth на characters и выполняем:
Код:

\. D:\work\source\sql\base\characters_database.sql
http://image.zone-game.info/images/25.jpg

После этого закрываем консоль, т.к. стандартную базу world_database.sql мы заливать не будем, мы будем использовать базу YTDB.
Официальный сайт - http://ytdb.ru/showthread.php?t=5227

Качать необходимо последнюю FULL базу с последующими обновлениями.
То есть, пройдя по ссылке http://ytdb.ru/showthread.php?t=5227, последняя FULL база:
Код:

YTDB_0.14.0_R570_TC_R10316_TDBAI_335.0.1_RuDB_38.4
Качаем ее и последующие патчи, извлекаем все содержимое архивов и кидаем в нашу рабочую папку:
Код:

D:\work
http://image.zone-game.info/images/30.jpg

После чего снова запускаем консоль MySQL, вводим пароль, указываем базу world и выполняем файлы в такой последовательности:
Код:

YTDB_0.14.0_R570_TC_R10316_TDBAI_335.0.1_RuDB_R38.4
571_corepatch_world_10316_10340
571_updatepack_world_10340
572_corepatch_world_10340_10394
572_updatepack_world_10394

По завершению процесса, можно закрыть консоль.

6.3. Настройки баз.
К настройке баз, в частности относится изменение имени Игрового мира и смены адреса сервера (Realmlist).
Для того чтобы изменить имя и Realmlist сервера, открываем Navicat, открываем созданное нами ранее подключение, открываем базу auth, таблицу realmlist и меняем на наше усмотрение:

http://image.zone-game.info/images/26.jpg

Подтверждаем наше действие кнопкой внизу окна:

http://image.zone-game.info/images/27.jpg

Можно закрывать Navicat. Работа с базами окончена.

7. Запуск сервера.
Для запуска сервера необходимо запустить два файла:
Код:

authserver.exe - логин сервер
worldserver.exe - игровой сервер

Я советую запускать по очереди, сначала логин сервер:

http://image.zone-game.info/images/29.jpg

После, уже игровой, кстати, после успешного запуска игрового сервера, вы услышите BEEP :)

http://image.zone-game.info/images/31.jpg

После необходимо удалить папки Cache и WTF с корневого каталога игрового клиента World of Warcraft во избежание ошибок LUA.
Далее меняем Realmlist игрового клиента на тот, что мы указали в базе.
В нашем случае, файл - World of Warcraft WotLK\Data\ruRU\realmlist.wtf будет выглядеть так:
Код:

set realmlist 127.0.0.1
Сохраняем закрываем.
Но мы не сможем тестировать ядро, т.к. у нас нет аккаунта, для того чтобы его создать без web-обвязки, необходимо переключится на окно world сервера и вписать:
Код:

account create zgteam test
Описание:
account create ЛОГИН ПАРОЛЬ

http://image.zone-game.info/images/32.jpg

Теперь мы готовы для тестирования ядра. Запускаем World of Warcraft, вводим логин и пароль от нашего игрового аккаунта, создаем персонажа, радуемся.

http://image.zone-game.info/images/zgteamdld.jpg

8. F.A.Q.

Как только наберу достаточное количество информации, напишу полный F.A.Q.

Пишите отзывы, пожелания, недовольства и замечания. Здоровая критика всегда полезна.


"Копирование разрешено только при наличии активной, индексируемой ссылки на эту страницу"

© ZG-Team 2007 - 2011

Itachi 06.12.2010 22:25

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
мануал удался:plus1:

Lavs 07.12.2010 12:51

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Вообщем то остался такой вопрос - с чем на х64 платформе компилировать и собирать?

Perfecto 07.12.2010 13:29

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Для х64 - Visual Studio 2010 (или 2008) Professional Edition

Lavs 07.12.2010 15:38

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
ясно, снкс..
ла2 с свна проще компилируется :)

wen1k 07.12.2010 18:05

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Отличный мануал, так держать ! :plus1:

Mcianik 07.01.2011 20:30

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Увожаемая команда ZG-team у меня проблема с 3:Сборка кампилятора я сделал всё как нада но показывает ошыбку! я проверял 10 раз и заново всё делал но тожэ самое help :(

Perfecto 07.01.2011 22:05

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Ошибки разные бывают. Укажите какая именно.

Johncrasher 07.01.2011 22:39

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Прям универсальный план для любого сервера! Одно добавлю - как проще всего определить какие логин и пароль вашей базы когда не указан выше...
Есть такие файлы как authserver.conf и worldserver.conf (имена значения не сильно имеют, главное чтобы расширение было .conf это данные для реалма и сервера там находятся)! Там всегда есть такие строки как

realmd.conf(сам файл а в нём есть) -
LoginDatabaseInfo = "127.0.0.1;3306;root;mangos;realmd" (сдесь уже прописано root - логин mangos - пароль)

mangos.conf(сам файл а в нём есть)
LoginDatabaseInfo = "127.0.0.1;3306;root;mangos;realmd"(аналогично к вышесказанному определяется)
WorldDatabaseInfo = "127.0.0.1;3306;root;mangos;world"
CharacterDatabaseInfo = "127.0.0.1;3306;root;mangos;characters"

Просто чтобы не париться лишний раз и не ломать голову себе! Бывает что по 3-4 серва есть установленных то с Тринити то с Мангосом вперемешку, так проще определять логин и пароль базы! Это уже собственный опыт!

Добавлено через 4 минуты
Есть такой вопрос.... Высше в самой инструкции по установке есть упоминания о VMaps и MMaps! О VMaps уже знаю много чего, видел для чего нужны они, а, если не тяжело, может ктото меня просветлить по поводу MMaps? Был бы рад ещё чтото новенького узнать!

Mcianik 07.01.2011 22:58

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
3 я ужэ решыл я остоновился на mapextractor.exe как ево создовать а то мне не понятно :( я проста noob в этом деле пока :)оч нуждаюсь в вашэи помошчи ;)

Johncrasher 07.01.2011 23:22

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Цитата:

Сообщение от Mcianik (Сообщение 103117)
я остоновился на mapextractor.exe как ево создовать а то мне не понятно

Скажу что сам mapextractor.exe должен идти с ядром вместе! А так, если он не работает(создаёт карты а они не подходят) то единственное решение - искать рабочие карты в инете или другой экстрактор! И ещё нюанс - в папке dbc проверьте не наличие такого документа под названием "component.wow-ruRU.txt" если будут проблеммы попробуйте создать его и прописать внутрь такое содержимое(скопипастил у себя) -

<componentinfo format="1">
<component name="wow-ruru" version="12340" />
</componentinfo>

Perfecto 07.01.2011 23:44

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Цитата:

Сообщение от Mcianik (Сообщение 103117)
я остоновился на mapextractor.exe как ево создовать а то мне не понятно

Если здесь стоит галочка напротив Tools, то экстракторы компилируются вместе с ядром.

Цитата:

Сообщение от Johncrasher (Сообщение 103114)
может ктото меня просветлить по поводу MMaps? Был бы рад ещё чтото новенького узнать!

Не знаю как на счет новенького, но даная система заставляет НПС двигаться не по воздуху, а по земле, искать маршруты (лестницы, не очень крутые склоны)

scergo 10.01.2011 22:10

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Автор, ну где ж ты раньше был:)
Отредактируй тему, твоя инфа устарела: офф репо трини переехал на https://github.com/TrinityCore/TrinityCore
А так мануал хороший получился

Johncrasher 11.01.2011 09:07

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Perfecto, ещё один вопрос по теме mapextractor.exe! Его можно скомпилировать или сделать самоу если ядро делал не сам, а откудато взял, или под каждое ядро должен быть свой особый компилятор? Ведь Maps, VMaps, DBC зашиты в один и тот же клиент, а значит одни и те же для всех серверов(если версия одинакова к примеру сервер под 3,3,5а то и карты к нему одинаковы)!

Perfecto 11.01.2011 14:10

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Они меняются иногда и на той же версии, но очень редко. В большинстве случаев можно старые взять.

scergo 11.01.2011 21:23

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Johncrasher, довольно часто авторы готовых эмуляторов кладут экстракторы в другую папку, обычно она называется Extractors
Mcianik, я бы посоветовал бы Вам поработать для начала с мангосом, имхо поддержка у него гораздо лучше. Если же Вы все таки хотите работать с TC я могу только Вам посоветовать несколько рессурсов в ЛС:)

Itachi 12.01.2011 14:16

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
scergo позольте поинтересоваться поддержка чего у Мангоса лучше?

scergo 12.01.2011 16:02

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Sharki, поддержкой русскоязычных пользователей. Я даже не так наверно выразился: поддержка и там и там хорошая (на тринити даже лучше), но вот объем информации, которая может пригодится пользователю, у ru-mangos.ru больше, чем у trinity-core.ru. По сути на ru-mangos.ru можно найти все (ну или почти все), что есть на getmangos.com. Согласитесь: ведь всегда удобнее искать нужную информацию на родном языке, чем переводить каждое предложение с английского. Лично я начинал работать с серверами на mangos, а потом уже перешел на Trinity, т.к. различий между ними немного. К тому же сейчас попасть на trinity-core.ru довольно трудно (из-за инвайтов).
P.S.: Сейчас на trinitycore.org планируется создать русскоязычный раздел, так что думаю эта проблема в скором времени иссякнет.:)

Perfecto 12.01.2011 16:25

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Соглашусь с scergo. Но ни на мангосе, ни на тринити не любят полных новичков со стандартными вопросами.

scergo 12.01.2011 16:37

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Perfecto, согласен, именно поэтому и сделали регистрацию по инвайтам, чтоб всякая неграмотная школота с сами-знаете-какого сайта не лезла.

Itachi 12.01.2011 17:02

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
scergo Ну Мангос и существует дольше Тринити) а насчет Рускоязычного раздела, он там есть...

Perfecto 12.01.2011 17:06

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Цитата:

Сообщение от scergo (Сообщение 103774)
P.S.: Сейчас на trinitycore.org планируется создать русскоязычный раздел, так что думаю эта проблема в скором времени иссякнет.

он и был раньше пока у них сервер со всеми бекапами не "слетел".
И сейчас есть, но пока пустой.

scergo 14.01.2011 17:43

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Цитата:

он и был раньше пока у них сервер со всеми бекапами не "слетел".
И сейчас есть, но пока пустой.
Я в курсе, что он был, но на тот момент я "забросил" Trinity. Не довелось мне на нем побывать

Woodi 15.01.2011 15:10

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Ребят а для сервера Aion нужно всё так же делать ток исходники другие?

Itachi 15.01.2011 16:47

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Цитата:

Сообщение от Woodi (Сообщение 104238)
Ребят а для сервера Aion нужно всё так же делать ток исходники другие?

Вы немного разделом ошиблись, все что касается Aion ищите в другом разделе нашего форума

Woodi 16.01.2011 12:42

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Цитата:

Сообщение от Sharki (Сообщение 104266)
Вы немного разделом ошиблись, все что касается Aion ищите в другом разделе нашего форума

Та я вижу что я ошибся....просто в разделе Aion нет такой информации...:(

Johncrasher 16.01.2011 20:38

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Цитата:

Сообщение от Woodi (Сообщение 104371)
Та я вижу что я ошибся....просто в разделе Aion нет такой информации...:(

Создавайте новую тему и пишите туда всё, что нужно! Проблем то! Только назовите её культурно, а не "помогите" или "хелп"!

Lavs 19.01.2011 18:19

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Цитата:

Сообщение от scergo (Сообщение 103500)
Автор, ну где ж ты раньше был:)
Отредактируй тему, твоя инфа устарела: офф репо трини переехал на https://github.com/TrinityCore/TrinityCore

Не получается счерепашить отсюда, пишет

(falling back to static-http)
[Errno None] HTTP Error 406: Not Acceptable

[command interrupted]

Что то еще надо?

Perfecto 19.01.2011 18:27

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
С гитхаба нельзя скачать черепахой. Нужно использовать Гит. Вот мануал.. Там на примере мангоса, но в общем-то все то же самое, только нужно изменить адрес.

Lavs 19.01.2011 22:38

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Возникла проблема при компиляции ((
Код HTML:

Check for working C compiler using: Visual Studio 9 2008 Win64
Check for working C compiler using: Visual Studio 9 2008 Win64 -- broken
CMake Error at C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
  The C compiler "cl" is not able to compile a simple test program.

  It fails with the following output:

  Change Dir: G:/Work/TC/CMakeFiles/CMakeTmp

 

  Run Build Command:C:\PROGRA~2\MICROS~1.0\Common7\IDE\devenv.com
  CMAKE_TRY_COMPILE.sln /build Debug /project cmTryCompileExec

 

  Microsoft (R) Visual Studio Version 9.0.21022.8.

  Copyright (C) Microsoft Corp.  All rights reserved.

 

  The project consists entirely of configurations that require support for
  platforms which are not installed on this machine.  The project cannot be
  loaded.

  The project consists entirely of configurations that require support for
  platforms which are not installed on this machine.  The project cannot be
  loaded.

  Invalid project

 

  Use:

  devenv [solutionfile | projectfile | anyfile.ext] [switches]

 

  The first argument for devenv is usually a solution file or project file.

  You can also use any other file as the first argument if you want to have
  the

  file open automatically in an editor.  When you enter a project file, the
  IDE

  looks for an .sln file with the same base name as the project file in the

  parent directory for the project file.  If no such .sln file exists, then
  the

  IDE looks for a single .sln file that references the project.  If no such
  single

  .sln file exists, then the IDE creates an unsaved solution with a default
  .sln

  file name that has the same base name as the project file.

 

  Command line builds:

  devenv solutionfile.sln /build [ solutionconfig ] [ /project
  projectnameorfile [ /projectconfig name ] ]

  Available command line switches:

 

  /Build                Builds the solution or project with the specified solution

                  configuration.  For example "Debug".  If multiple platforms

                  are possible, the configuration name must be enclosed in quotes

                  and contain platform name.  For example: "Debug|Win32".

  /Clean                Deletes build outputs.

  /Command        Starts the IDE and executes the command.

  /Deploy                Builds and then deploys the specified build configuration.

  /Edit                Opens the specified files in a running instance of this

                  application.  If there are no running instances, it will

                  start a new instance with a simplified window layout.

  /LCID                Sets the default language in the IDE for the UI.

  /Log                Logs IDE activity to the specified file for troubleshooting.

  /NoVSIP                Disables the VSIP developer's license key for VSIP testing.

  /Out                Appends the build log to a specified file.

  /Project        Specifies the project to build, clean, or deploy.

                  Must be used with /Build, /Rebuild, /Clean, or /Deploy.

  /ProjectConfig        Overrides the project configuration specified in the
  solution

                  configuration.  For example "Debug".  If multiple platforms are

                  possible, the configuration name must be enclosed in quotes

                  and contain platform name.  For example: "Debug|Win32".

                  Must be used with /Project.

  /Rebuild        Cleans and then builds the solution or project with the

                  specified configuration.

  /ResetAddin        Removes commands and command UI associated with the specified
  Add-in.

  /ResetSettings        Restores the IDE's default settings, optionally resets to

                  the specified VSSettings file.

  /ResetSkipPkgs        Clears all SkipLoading tags added to VSPackages.

  /Run                Compiles and runs the specified solution.

  /RunExit        Compiles and runs the specified solution then closes the IDE.

  /SafeMode        Launches the IDE in safe mode loading minimal windows.

  /Upgrade        Upgrades the project or the solution and all projects in it.

                  A backup of these files will be created as appropriate.  Please

                  see Help on 'Visual Studio Conversion Wizard' for more

                  information on the backup process.

 

  Product-specific switches:

 

  /debugexe        Open the specified executable to be debugged.  The

                  remainder of the command line is passed to this

                  executable as its arguments.

  /useenv                Use PATH, INCLUDE, LIBPATH, and LIB environment variables

                  instead of IDE paths for VC++ builds.

 

  To attach the debugger from the command line, use:

          VsJITDebugger.exe -p <pid>

 

 

  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:12 (project)


Configuring incomplete, errors occurred!

Выдает CMake.
И табличку с еррором, что типа:
Ошибка в конфигурации процесса, файлы проекта не верны.

В чем еще может быть проблема? Компилить пытаюсь под win64
Visual Studio 2008 Pro стоит. SSL x64 поставил.

Lavs 23.01.2011 12:37

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Вообщем разобрался, скомпилировал нормально только чистый, без патчей.
При попытки наложить любой патч - worldserver.exe и конфиг к нему не компилируется ((

Патч пробывал и тот, что в примере указан, и еще несколько разных с Тринити.

Perfecto 23.01.2011 12:47

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Значит патч устарел. Смотрите ошибки сначала в гите, затем при компиляции.

Lavs 25.01.2011 13:00

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Назрел вопрос, чем вынуть карты VMAPS и MMAPS?
И куда их правильно положить?
С сервером компилируется 3 файла для карт:
mapextractor.exe - с этим понятно.
vmap3assembler.exe
vmap3extractor.exe - в клиенте создает папку building с файлами wmo и m2. Подозреваю это и есть карты и пути. Куда их правильно в сервак положить?

Perfecto 25.01.2011 13:36

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Создайте батник со следующим содержанием
Код:

vmapExtractor3.exe
md vmaps
vmap_assembler.exe buildings vmaps

pause

скиньте вместе с экстракторами в директорию с игрой и запустите этот батник.
А ммапс извлекать смысла нет, если нет патча на ядро.

Johncrasher 25.01.2011 20:49

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Один вопрос к вышесказанному - обязательно извлекать buildings? Ведь они затем всёравно удаляются!

namnam 13.06.2011 17:57

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Привет всем !
Я вот давно хотел узнать какая сборка лучше ??
Mangos triniti
Или еще какие то скажите плз=)

Itachi 13.06.2011 20:11

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
еще есть аркему(правда их не многие используют), а что лучше - Тринити или Мангос - это вечный холивар) так что тут дело вкуса)

namnam 13.06.2011 20:58

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Sharki,
Ну я вроде как не новичек всю жизнь на мангосте а вот тринити вот думаю что лучше где меньше лагов и всякое такое)

Perfecto 13.06.2011 21:07

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Работает больше на тринити.

namnam 13.06.2011 21:40

Re: Компиляция ядра, создание сборки Trinity Core 3.3.5a под Win32
 
Значит лучше делать сборку тринити) спс большое
У меня есть еще один вопрос но не касающейся этой темы а незнаю куда задать(
Есть такая прога mulitibox она клонирует твоих прсов может кто написать плз как сделать так чтоб играть за 5чаров??причем одинаковыХ


Текущее время: 23:40. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot