Zander_driver 10 333 Опубликовано 11 Декабря 2016 [error]Expression : m_textures.find(def_texture_name)!=m_textures.end() [error]Function : CUITextureMaster::FindItem [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\ui\UITextureMaster.cpp [error]Line : 156 [error]Description : wpn_bm16f_410 Что тут собственно, требуется разобрать? вылет находил я сам, после моего же сообщения он в "справочнике" и появился. Причина вылета - где-то кому-то понадобилась текстура с именем, указанным в логе. И не нашлась. Где не нашлась - вопрос не уместный, движок во всех файлах описания текстур ищет, раз не нашел значит вообще такой нету ни в одном из них. Где эта текстура кому-то понадобилась - можно найти тотал-командером, вбив поиск файлов содержащих указанный в логе идентификатор текстуры. Expression : data Function : CVirtualFileReader::CVirtualFileReader File : E:\stalker\sources\trunk\xrCore\FS.cpp Line : 462 Description : ...\gamedata\textures\wpn\wpn_gauss.dds Arguments : Not enough storage is available to process this command Причина: Нехватка памяти для обработки указанной текстуры. Вместо текстуры может быть практически любой файл: звук, модель, all.spawn , файл геометрии локации и т.д. Лечение:Попробуйте загрузить последнее сохранение. Если не помогает - снизьте графические настройки игры. Expression : data Function : CVirtualFileReader::CVirtualFileReader File : D:\prog_repository\sources\trunk\xrCore\FS.cpp Line : 545 Description : d:\games\s.t.a.l.k.e.r. - call of pripyat\gamedata\textures\wpn\wpn_rpk_grips_bump.dds Arguments : Not enough storage is available to process this command. Вроде как всему виной слабый PC (32-битная винда, и малое кол-во ОЗУ). Дополню. Не совсем любой файл, а какой-то именно тяжелый. Текстура большого размера, очень тяжелая модель, очень тяжелый и длинный звуковой или (возможно) видео-файл. И при условии слабого PC с 32-битной виндой и небогатым запасом оперативной памяти, движок может споткнуться на загрузке тяжелых файлов с таким логом. Expression : fatal error Function : CInifile::r_section File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp Line : 502 Description : Arguments : Can't open section 'up_sect_fifthc_ak74u'. Please attach [*.ini_log] file to your bug report По вылету 502, в справочнике довольно расплывчато описано в чем ошибка. У тебя тоже невесть что: каком ini файле? Просят лог прикрепить к багрепорту, это не относится к причине ошибки. Вот эта приписка "Please attach [*.ini_log] file to your bug report" не знаю где и зачем добавлена, но ini-файл это другое, вообще-то. это ресурс получаемый функцией system_ini(), т.е. файл system.ltx и все другие файлы, подключенные к нему с помощью инклюдов, а также подключенные к файлам, которые подключены к system.ltx, и т.д. Нужно понять: где именно отсутствует секция? Во всех конфигах, подключенных к system. Движок везде искал и нигде не нашел, поэтому этот вылет. Невозможно указать "где ее нет" - Везде. Нет. можно лишь найти, где она кому-то понадобилась. Возможные причины для вылета: 1) не подключили или неправильно подключили инклюдом файл, в котором эта секция все таки есть. 2) опечатка в названии секции в конфиге или там где к ней обращаются. т.е. в конфиге есть одно, а вызывают что-то не совпадающее. 3) Ну просто нету такой секции, и не должно быть, допустим. Тогда поиском по скриптам и конфигам найти все упоминания этой секции и удалить. 4) Неправильное наследование. Следует понимать, что все подключенные к system.ltx ресурсы, движок читает как один ini-файл, линейно сверху вниз. Наследовать секции можно только от тех секций, которые к данному моменту уже прочитаны. Примеры: Вот так - можно. [sect_a] param = 1 param2 = 0 [sect_b]:sect_a param_3 = 5 А вот так - нельзя. Произойдет вылет Can't open section 'sect_b' [sect_a]:sect_b param = 1 param2 = 0 [sect_b] param_3 = 5 Expression : fatal error Function : WinMain File : D:\prog_repository\sources\trunk\xrEngine\x_ray.cpp Line : 946 Description : <no> Arguments : stack overflow Тоже не совсем ясно, что же тут требует пояснений. Переполнение стека - достаточно простое явление. Где-то, как правило в каком то цикле, накосячили с вызовом функций, или какая-то функция вызывает рекурсивно сама себя, возможно через посредников, тем самым переполняя стек. Решение тут простое - при написании кода понимать, что будет игра по нему делать, и не требовать "проглотить самое себя, начиная с хвоста" - тогда и движок за собственным хвостом гоняться не будет. 1 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 333 Опубликовано 3 Апреля 2020 29.03.2020 в 22:51, aka_sektor сказал: А зачем ограничивать себя AMK форумом? Затем, что на амк-форуме выше вероятность получить решение проблемы. А не просто упоминание с переливанием из пустого в порожнее, и не дезинформацию от тех кто ни черта не смыслит в вопросе. Хотя да, ты прав, что адекватные ответы могут попадаться и в других местах. Например, из твоей же подборки 29.03.2020 в 22:51, aka_sektor сказал: https://otvet.mail.ru/question/214345575 Ответ хороший. Правильный. 1 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение
Zander_driver 10 333 Опубликовано 3 Апреля 2021 5 часов назад, Colder сказал(а): Description : CUISubLine::GetColorFromText -- can't find first comma В оригинале ТЧ, при задании цвета текста, движок требует чтоб если в коде цвета есть запятые и/или числа, то там было строго 4 числа и строго три запятые. Если не так, то вот этот вылет. А вот так выглядит исправление этого вылета Скрытый текст . u32 CUILines::GetColorFromText(const xr_string& str)const{ // typedef xr_string::size_type size; StrSize begin, end, comma1_pos, comma2_pos, comma3_pos; begin = str.find(BEGIN); end = str.find(END, begin); R_ASSERT2(npos != begin, "CUISubLine::GetColorFromText -- can't find beginning tag %c["); R_ASSERT2(npos != end, "CUISubLine::GetColorFromText -- can't find ending tag ]"); // try default color if (npos != str.find("%c[default]", begin, end - begin)) return m_dwTextColor; // Try predefined in XML colors // CUIXmlInit xml; for (CUIXmlInit::ColorDefs::const_iterator it = CUIXmlInit::GetColorDefs()->begin(); it != CUIXmlInit::GetColorDefs()->end(); ++it) { int cmp = str.compare(begin+3, end-begin-3, *it->first); if (cmp == 0) return it->second; } // try parse values separated by commas comma1_pos = str.find(",", begin); comma2_pos = str.find(",", comma1_pos + 1); comma3_pos = str.find(",", comma2_pos + 1); //R_ASSERT2(npos != comma1_pos, "CUISubLine::GetColorFromText -- can't find first comma"); //R_ASSERT2(npos != comma2_pos, "CUISubLine::GetColorFromText -- can't find second comma"); //R_ASSERT2(npos != comma3_pos, "CUISubLine::GetColorFromText -- can't find third comma"); // commented by Zander u32 a, r, g, b; xr_string single_color; begin+=3; // Этот код воспринимает цвет и в ARGB, и в RGB формате. При не-валидном коде цвета устанавливается ARGB 255,200,200,200. if (npos != comma1_pos && npos != comma2_pos) { // have 2+ comma`s if (npos != comma3_pos) { // a,r,g,b code found single_color = str.substr(begin, comma1_pos - 1); a = atoi(single_color.c_str()); single_color = str.substr(comma1_pos + 1, comma2_pos - 1); r = atoi(single_color.c_str()); single_color = str.substr(comma2_pos + 1, comma3_pos - 1); g = atoi(single_color.c_str()); single_color = str.substr(comma3_pos + 1, end - 1); b = atoi(single_color.c_str()); } else { // r,g,b code found a = 255; single_color = str.substr(begin, comma1_pos - 1); r = atoi(single_color.c_str()); single_color = str.substr(comma1_pos + 1, comma2_pos - 1); g = atoi(single_color.c_str()); single_color = str.substr(comma2_pos + 1, end - 1); b = atoi(single_color.c_str()); } } else { // necessary comma not contains Msg("!not valid text-color code detected."); a = 255; r = 200; g = 200; b = 200; } return color_argb(a,r,g,b); } Код принимает кодировку ARGB либо RGB, автоматически разбираясь что это. Если оно не то и не другое, ругается в лог и устанавливает цвет текста ARGB 255,200,200,200. При любой абракадабре на входе, не вылетает никогда. 1 2 Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Поделиться этим сообщением Ссылка на сообщение