Vier_E 37 Опубликовано 20 Декабря 2020 Вот ещё проблемка: There are no sounds in sound collection "characters_voice\human_03\monolith\(null)" with internal type 19 (sound_script = 23) Вот это в логе спамит в режиме нон-стоп на некоторых локах. В итоге через пару часов игра просто начинает тормозить, а при выходе получаем лог-файл размером около 10 гигов. При этом нужные каталоги есть, там же есть файлики звуковые. Вопрос: как узнать на что оно конкретно жалуется и какой sjund_script ковырять? Или мож есть какие-то файлы, которые надо в геймдату добавить? 1 Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 20 Декабря 2020 @Black_Raven_03, благодарю. Там действительно были пустые строки, хотя нужные каталоги со звуками есть. Но вот конфигов женских персонажей не встретил в этом каталоге. Они где-то отдельно лежат, не в курсе? Ну и не химерами едиными, однако: Скрытый текст FATAL ERROR [error]Expression : FATAL ERROR [error]Function : CScriptGameObject::bone_position [error]File : d:\_work\forks\ogsr-engine\ogsr_engine\xrgame\script_game_object.cpp [error]Line : 347 [error]Description : model doesn't have bone [bip01_spine] for section [gigant_strong] [20.12.20 16:03:18.362] ***************************[ScriptCrashHandler]********************************** [20.12.20 16:03:18.362] stack traceback: [C]: in function 'bone_position' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:905: in function 'check_npc_on_fire_line' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:868: in function 'check_objects' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:652: in function '_execute' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:573: in function <f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:569> [20.12.20 16:03:18.362] Locals: [20.12.20 16:03:18.362] userdata (*temporary) : (game_object): 00000000DE0737D0 [20.12.20 16:03:18.362] string (*temporary) : bip01_spine [20.12.20 16:03:18.362] End [20.12.20 16:03:18.362] Locals: [20.12.20 16:03:18.362] Userdata: self [20.12.20 16:03:18.362] boolean self.firing_actor : false [20.12.20 16:03:18.362] Table: self.st [20.12.20 16:03:18.362] userdata self.st.ini : (ini_file): 00000000E3DCB3A0 [20.12.20 16:03:18.362] string self.st.scheme : alternate_combat [20.12.20 16:03:18.362] userdata self.st.npc : (game_object): 00000000DE6F8FD0 [20.12.20 16:03:18.362] boolean self.st.enabled : true [20.12.20 16:03:18.362] boolean self.st.ready_to_grenade : false [20.12.20 16:03:18.362] string self.st.section : logic [20.12.20 16:03:18.362] boolean self.can_fire : false [20.12.20 16:03:18.362] Table: self.objects [20.12.20 16:03:18.363] table self.objects.0 : [...] [20.12.20 16:03:18.363] ********************************************************************************* [20.12.20 16:03:18.363] [print_output([CScriptEngine::lua_pcall_failed])] SCRIPT RUNTIME ERROR: invalid key to 'next' stack traceback: [C]: at 0x07feed3afdc4 [C]: in function 'bone_position' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:905: in function 'check_npc_on_fire_line' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:868: in function 'check_objects' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:652: in function '_execute' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:573: in function <f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:569> [20.12.20 16:03:18.363] ********************************************************************************* [20.12.20 16:03:18.363] FATAL ERROR [error]Expression : FATAL ERROR [error]Function : CScriptEngine::lua_pcall_failed [error]File : d:\_work\forks\ogsr-engine\ogsr_engine\common_ai\script_engine.cpp [error]Line : 52 [error]Description : [CScriptEngine::lua_pcall_failed]: invalid key to 'next' [20.12.20 16:03:18.363] ***************************[ScriptCrashHandler]********************************** [20.12.20 16:03:18.363] stack traceback: [C]: at 0x07feed3afdc4 [C]: in function 'bone_position' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:905: in function 'check_npc_on_fire_line' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:868: in function 'check_objects' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:652: in function '_execute' f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:573: in function <f:\spl\stalker_ars70\gamedata\scripts\xrs_battle_ai.script:569> [20.12.20 16:03:18.363] ********************************************************************************* [20.12.20 16:03:18.363] ******************************************************************************** Я только не понял, что за вторая ошибка по 52 строке? Какая кнопка "Next"? Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 20 Декабря 2020 Более того, ни в пятой, ни в шестой частях глюков с псевдычами не было. Вопрос такой - как быть, если это место никак не обойти, а попасть по квесту очень надо? Только перезаход на локу? Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 20 Декабря 2020 (изменено) @Zander_driver, Это место на Юпитере за мостом, где поезд. Я пошёл к гопникам за доками Х8, но с какой стороны ни подходи, видимо псевдычи попадают в онлайн и происходит вылет (обычно в один момент со звуками стрельбы). Должно быть, происходит как с химерами - генерится монстр и группа неписей, которые начинают с монстром воевать. И вот интересно, до перехода в онлайн в памяти лежит один и тот же монстр, или он случайно выбирается из вариантов в момент генерации? Хотя с химерами помогло только длительное ожидание (более суток) и подход к Барьеру с другой стороны. Вот кусок вылетающего скрипта с костями: Скрытый текст function action_altcombat:check_npc_on_fire_line( obj, weapon, be ) if not IsRPG( weapon ) then return false end local npc = self.object local npc_pos = npc:bone_position( "bip01_spine" ) local be_pos = be:bone_position( "bip01_spine" ) local friend_pos = obj:bone_position( "bip01_spine" ) return ( be_pos:distance_to( friend_pos ) < 25 or be_pos:distance_to( npc_pos ) < 25 or friend_pos:distance_to( npc_pos ) < 25 ) end Комментить каждую строку? Или это проверка неписей на линии для гранатомётчиков? Ну и в продолжение темы. Количество пробелов перед именем кости как-то влияет на результат обработки строки? Я во второй строке убрал лишний пробел, ну и пока вылетов нет, хотя возможно это потому, что группа охотников с рпг успевает отойти от места раньше, чем замечает монстряк (не знаю почему так стало выходить, но ни стрельбы, ни вылетов пока). В общем, как я понял, глючит именно часть, отвечающая за логику неписи с РПГ. Итак прежде, чем шмальнуть, непись с РПГ проверяет наличие дружественных унитов на линии до цели. Конечной точкой этой линии является эта самая кость. Если на линии до кости, а также в районе <25 (каких-то единиц) нет своих, то стреляет. Если лочить, то два участка в скрипте, так как выше есть функция (или что там), которая проверяет, вооружена ли непись РПГ, и вызывает функцию проверки, если ответ истинный. Скрытый текст -- Залочил эту тчасть, так как она требует вызова глючной части с костями. -- if enemy and bw and IsRPG( bw ) then -- for _, t in ipairs({ game_object.friend, game_object.neutral }) do -- for k, v in pairs( self.objects[ t ] ) do -- if self:check_npc_on_fire_line( v, bw, enemy ) then -- self.can_fire = false -- return -- end -- end -- end -- end if bw and bw:is_weapon() then self.can_fire = bw:get_weapon():ready_to_kill() else self.can_fire = false end end function action_altcombat:check_single_object( obj ) if not obj then return end if not ( obj:is_actor() or obj:is_custom_monster() ) then return end local npc = self.object if obj:alive() and npc:id() ~= obj:id() then if ( obj:is_actor() or obj:is_stalker() ) and primary_target[ npc:id() ] ~= obj:id() then self.objects[ npc:relation( obj ) ][ obj:id() ] = obj elseif obj:is_monster() then self.objects.monsters[ obj:id() ] = obj end end end --Глючная часть с костями. --function action_altcombat:check_npc_on_fire_line( obj, weapon, be ) -- if not IsRPG( weapon ) then return false end -- local npc = self.object -- local npc_pos = npc:bone_position( "bip01_spine" ) -- local be_pos = be:bone_position( "bip01_spine" ) -- local friend_pos = obj:bone_position( "bip01_spine" ) -- return ( -- be_pos:distance_to( friend_pos ) < 25 -- or be_pos:distance_to( npc_pos ) < 25 -- or friend_pos:distance_to( npc_pos ) < 25 -- ) --end В таком виде вылетов больше не ловил. Если лочить только вторую часть, то будет вылет по причине того, что функция вызвана, а её нихрена нет. С закомментированными строками неписи стреляют из РПГ, но часто мочат заодно и своих. А ещё чисто риторический вопрос. Ну ладно группировки и вояки, но зачем одиночному охотнику РПГ, я так и не понял. На кого он собрался с ним охотиццо? На всякий случай прилагаю сам файл скрипта: может он кому-то пригодиццо, а мож кто доковырять и поправить решит.Скрипт Изменено 20 Декабря 2020 пользователем Vier_E Дополнение 1 Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 21 Декабря 2020 @ma-alur, проблема только в том, что как раз на Юпитер-то и не попасть. А стандартный переход - как раз среди монолитовцев появляешься. Ну а так теперь хоть к Сидору на кордон за 5К добраться можно. Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 30 Декабря 2020 (изменено) @Black_Raven_03 а шо, в НА есть а-лайф? Тогда он какой-то странный. Ротацию неписей по локам не наблюдаю, даже в онлайне они не особо двигаются. Более того, тут встретил такую дикость, что непись после смены группировки свой прежний гулаг тупо не покидает. И получается, что при следующем спавне эту непись тупо грохают бывшие соратники. После АМК сие выглядит реально дико. Ну и глянув на всё это, я пришёл к выводу, что а-лайфа здесь просто нема. Изменено 30 Декабря 2020 пользователем Vier_E 1 Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 13 Января 2021 А неписи и так из кустов стреляют, и через кусты тоже, причём до странного точно. А скриптовая боёвка как-то вообще не впечатлила. Я сначала предполагал, что там какие-то вероятностные алгоритмы используются, а по поведению выходит, что всё сильно проще - непись палит направление прицела и не высовывается. Даже если сидит в укрытии и игрока не видит. Если достаточно долго пасти такую непись, то можно заметить, что выскакивает она обычно ровно до линии прицела, причём на дальних дистанциях за такое короткое время, она не должна успевать видеть игрока. Самое забавное, что если после каждого выхода смещать прицел в сторону укрытия, то можно добиться такого результата, что непись максимум будет показывать часть конечности и сразу назад уходить. Т.е. тут она гарантированно не может нас видеть, но упорно не добегает до линии прицеливания. Если же, не сдвигая прицела, взять гранату, то случается чудо - непись вылезает и уже начинает нас искать. Бредовая реализация, ну если как по мне. И если сравнивать с пятой частью, то боты несколько отупели - очень часто случается, что даже после взрыва гранаты совсем рядом, часть из них продолжает сидеть у костра и ждать, когда их прикончат монтировкой. 2 Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 16 Января 2021 @Alastor Вот здесь лежит архив с распаковщиком: https://yadi.sk/d/RASOEUvb2vBLMw Я не помню, чей это уже распаковщик, но он гарантированно работает с файлами НА7. Там только параметры надо подобрать. И да, распаковывать лучше не в каталог с игрой, а куда-то ещё. Проще потом скопировать то, что надо. А правки артов есть в паке чьих-то исправлений, там вроде даже написано в ридми, какой файл за что отвечает. 2 Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 24 Января 2021 Небольшой вопрос. Какие файлы мы правим, чтобы добавить имена неписям? Я нашёл stable_generate_fnames.xml, stable_generate_snames.xml. Структура понятна. Добавил имена, фамилии (достаточно много), но не наблюдаю среди свежих неписей новых имён. Я ещё какой-то файл упустил, или для работы изменений нужна новая игра? Имена будущим неписям присваиваются заранее или генерируются вместе с ботами? 1 Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 30 Января 2021 Повторилась ошибка: [error]Expression : FATAL ERROR [error]Function : CScriptEngine::lua_pcall_failed [error]File : d:\_work\forks\ogsr-engine\ogsr_engine\common_ai\script_engine.cpp [error]Line : 52 [error]Description : [CScriptEngine::lua_pcall_failed]: f:\spl\stalker_ars70\gamedata\scripts\_g.script:78: NPC with name %s can't present in PatrolManager[%s] Сначала я думал, что рандомный вылет, но раз повторяется, значит проблема более серьёзная. В интернетах пусто как-то по этому поводу, единственное повторение по поводу НА6 на каком-то форуме, которое осталось без ответа. Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 15 Апреля 2021 Народ, а что сделали с обзорностью неписей? Пришёл на Юпитер ясным днём - и неписи меня с другого конца карты методично и достаточно точно обстреливают. В бинокль виден только красный крестик, т.е. дальность реально запредельная. Сам я по таким координатам даже с хорошей оптикой не попадаю - у нас же обрезку видимости сделали зачем-то, теперь с определённой дальности просто серая стена - а вот они довольно уверенно попадают даже из пулемётов (по звуку - МГ42 - значит монолитовцы). Есть способ хотя бы серую стену ликвидировать, чтобы было как в прошлых версиях с обзорностью? Оно, конечно, добавляет сложности, но точность запредельная у них для такой дистанции. 1 Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 5 Ноября 2021 @ve1son Возможно у кошаков иммунитеты к повреждениям высокие. Надо смотреть. А с другой стороны, какой смысл их враждебными делать? И без того дичи хватает. Поделиться этим сообщением Ссылка на сообщение
Vier_E 37 Опубликовано 7 Ноября 2021 @ve1son А смысл? Тогда проще заморочиться и перетащить вооружение в оригинал, ну или огср какой. В принципе, норкомания с этой аномальной бабой канеш впечатление портит, но благо есть команда jump_to_level. А так для вырезания слишком много работы придётся переделать. 3 Поделиться этим сообщением Ссылка на сообщение