• Страница 1 из 1
  • 1
Компиляция ядра, Сборки SkyFire
EpIlEpT
Капрал
Visual C++ 2008 Express или Visual C++ 2010. Express издания не поддерживают компиляцию на системах с 64 битной архитектурой Для х64 - Visual Studio 2010 (или 2008) Professional Edition

MySQL - сервер баз данных, рекомендуется использовать версии 5.1.х.

Git - распределённая система управления версиями файлов.

CMake - программа для построения проекта и подготовки исходного кода непосредственно к процессу компиляции.

OpenSSL - система безопасных сокетов позволяющая создавать ключи RSA, DH, DSA и сертификаты.

SQLyog - приложение для графического управления сервером MySQL, рекомендуется использовать Ultimate_v8.5.0.6 версию программы.

Navicat - приложение для графического управления сервером MySQL, рекомендуется использовать Lite версию программы.

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

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

Начинаем.
1. Скачивание исходников.
Создаем рабочий папку в "корне" диска, например:
Code
C:\SkyFire

В контекстном меню созданной нами папки выбираем git Bash Here

В появившемся окне пишем git clone git://github.com/ProjectSkyfire/SkyFireEMU.git

Скачивание исходников завершено.

2. "Накатывание" патчей на ядро.
Патч - это некая модификация для ядра, написанная на CPP
Примерный патч :

Code
From 1a96a0b99394f47fb464c28e05968edbf6c67fd2 Mon Sep 17 00:00:00 2001
From: LordPsyan <uppp@juno.com>
Date: Sat, 11 Jun 2011 15:48:11 -0400
Subject: [PATCH] 1645-Fatigue

---
        src/server/game/Entities/Player/Player.cpp   |    9 ++++++++-
        src/server/worldserver/worldserver.conf.dist |    7 +++++++
        2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e5c91c1..58fd18f 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -78,6 +78,7 @@
        #include "CharacterDatabaseCleaner.h"
        #include "InstanceScript.h"
        #include <cmath>
+#include "Config.h"
               
        #define ZONE_UPDATE_INTERVAL (1*IN_MILLISECONDS)
               
@@ -1085,8 +1086,11 @@ int32 Player::getMaxTimer(MirrorTimerType timer)
        {
            switch (timer)
            {
+    if(sConfig->GetBoolDefault("fatigue.enabled", true)) // If "fatigue.enabled" is enabled
+  {
                case FATIGUE_TIMER:
                    return MINUTE*IN_MILLISECONDS;
+  }
                case BREATH_TIMER:
                {
                    if (!isAlive() || HasAuraType(SPELL_AURA_WATER_BREATHING) || GetSession()->GetSecurity() >= AccountTypes(sWorld->getIntConfig(CONFIG_DISABLE_BREATHING)))
@@ -1160,6 +1164,9 @@ void Player::HandleDrowning(uint32 time_diff)
            }
               
            // In dark water
+if(sConfig->GetBoolDefault("fatigue.enabled", true)) // If "fatigue.enabled" is enabled
+{
+
            if (m_MirrorTimerFlags & UNDERWARER_INDARKWATER)
            {
                if (m_zoneUpdateId == 5144) return;
@@ -1199,7 +1206,7 @@ void Player::HandleDrowning(uint32 time_diff)
                else if (m_MirrorTimerFlagsLast & UNDERWARER_INDARKWATER)
                    SendMirrorTimer(FATIGUE_TIMER, DarkWaterTime, m_MirrorTimer[FATIGUE_TIMER], 10);
            }
-
+}
            if (m_MirrorTimerFlags & (UNDERWATER_INLAVA|UNDERWATER_INSLIME))
            {
                // Breath timer not activated - activate it
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/worldserver/worldserver.conf.dist
index a6e1dc1..9709213 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/worldserver/worldserver.conf.dist
@@ -828,6 +828,13 @@ ChatLogTimestamp = 0
        #        Disable/enable waterbreathing for security level (0..4) or higher
        #        Default: 4 (None)
        #
+#    Enable or Disable "Fatigue" timer
+#           default = 1 (enabled)
+#                   = 0 (disabled)
+
+fatigue.enabled = 1
+
+#
        #    AllFlightPaths
        #        Players will start with all flight paths
        #         (Note: ALL flight paths, not only player's team)
--        
1.7.2.3

Копируем всё это содержимое, сохраняем в файл с расширением .patch, например:
Code
City-Conquest.patch

Кидаем патч в папку с ядром,
Так следует поступать с любым устанавливаемым патчем.

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

И выбераем Git Bash Here:

Жмем Enter.
Если после завершения вы видите:
Значит всё в порядке, можно продолжать.
Вы можете продолжить установку других патчей (если они у вас имеются), но у нас он один, так что мы продолжим. Закрываем Git.
3. Сборка компилятора.
Создаем новую папку в нашей рабочей директории, например:
Code
D:\SkyFire\win - в этой папке будет хранится готовый к компиляции проект.


После того как мы подготовили директорию, запускаем ранее нами установленный CMake.

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

Where to build the binaries - папка для готового проекта :
Code
D:\SkyFire\win

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

После жмем :

Если все прошло успешно:

Можно закрывать CMake.
4. Компиляция ядра.
Наш проект теперь хранится в:
D:\SkyFire\win
Запускаем файл с расширением .sln:
Code
SkyFire.sln

Меняете Debug на Release :
Code
========== Построение: успешно 19, с ошибками 0, без изменений 0,пропущено: 1 ==========

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

5. Настройка ядра.
Наше скомпилированное ядро хранится в папке:
Code
D:\SkyFire\win\bin\Release
и копируем такие файлы:       
[code]ace.dll       
authserver.conf.dist       
authserver.exe       
libmysql.dll              
worldserver.conf.dist       
worldserver.exe

Переименовываем :
Code
worldserver.conf.dist - worldserver.conf
authserver.conf.dist - authserver.conf

6. Работа с базами.
SkyFire имеет три базы:
auth - база аккаунтов.
characters - база персонажей.
world - база мира, игрового
Сейчас мы займемся созданием этих трех баз.
6. Создание баз.
Открываем скаченный нами ранее SQLyog, жмем на Conntection, заполняем:
Code
User name: логин MySQL сервера       
Password: пароль MySQL сервера

Жмем ок:
и Делаем как на скрине :


Жмем ОК, теперь мы создали одну из трех баз.
Дальше мы заливаем базу её можно взять от сюда
Code
https://github.com/ProjectSkyfire/SkyFireDB

скачиваем с исходники бд.
Так приступаем к заливки Базы :
1.

2.

3.

База готова.
Сообщение # 1 отредактировано EpIlEpT - Понедельник, 05.12.2011, 15:42
mr_agan
Скаут
Quote
auth - база аккаунтов.
characters - база персонажей.


где можно скачать?
Сообщение # 2 написано 16.06.2012 в 10:55
sillius
Чемпион
Quote (mr_agan)
auth - база аккаунтов.
characters - база персонажей.

где можно скачать?


по умолчанию они есть в папке исходников (sql ) там и есть дамбы этих баз.
Сообщение # 3 написано 16.06.2012 в 13:53
kolyanok
Сержант
Cmake ошибку выдает, блин!
Может потому, что имя юзера на русском?
С уважением,kolyanok.
Фейк с форума wowmagic)
Сообщение # 4 написано 03.08.2012 в 16:31
Thoth
Скаут
Quote
Если после завершения вы видите:
Классный копипаст.
Сообщение # 5 написано 05.08.2012 в 01:09
kolyanok
Сержант
Получилось
Cmake надо помладше скачать, имя юзера на английском должно быть, и тогда все получится)
Спасибо
С уважением,kolyanok.
Фейк с форума wowmagic)
Сообщение # 6 написано 05.08.2012 в 10:23
Kisski
Скаут
Стапэ мужик а где продолжение?:deal: А то что-то закончил на самом интересном!
Сообщение # 7 написано 09.10.2012 в 19:19
resato
lol, u die
Спасибо, полезно )
Skype: nonsenx
Сообщение # 8 написано 22.10.2012 в 22:13
EpIlEpT
Капрал
Вам спасибо, в тут самый адекватный =)
Сообщение # 9 написано 13.01.2013 в 02:37
  • Страница 1 из 1
  • 1
Поиск: