Перейти к контенту

Ковыряем "Новый Арсенал"


SK0RPY0N_O89O

Рекомендуемые сообщения

Вот ещё проблемка:
 

There are no sounds in sound collection "characters_voice\human_03\monolith\(null)" with internal type 19 (sound_script = 23)

Вот это в логе спамит в режиме нон-стоп на некоторых локах. В итоге через пару часов игра просто начинает тормозить, а при выходе получаем лог-файл размером около 10 гигов.
При этом нужные каталоги есть, там же есть файлики звуковые. Вопрос: как узнать на что оно конкретно жалуется и какой sjund_script ковырять? Или мож есть какие-то файлы, которые надо в геймдату добавить?

  • Сочувствую 1

Поделиться этим сообщением


Ссылка на сообщение

@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"?

 

Поделиться этим сообщением


Ссылка на сообщение

Более того, ни в пятой, ни в шестой частях глюков с псевдычами не было. Вопрос такой - как быть, если это место никак не обойти, а попасть по квесту очень надо? Только перезаход на локу?

Поделиться этим сообщением


Ссылка на сообщение

@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

 

В таком виде вылетов больше не ловил. Если лочить только вторую часть, то будет вылет по причине того, что функция вызвана, а её нихрена нет.
С закомментированными строками неписи стреляют из РПГ, но часто мочат заодно и своих.
А ещё чисто риторический вопрос. Ну ладно группировки и вояки, но зачем одиночному охотнику РПГ, я так и не понял. На кого он собрался с ним охотиццо?
На всякий случай прилагаю сам файл скрипта: может он кому-то пригодиццо, а мож кто доковырять и поправить решит.
Скрипт

Изменено пользователем Vier_E
Дополнение
  • Сомнительно 1

Поделиться этим сообщением


Ссылка на сообщение

@ma-alur, проблема только в том, что как раз на Юпитер-то и не попасть. А стандартный переход - как раз среди монолитовцев появляешься. Ну а так теперь хоть к Сидору на кордон за 5К добраться можно.

 

Поделиться этим сообщением


Ссылка на сообщение

@Black_Raven_03 а шо, в НА есть а-лайф? Тогда он какой-то странный. Ротацию неписей по локам не наблюдаю, даже в онлайне они не особо двигаются. Более того, тут встретил такую дикость, что непись после смены группировки свой прежний гулаг тупо не покидает. И получается, что при следующем спавне эту непись тупо грохают бывшие соратники. После АМК сие выглядит реально дико. Ну и глянув на всё это, я пришёл к выводу, что а-лайфа здесь просто нема.

Изменено пользователем Vier_E
  • Не согласен 1

Поделиться этим сообщением


Ссылка на сообщение

А неписи и так из кустов стреляют, и через кусты тоже, причём до странного точно.
А скриптовая боёвка как-то вообще не впечатлила. Я сначала предполагал, что там какие-то вероятностные алгоритмы используются, а по поведению выходит, что всё сильно проще - непись палит направление прицела и не высовывается. Даже если сидит в укрытии и игрока не видит. Если достаточно долго пасти такую непись, то можно заметить, что выскакивает она обычно ровно до линии прицела, причём на дальних дистанциях за такое короткое время, она не должна успевать видеть игрока. Самое забавное, что если после каждого выхода смещать прицел в сторону укрытия, то можно добиться такого результата, что непись максимум будет показывать часть конечности и сразу назад уходить. Т.е. тут она гарантированно не может нас видеть, но упорно не добегает до линии прицеливания. Если же, не сдвигая прицела, взять гранату, то случается чудо - непись вылезает и уже начинает нас искать. Бредовая реализация, ну если как по мне. И если сравнивать с пятой частью, то боты несколько отупели - очень часто случается, что даже после взрыва гранаты совсем рядом, часть из них продолжает сидеть у костра и ждать, когда их прикончат монтировкой.

  • Согласен 2

Поделиться этим сообщением


Ссылка на сообщение

@Alastor Вот здесь лежит архив с распаковщиком: https://yadi.sk/d/RASOEUvb2vBLMw
Я не помню, чей это уже распаковщик, но он гарантированно работает с файлами НА7. Там только параметры надо подобрать. И да, распаковывать лучше не в каталог с игрой, а куда-то ещё. Проще потом скопировать то, что надо.
А правки артов есть в паке чьих-то исправлений, там вроде даже написано в ридми, какой файл за что отвечает.

  • Спасибо 2

Поделиться этим сообщением


Ссылка на сообщение

Небольшой вопрос. Какие файлы мы правим, чтобы добавить имена неписям?  Я нашёл  stable_generate_fnames.xml, stable_generate_snames.xml. Структура понятна. Добавил имена, фамилии (достаточно много), но не наблюдаю среди свежих неписей новых имён. Я ещё какой-то файл упустил, или для работы изменений нужна новая игра? Имена будущим неписям присваиваются заранее или генерируются вместе с ботами?

  • Сочувствую 1

Поделиться этим сообщением


Ссылка на сообщение

Повторилась ошибка:

[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 на каком-то форуме, которое осталось без ответа.
 

Поделиться этим сообщением


Ссылка на сообщение

Народ, а что сделали с обзорностью неписей? Пришёл на Юпитер ясным днём - и неписи меня с другого конца карты методично и достаточно точно обстреливают. В бинокль виден только красный крестик, т.е. дальность реально запредельная. Сам я по таким координатам даже с хорошей оптикой не попадаю - у нас же обрезку видимости сделали зачем-то, теперь с определённой дальности просто серая стена - а вот они довольно уверенно попадают даже из пулемётов (по звуку - МГ42 - значит монолитовцы). Есть способ хотя бы серую стену ликвидировать, чтобы было как в прошлых версиях с обзорностью?
Оно, конечно, добавляет сложности, но точность запредельная у них для такой дистанции.

  • Спасибо 1

Поделиться этим сообщением


Ссылка на сообщение

@ve1son Возможно у кошаков иммунитеты к повреждениям высокие. Надо смотреть. А с другой стороны, какой смысл их враждебными делать? И без того дичи хватает.

Поделиться этим сообщением


Ссылка на сообщение

@ve1son А смысл? Тогда проще заморочиться и перетащить вооружение в оригинал, ну или огср какой. В принципе, норкомания с этой аномальной бабой канеш впечатление портит, но благо есть команда jump_to_level. А так для вырезания слишком много работы придётся переделать.

  • Согласен 3

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
  • Куратор(ы) темы:

×
×
  • Создать...