scripts/4_World/entities\manbase\playerbase.c:4575
открываю, смотрю
вот строка
Смотрим возникшую ошибку : NULL pointer to instance
т.е. попытка сделать что-то из переменной, имеющей NULL значение. Попросту отсутствующее проще говоря.
Смотрим 2 строки над этим и что мы видим?
ClothingBase clothing;
Class.CastTo(clothing, attachment);
создали переменную, пытаемся преобразовать другую в класс ClothingBase
Ну и следующей же строкой наша идет проблемная, где мы уже вызываем переменную.
Где ошибка?
Ну с точки зрения корректности кода, у авторов игры - проверки не хватает на случай, если вдруг переменная не сможет преобразоваться, и возникнет ситуация, как щас у нас.
С точки зрения текущей ситуации и понимания что в код авторов игры мы не влезем, начинаем смотреть откуда ноги растут:
собственно видим, что получается аттачмент с инвентаря и проверяется, относится ли он к одежде. В нашем случае явно относится, иначе б код н евызвался.
Аттачмент берется со слотов персонажа игрока, буквально надетых на него. Ну т.е. ноги, тело, голова и т.п. Почему с него? Ответ прост - функция в PlayerBase, т.е. класс персонажа игрока, ну и вызовы без указаний других переменных, т.е. с экземпляром текущего класса действия.
Итого получаем прямую следственно-вызываемую цепочку: на персонаже присутствует какой-то объект (куртка, башмаки, рюкзак и т.п.), который скнфигурирован не верно. Т.е. идентифицируется скриптом как IsClothing - true, но не относится к классу ClothingBase или любы подклассам, следующим из него, тем самым ломая вычисления родного скрипта. Косяк, разумеется, в неправильно написанной шмотке. Какой именно - проще всего узнать, перебрав все их на голом полностью персонаже на локальном сервере, и проверив, после надевания какой проблема сыпет лог.
Как-то так. Учимся думать, мыслить, ну и выкидывать криво написанные моды из коллекций.