• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Дисконект при смене расы
darker7
Скаут
Доброго времени суток, столкнулся с такой проблемой.
Сделал 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
p620
Маршал
Любопытства ради. Это все изменения, которые Вы совершили для имплементации новых рас? Если нет - почему решили привести именно эти?
Сообщение # 2 написано 16.03.2018 в 17:07
darker7
Скаут
В ядро да - это всё что изменил. 
А если так то конечно нет, затрагивались все необходимые dbc файлы, так же таблицы class_levelstats, playercreateinfo_spell\action и.т.д
Привёл потому-что думаю, что где-то стоит проверка на запрет смены на новую расу, и дело 100% в исходном коде, так как если допустим с человека воина поменять на орка воина, то всё проходит отлично.
Сообщение # 3 написано 16.03.2018 в 18:04
p620
Маршал
Запрет должен обрабатываться в контексте самой программы, у Вас же она просто падает. Могу предложить Вам три различных подхода:
1) Искать все места в ядре (поиск ссылок на идентификатор/обычный текстовый поиск), в которых встречается ссылка на затронутые Вашими изменениями идентификаторы, и определять их корректность с учетом этих изменений.
2) Следовать за обработкой команды, мысленно прорабатывая ее выполнение при соответствующих переданных аргументах.
3) Собирать ядро в дебаге и распутывать ситуацию "с конца". Т.е. вызвать ошибку и надеяться, что ее причина будет находиться где-то поблизости от места падения.
В первую очередь я бы предпочел второй вариант. В случае неудачи - третий. Первый в последнюю очередь.
Сообщение # 4 написано 16.03.2018 в 18:15
darker7
Скаут
Дебаг пробовал но ничего кроме segmentation fault он мне не выдал sad
Сообщение # 5 написано 16.03.2018 в 18:24
Ranege
Чемпион
Начни читать доки cmake и gdb. Но перед этим осваивай язык, читай книги(если этого еще не делал). Или нанимай людей для фиксов.
Сообщение # 6 написано 17.03.2018 в 01:59
darker7
Скаут
Решено тему можно закрыть smile
Сообщение # 7 написано 17.03.2018 в 19:22
  • Страница 1 из 1
  • 1
Поиск: