• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Нужна помощь по ядру
Lovexian
Капрал
Доброе время суток, уважаемые форумчане. Мне нужна помощь с компиляцией ядра(и, собственно, выбором самого ядра). Наверняка некоторые из вас начинали разрабатывать собственное ядро начиная с чьего-то(тринити, мангос) ядра, чтобы потом уже его доработать и сделать своё, с своими патчами и т.п. Я недавно решил попробовать заняться чем-то подобным, но, увы, не могу определиться с ядром, с которого можно начать. Перепробовал 4 ядра:
1. iridium(на самом деле arcanumcore)
2. gamecore
3. trinitycore
4. unio core
К сожалению, у всех, кроме 1 ядра при компиляции возникают ошибки. CMake генерирует проект, установлен mysql, openssl, boost, но из-за ошибок в коде ничего не компилируется правильно. Как я понимаю, эти ошибки в коде либо сделаны специально(обычно программисты любят делать такое, сидел раньше на хакерском портале с исходниками) - своеобразный "антинуб", либо просто недоработки разработчика ядра, которые нужно пофиксить при компиле. Я пробовал пофиксить, но учитывая моё далеко не идеальное знание языка c++, у меня ничего не выходит, просто мало опыта для этого.

Так вот, собственно, в чем нужна помощь: можете ли вы мне посоветовать ядро, с которого можно начать?(либо из вышеперечисленных, либо свой вариант) Либо помочь разобраться с ошибками при компиле? Буду очень благодарен.
Сообщение # 1 отредактировано Lovexian - Пятница, 15.05.2015, 23:20
Horon
Рыцарь
Скачиваете исходный код с Официального Репозитория TrinityCore и спокойно компилируете. Далее уже добавите нужные модификации(если они вам нужны).
Все нужные библиотеки указаны. Вам нужно лишь скачать и установить.
Сообщение # 2 отредактировано Horon - Пятница, 15.05.2015, 23:32
Lovexian
Капрал
Цитата Horon ()
Скачиваете исходный код с Официального Репозитория TrinityCore и спокойно компилируете.

А про ошибки компиляции ядер, которые указаны в моем списке, их можно исправить? Или проще начать с чистой тринити?
Сообщение # 3 написано 15.05.2015 в 23:31
Horon
Рыцарь
Цитата Lovexian ()
ошибки компиляции которые указаны в моем списке


Где? Покажите их, там посмотрим.
Сообщение # 4 отредактировано Horon - Пятница, 15.05.2015, 23:36
Lovexian
Капрал
Цитата Horon ()
Где? Покажите их, там посмотрим.

Хорошо, скомпилирую каждое из ядер и выложу ошибки сюда.
Сообщение # 5 написано 15.05.2015 в 23:41
_xXx_
Центурион
Lovexian, Проще начать с чистой тринити. А затем уже добавить нужные тебе патчи и править.
В данных исходниках (кроме офф тринити) нет истории коммитов, следовательно один черт знает что они там намутили! Только больше гемора себе на голову возьмеш. Да и с чистыми проще помощь оказать легче чем с этими. Начнешь патчи ставить и править начнет хоть какой то опыт появляться! А если еще и руками патчи будешь ставить так и структуру потихоньку запомнишь. В общем мое мнение забей на этот говнокод. Тем более в нем все равно почти один паблик.
Сообщение # 6 отредактировано _xXx_ - Пятница, 15.05.2015, 23:48
Lovexian
Капрал
Цитата Horon ()
Где? Покажите их, там посмотрим.

По поводу ошибок:
iridium:

gamecore:


uniocore:


Добавлено (16.05.2015, 02:18)
---------------------------------------------
Цитата _xXx_ ()
Lovexian, Проще начать с чистой тринити. А затем уже добавить нужные тебе патчи и править.
В данных исходниках (кроме офф тринити) нет истории коммитов, следовательно один черт знает что они там намутили! Только больше гемора себе на голову возьмеш. Да и с чистыми проще помощь оказать легче чем с этими. Начнешь патчи ставить и править начнет хоть какой то опыт появляться! А если еще и руками патчи будешь ставить так и структуру потихоньку запомнишь. В общем мое мнение забей на этот говнокод. Тем более в нем все равно почти один паблик.

