|
Архив - только для чтения |
Модератор форума: andycrowz |
Форум Корзина форума Корзина Нужна помощь по ядру |
Нужна помощь по ядру |
Доброе время суток, уважаемые форумчане. Мне нужна помощь с компиляцией ядра(и, собственно, выбором самого ядра). Наверняка некоторые из вас начинали разрабатывать собственное ядро начиная с чьего-то(тринити, мангос) ядра, чтобы потом уже его доработать и сделать своё, с своими патчами и т.п. Я недавно решил попробовать заняться чем-то подобным, но, увы, не могу определиться с ядром, с которого можно начать. Перепробовал 4 ядра:
1. iridium(на самом деле arcanumcore) 2. gamecore 3. trinitycore 4. unio core К сожалению, у всех, кроме 1 ядра при компиляции возникают ошибки. CMake генерирует проект, установлен mysql, openssl, boost, но из-за ошибок в коде ничего не компилируется правильно. Как я понимаю, эти ошибки в коде либо сделаны специально(обычно программисты любят делать такое, сидел раньше на хакерском портале с исходниками) - своеобразный "антинуб", либо просто недоработки разработчика ядра, которые нужно пофиксить при компиле. Я пробовал пофиксить, но учитывая моё далеко не идеальное знание языка c++, у меня ничего не выходит, просто мало опыта для этого. Так вот, собственно, в чем нужна помощь: можете ли вы мне посоветовать ядро, с которого можно начать?(либо из вышеперечисленных, либо свой вариант) Либо помочь разобраться с ошибками при компиле? Буду очень благодарен. |
Скачиваете исходный код с Официального Репозитория TrinityCore и спокойно компилируете. Далее уже добавите нужные модификации(если они вам нужны).
Все нужные библиотеки указаны. Вам нужно лишь скачать и установить. |
Lovexian, Проще начать с чистой тринити. А затем уже добавить нужные тебе патчи и править.
В данных исходниках (кроме офф тринити) нет истории коммитов, следовательно один черт знает что они там намутили! Только больше гемора себе на голову возьмеш. Да и с чистыми проще помощь оказать легче чем с этими. Начнешь патчи ставить и править начнет хоть какой то опыт появляться! А если еще и руками патчи будешь ставить так и структуру потихоньку запомнишь. В общем мое мнение забей на этот говнокод. Тем более в нем все равно почти один паблик. |
По поводу ошибок: iridium: gamecore: uniocore: Добавлено (16.05.2015, 02:18) --------------------------------------------- Lovexian, Проще начать с чистой тринити. А затем уже добавить нужные тебе патчи и править. В данных исходниках (кроме офф тринити) нет истории коммитов, следовательно один черт знает что они там намутили! Только больше гемора себе на голову возьмеш. Да и с чистыми проще помощь оказать легче чем с этими. Начнешь патчи ставить и править начнет хоть какой то опыт появляться! А если еще и руками патчи будешь ставить так и структуру потихоньку запомнишь. В общем мое мнение забей на этот говнокод. Тем более в нем все равно почти один паблик. Спасибо за совет, но такой вопрос: в cmake самая последняя ревизия тринитикора при компиляции требует MS Visual 2013+(в логе ошибка), а у меня его нет, к сожалению. Никак нельзя под другую версию подогнать эту же ревизию? Только скачивать последний MS Visual Studio? |
Сообщение # 8 написано 16.05.2015 в 04:32
|
Lovexian, оставь в лс скайп. Могу подкинуть тринити кор чистые исходники с базой. По базе исправлены все ошибки при загрузке и тд. В коде тоже исправлены все предупреждения! Могу дать как стартовую ревизию тебе. А дальше сам уже будешь править. Компилятся на отлично на старой студии. Сам столкнулся что не могу 2013 студию поставить из за версии винды.
Сообщение # 9 написано 16.05.2015 в 07:31
|
Lovexian, оставь в лс скайп. Могу подкинуть тринити кор чистые исходники с базой. По базе исправлены все ошибки при загрузке и тд. В коде тоже исправлены все предупреждения! Могу дать как стартовую ревизию тебе. А дальше сам уже будешь править. Компилятся на отлично на старой студии. Сам столкнулся что не могу 2013 студию поставить из за версии винды. yoskrilldropthebass скайп. Скопируй в скайпе логин и добавь, буду ждать. Добавлено (16.05.2015, 17:25) Да, переименован. Фулл код Код, где присутствуют ошибки: Код 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
|
вообще-то при выборе ядра большую роль играет то, что вы хотите делать. Например я делаю мир где все нарисовано с 0, нпц скрипты инстов, цепочки квестов, заклинания, классы персонажей и так дальше. Для этой идеи я выбираю mangos т.к он настроен сильней под саму работоспособность сервера, в нем нету ничего лишнего, он чист. Тринити ж забита кучей наработок для стандартного сервера, т.е спелы которые реализованы через ядро и другое. Поэтому в выборе нужно опираться на то что вам нужно.
Сообщение # 11 написано 16.05.2015 в 18:51
|
Так а что тут не понятного? В классе "npc_mirror_image", дважды указано одно и тоже. 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); } } Удалите это, этот код уже есть выше. И да, Данная ошибка возникает при смене копирайтов на ядре Arcanum Core, кстати эти ошибки уже обсуждались на этом форуме. Не нужно выдавать чужие работы за свои |
Хорошо, значит я Вас просто неправильно понял) Добавлено (17.05.2015, 17:03) Lovexian, Триня или Мангос, я выбирал триню (багов тоже при достаточно _xXx_, был прав, потому что на триню с багом ты обратишься они исправят, а это шлак какой то собраный все в одно. Спасибо за ответ, мне уже _xXx_ дал ядро тринити, на нем и буду всё делать)
Сообщение # 16 написано 17.05.2015 в 17:03
|
| |||
| |||