|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Дисконект при смене расы |
Дисконект при смене расы |
Доброго времени суток, столкнулся с такой проблемой.
Сделал 4 новых расы и при смене расы через char change допустим с человека на воргена, сервер отключается с ошибкой segmentation fault Просто создание персонажей работает, подскажите в какую сторону копать? в systemconfig.h прописал новых рас Код // Race value is index in ChrRaces.dbc enum Races { RACE_NONE = 0, RACE_HUMAN = 1, RACE_ORC = 2, RACE_DWARF = 3, RACE_NIGHTELF = 4, RACE_UNDEAD_PLAYER = 5, RACE_TAUREN = 6, RACE_GNOME = 7, RACE_TROLL = 8, RACE_GOBLIN = 9, RACE_BLOODELF = 10, RACE_DRAENEI = 11, RACE_FEL_ORC = 12, RACE_NAGA = 13, //RACE_BROKEN = 14, RACE_SKELETON = 15 //RACE_VRYKUL = 16, //RACE_TUSKARR = 17, //RACE_FOREST_TROLL = 18, //RACE_TAUNKA = 19, //RACE_NORTHREND_SKELETON = 20, //RACE_ICE_TROLL = 21 }; // max+1 for player race #define MAX_RACES 16 #define RACEMASK_ALL_PLAYABLE \ ((1<<(RACE_HUMAN-1)) |(1<<(RACE_ORC-1)) |(1<<(RACE_DWARF-1)) | \ (1<<(RACE_NIGHTELF-1)) |(1<<(RACE_UNDEAD_PLAYER-1))|(1<<(RACE_TAUREN-1)) | \ (1<<(RACE_GNOME-1)) |(1<<(RACE_TROLL-1)) |(1<<(RACE_GOBLIN-1)) | \ (1<<(RACE_BLOODELF-1)) |(1<<(RACE_DRAENEI-1)) |(1<<(RACE_FEL_ORC-1)) | \ (1<<(RACE_NAGA-1)) |(1<<(RACE_SKELETON-1))) #define RACEMASK_ALLIANCE \ ((1<<(RACE_HUMAN-1)) | (1<<(RACE_DWARF-1)) | (1<<(RACE_NIGHTELF-1)) | \ (1<<(RACE_GNOME-1)) | (1<<(RACE_DRAENEI-1)) |(1<<(RACE_FEL_ORC-1)) | \ (1<<(RACE_SKELETON-1)))
Сообщение # 1 написано 16.03.2018 в 14:30
|
В ядро да - это всё что изменил.
А если так то конечно нет, затрагивались все необходимые dbc файлы, так же таблицы class_levelstats, playercreateinfo_spell\action и.т.д Привёл потому-что думаю, что где-то стоит проверка на запрет смены на новую расу, и дело 100% в исходном коде, так как если допустим с человека воина поменять на орка воина, то всё проходит отлично.
Сообщение # 3 написано 16.03.2018 в 18:04
|
Запрет должен обрабатываться в контексте самой программы, у Вас же она просто падает. Могу предложить Вам три различных подхода:
1) Искать все места в ядре (поиск ссылок на идентификатор/обычный текстовый поиск), в которых встречается ссылка на затронутые Вашими изменениями идентификаторы, и определять их корректность с учетом этих изменений. 2) Следовать за обработкой команды, мысленно прорабатывая ее выполнение при соответствующих переданных аргументах. 3) Собирать ядро в дебаге и распутывать ситуацию "с конца". Т.е. вызвать ошибку и надеяться, что ее причина будет находиться где-то поблизости от места падения. В первую очередь я бы предпочел второй вариант. В случае неудачи - третий. Первый в последнюю очередь.
Сообщение # 4 написано 16.03.2018 в 18:15
|
| |||
| |||