Спасибо за совет, но такой вопрос: в cmake самая последняя ревизия тринитикора при компиляции требует MS Visual 2013+(в логе ошибка), а у меня его нет, к сожалению. Никак нельзя под другую версию подогнать эту же ревизию? Только скачивать последний MS Visual Studio?
Сообщение # 7 отредактировано Lovexian - Суббота, 16.05.2015, 02:20
distmister
Центурион
Цитата Lovexian ()
iridium

Файл authserver.conf.dist в authserver.conf переименован?
Цитата Lovexian ()
gamecore

Код в студию.
Цитата Lovexian ()
Только скачивать последний MS Visual Studio?

Либо скачивай, либо переписывай исходный код.
Сообщение # 8 написано 16.05.2015 в 04:32
_xXx_
Центурион
Lovexian, оставь в лс скайп. Могу подкинуть тринити кор чистые исходники с базой. По базе исправлены все ошибки при загрузке и тд. В коде тоже исправлены все предупреждения! Могу дать как стартовую ревизию тебе. А дальше сам уже будешь править. Компилятся на отлично на старой студии. Сам столкнулся что не могу 2013 студию поставить из за версии винды.
Сообщение # 9 написано 16.05.2015 в 07:31
Lovexian
Капрал
Цитата _xXx_ ()
Lovexian, оставь в лс скайп. Могу подкинуть тринити кор чистые исходники с базой. По базе исправлены все ошибки при загрузке и тд. В коде тоже исправлены все предупреждения! Могу дать как стартовую ревизию тебе. А дальше сам уже будешь править. Компилятся на отлично на старой студии. Сам столкнулся что не могу 2013 студию поставить из за версии винды.

yoskrilldropthebass скайп. Скопируй в скайпе логин и добавь, буду ждать.

Добавлено (16.05.2015, 17:25)
---------------------------------------------

Цитата distmister ()
Файл authserver.conf.dist в authserver.conf переименован?

Да, переименован.
Цитата distmister ()
Код в студию.

Фулл код
Код, где присутствуют ошибки:
Код
       void EnterCombat(Unit* who)
         {
             if (spells.empty())
                 return;

             for(SpellVct::iterator itr = spells.begin(); itr != spells.end(); ++itr)
             {
                 if (AISpellInfo[*itr].condition == AICOND_AGGRO)
                     me->CastSpell(who, *itr, false);
                 else
                     if (AISpellInfo[*itr].condition == AICOND_COMBAT)
                     {
                         uint32 cooldown = GetAISpellInfo(*itr)->realCooldown;
                         events.ScheduleEvent(*itr, cooldown);
                     }
             }
         }

         void UpdateAI(uint32 diff)
         {
             if (!UpdateVictim())
                 return;

             events.Update(diff);

             bool hasCC = false;
             if (me->GetCharmerOrOwnerGUID() && me->getVictim())
                 hasCC = me->getVictim()->HasAuraType(SPELL_AURA_MOD_CONFUSE);

             if (hasCC)
             {
                 if (me->HasUnitState(UNIT_STATE_CASTING))
                     me->CastStop();
                 me->AI()->EnterEvadeMode();
                 return;
             }

             if (me->HasUnitState(UNIT_STATE_CASTING))
                 return;

             if (uint32 spellId = events.ExecuteEvent())
             {
                 if (hasCC)
                 {
                     events.ScheduleEvent(spellId, 500);
                     return;
                 }

                 DoCast(spellId);
                 uint32 casttime = me->GetCurrentSpellCastTime(spellId);
                 events.ScheduleEvent(spellId, (casttime ? casttime : 500) + GetAISpellInfo(spellId)->realCooldown);
             }
         }

Код
'void npc_mirror_image::npc_mirror_imageAI::EnterCombat(Unit *)' : member function already defined or declared

Код
'void npc_mirror_image::npc_mirror_imageAI::UpdateAI(const uint32)' : member function already defined or declared
Сообщение # 10 написано 16.05.2015 в 17:25
Qwarzen
Рыцарь
вообще-то при выборе ядра большую роль играет то, что вы хотите делать. Например я делаю мир где все нарисовано с 0, нпц скрипты инстов, цепочки квестов, заклинания, классы персонажей и так дальше. Для этой идеи я выбираю mangos т.к он настроен сильней под саму работоспособность сервера, в нем нету ничего лишнего, он чист. Тринити ж забита кучей наработок для стандартного сервера, т.е спелы которые реализованы через ядро и другое. Поэтому в выборе нужно опираться на то что вам нужно.
Сообщение # 11 написано 16.05.2015 в 18:51
Horon
Рыцарь
Цитата Lovexian ()
Код, где присутствуют ошибки:


Так а что тут не понятного? В классе "npc_mirror_image", дважды указано одно и тоже.

Цитата Lovexian ()
     void EnterCombat(Unit* who)
{
if (spells.empty())
return;

for(SpellVct::iterator itr = spells.begin(); itr != spells.end(); ++itr)
{
if (AISpellInfo[*itr].condition == AICOND_AGGRO)
me->CastSpell(who, *itr, false);
else
if (AISpellInfo[*itr].condition == AICOND_COMBAT)
{
uint32 cooldown = GetAISpellInfo(*itr)->realCooldown;
events.ScheduleEvent(*itr, cooldown);
}
}
}

void UpdateAI(uint32 diff)
{
if (!UpdateVictim())
return;

events.Update(diff);

bool hasCC = false;
if (me->GetCharmerOrOwnerGUID() && me->getVictim())
hasCC = me->getVictim()->HasAuraType(SPELL_AURA_MOD_CONFUSE);

if (hasCC)
{
if (me->HasUnitState(UNIT_STATE_CASTING))
me->CastStop();
me->AI()->EnterEvadeMode();
return;
}

if (me->HasUnitState(UNIT_STATE_CASTING))
return;

if (uint32 spellId = events.ExecuteEvent())
{
if (hasCC)
{
events.ScheduleEvent(spellId, 500);
return;
}

DoCast(spellId);
uint32 casttime = me->GetCurrentSpellCastTime(spellId);
events.ScheduleEvent(spellId, (casttime ? casttime : 500) + GetAISpellInfo(spellId)->realCooldown);
}
}


Удалите это, этот код уже есть выше.

И да,

Цитата Lovexian ()

По поводу ошибок:
iridium:


Данная ошибка возникает при смене копирайтов на ядре Arcanum Core, кстати эти ошибки уже обсуждались на этом форуме. Не нужно выдавать чужие работы за свои smile
Сообщение # 12 отредактировано Horon - Суббота, 16.05.2015, 19:38
Lovexian
Капрал
Цитата Horon ()
Данная ошибка возникает при смене копирайтов на ядре Arcanum Core, кстати эти ошибки уже обсуждались на этом форуме. Не нужно выдавать чужие работы за свои

Я и не выдаю их за свои, лол. Исходники то не мои.
Сообщение # 13 написано 16.05.2015 в 20:14
Horon
Рыцарь
Я про вас ничего и не писал... Мой пост относится к другим людям (iridium).
Сообщение # 14 отредактировано Horon - Суббота, 16.05.2015, 23:58
zugurysus
Центурион
Lovexian, Триня или Мангос, я выбирал триню (багов тоже при достаточно _xXx_, был прав, потому что на триню с багом ты обратишься они исправят, а это шлак какой то собраный все в одно.
Сообщение # 15 написано 17.05.2015 в 02:58
Lovexian
Капрал
Цитата Horon ()
Я про вас ничего и не писал... Мой пост относится к другим людям (iridium).

Хорошо, значит я Вас просто неправильно понял)

Добавлено (17.05.2015, 17:03)
---------------------------------------------

Цитата zugurysus ()
Lovexian, Триня или Мангос, я выбирал триню (багов тоже при достаточно _xXx_, был прав, потому что на триню с багом ты обратишься они исправят, а это шлак какой то собраный все в одно.

Спасибо за ответ, мне уже _xXx_ дал ядро тринити, на нем и буду всё делать)
Сообщение # 16 написано 17.05.2015 в 17:03
  • Страница 1 из 1
  • 1
Поиск: