- Регистрация
- 13.10.2013
- Сообщения
- 5 354
- Реакции
- 450
- Баллы
- 0
Гайд по компиляции сервера TrinityCore на Windows 10 х64
Это подробный гайд по компиляции (сборке) серверов 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 для корректной работы. Для этого переходим в панель "Система" и во вкладку "Дополнительные параметры системы"
В открывшемся окне переходим во вкладку "Переменные среды".
Далее в окне "Системные переменные" кликаем по кнопке "создать"
И в открывшемся окне указываем необходимые данные.
В поле "Имя переменной" пишем BOOST_ROOT
в поле "Значение переменной" пишем путь к к папке в которую устанавливали boost. Если установку проводили как и рекомендовалось с дефолтными настройками то путь будет C:/local/boost_1_64_0.
После нажимаем "ОК" и сохраняем все изменения.
OpenSSL:
Установка этих библиотек так же не вызовет ни каких вопросов или сложностей. Просто следуйте пунктам установки сохроняя дефолтные настройки инсталятора. Каких либо дополнительных настроек эти библиотеки не требуют.
Git:
Во время установки Git так же оставляем все установочные пути без изменений. Большая часть установки не потребует внесения каких либо изменений. Но есть и пункты в которых будет необходимо указать правильный пункт.
В окне выбора устанавливаемых компонентов проследите чтоб у вас были указанны все галочки как на скриншоте ниже
В окне выбора того, как будет использоваться Git так же нужно установить галочку как на скриншоте.
И последний пункт в котором необходимо правильно указать выбор при установке. Указываем использование библиотек OpenSSL.
Далее следуйте пунктам установки до окончания процесса. Дополнительных настроек Git не требует.
MySQL:
Это весьма важный компонент сервера и от правильности его установки в дальнейшем будет зависеть очень многое. По этому в точности соблюдайте пункты установки, которые будут показаны ниже.
В окне выбора типа установки выбираем пункт "Typical"
Дойдя до этого пункта обязательно ставим в самом низу галочку как на скриншоте. Если этого не сделать, то все дальнейшие настройки MySQL окажутся недоступными.
В этом окне выбираем пункт с детальной конфигурацией как показано на скриншоте.
В этом окне выбираем в каком качестве будет использоваться MySQL. На наиболее полезным будет параметр для разработчиков. Устанавливаем галочку как показано на скриншоте.
В этом окне выбираем тип работы баз данных. Нам требуется мультифункциональный тип. Устанавливаем галочку как на скриншоте.
В этом окне мы указываем адрес порта на котором будет работать MySQL. Рекомендую оставить адрес порта без изменений 3306. Если же по каким либо причинам вы измените этот порт, то в дальнейшем будет необходимо изменить его и в настройках нашей сборки.
В окне выбора языковой кодировки указываем пункт с UTF 8, как показано на скриншоте ниже. Выбор других пунктов может вызвать в дальнейшем некорректное отображение букв.
В этом окне указываем пароль для root доступа к серверу MySQL. Укажите все настройки как на скрине ниже. Естественно пароль необходимо запомнить или записать. Логин по умолчанию root.
Это финальная часть установки. Если вы сделали все правильно то в конце установки при проверке параметров у вас должно получится так же как и на скриншоте.
Сmake:
При установке cmake нам нужно будет выбрать только один нужный параметр. Все остальные шаги проходят с настройками по умолчанию
Дойдя до этого окна установки выберите параметр как указан на скриншоте ниже.
.
Все дальнейшие шаги установки выполняем без изменений.
Microsoft: Visual Studio:
Это так же важный сфот при установке которого потребуется проследить за правильностью устанавливаемых компонентов программы. Запускаем установку и в открывшемся окне во вкладке "Рабочие нагрузки" в левой части окна отмечаем пункт с разработкой приложений на С++, а в правой части окна устанавливаем в списке все галочки как показаны на скриншоте.
После этого переходим во вкладку "Отдельные компоненты". Все галочки которые уже установлены мы не трогаем. Дойдя до раздела в списке "Пакеты 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
В открывшемся окне в строке url указываем адрес github откуда будет идти загрузка.
Поле directory обычно заполнять не требуется, оно автоматически заполняется и создает подпапку TrinityCore в которую и будут загружены исходники. Если вам нужно вы можете в ручную создать папку для загрузки и указать к ней путь.
Отмечаем галочкой поле Branch и в зависимости от того какой сервер мы компилируем указываем в нем данные.
- Для сервера WOTLK пишем - 3.3.5.
- Для Legion пишем - master. Заполнение этого поля указывает программе исходники какого сервера необходимо скачать.
Я для примера использовал исходники WOTLK. Далее программа откроет окно загрузки, нам остается только дождаться окончания зарузки.
Накатывание патчей:
Большинство патчей устанавливаются непосредственно в само ядро сервера. И их необходимо устанавливать до компиляции. По этому переходим к накатыванию патчей, если вам не нужно устанавливать патчи, то просто переходим к следующему разделу. Если же вы все таки решили накатить патчи, то советую перед этим сделать копию папки с загруженными исходниками, поскольку если патч окажется кривой или что то пойдет не так, вам придется по новой выкачивать исходники.
Для примера рассмотрим накатывание патча позволяющего получать различные звания за количество убийств пвп. Вот сам код патча:
Код:
# 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
В появившейся консоли нам нужно указать путь до устанавливаемого патча, у меня это выглядит так
patch -p1 < honorrank.patch
Если у вас название патча написано иначе, то вместо honorrank укажите свое название.
После того как прописали путь до патча, жмем Enter.
Если после завершения установки патча в консоли мы видим примерно следующий текст
Значит патч установился правильно и не вызвал ни каких ошибок. Если же в тексте будут сообщения об ошибках, то это значит что ваш патч не под ту версию ядра или криво написанный. С таким патчем сервер не будет работать. И вам стоит отказаться от установки этого патча и продолжить дальнейшую работу с сохраненной копией исходников. Вы же сделали копию как я и говорил?!.
В нашем случае все прошло успешно, и мы можем перейти к установки следующего патча. Все патчи в ядро ставятся именно таким способом, по этому мы закончим с показательной установкой патчей и перейдем к следующему пункту.
Компиляция ядра сервера:
Запускаем программу Смаке и в открывшемся окне заполняем необходимые поля:
В первом поле указываем путь до папки с исходниками - С:\Trinity\TrinityCore.
Во втором поле до созданной нами папки Build - С:\Trinity\Build
и жмем Configure. И в открывшемся окне выбираем из списка Visual Studio 15 2017 Win64
Далее жмем Finish и ожидаем окончания построения конфигурации. После того как программа закончит построение вы увидите новое окно, в котором необходимо отметить галочкой пункт Tools, если по умолчанию он не отмечен.
После этого еще раз нажимаем Configure и потом Generate. Ожидаем завершения процесса. По окончанию процесса вы можете прям в Смаке кликнуть по кнопке Open Project и тогда скомпилированный проект сборки сам откроется в Visual Studio. Либо перейти в папку С:\Trinity\Build и вручную открыть от туда файл с расширением .sln. В нашем случае этот файл будет называться TrinityCore.sln.
Далее ждем когда в Visual Studio полностью прогрузится наша сборка. Далее в конфигураторе решения изменяем значение на Release.
Переходим во вкладку "Сборка", где сначала выбираем пункт "Очистить решение", и дождавшись окончания процесса выбираем пункт "Собрать решение". Далее остается только дождаться завершения сборки, насколько быстро это произойдет зависит только от вашего ПК.
Когда решение будет собрано вы увидите примерно следующий текст
Код:
========== Сборка: успешно: 19, с ошибками: 0, без изменений: 0, пропущено: 2 ==========
Подготовка к запуску:
После построения сборки наш сервер практически готов к запуску. Его можно найти по следующему пути C:\Trinity\Build\bin\Release.
Если все прошло успешно, то в сборке WOTLK у вас должны присутствовать следующие файлы:
- authserver.exe
- authserver.pdb
- authserver.conf.dist
- worldserver.exe
- worldserver.pdb
- worldserver.conf.dist
- libmysql.dll
- libeay32.dll
- ssleay32.dll
- bnetserver.exe
- bnetserver.pdb
- bnetserver.conf.dist
- bnetserver.cert.perm
- bnetserver.key.perm
- worldserver.exe
- worldserver.pdb
- worldserver.conf.dist
- libmysql.dll
- libeay32.dll
- ssleay32.dll
Далее нам потребуется в папку с готовым сервером скопировать файлы библиотек.
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
В открывшейся консоли видим 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;
После того как сервер заполнит все базы и полностью загрузится он уже полностью готов к работе. Остается только запустить сервер авторизации authserver.exe и можно переходить к созданию учетной записи и игре.
Гайд составлен специально для сайта
Игровой портал 1n-GAME
Любое использование материала
разрешено только при наличии
активной ссылки на источник!
Игровой портал 1n-GAME
Любое использование материала
разрешено только при наличии
активной ссылки на источник!
Последнее редактирование: