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

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


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

@dog19601, Хорошо бы к модам сразу писать ридми с содержанием шапки, чтобы скачавший по прямой ссылке мог понять, что это за хрень и как в неё правильно гамать. Мод выкладывают многие сайты и не всегда амк-теам идёт верхней ссылкой, увы.

 

  • Согласен 1
Ссылка на комментарий

@Vier_E, конечно всё это хорошо, но есть маленькое но... Моды камрады делают на голом энтузиазме, не один день, даже не один месяц. Что то ещё от них просить как то язык не поворачивается. Мне тоже не всё в моде нравится, но что выросло, то выросло, пообщаемся промеж себя, разберёмся как нибудь гуртом :drinks:

  • Нравится 1
  • Согласен 2
Ссылка на комментарий

Так, вылет на Лиманске в недострое близ выхода с Госпиталя (там, где неписи сквозь контейнеры ходят, стреляют и гранаты кидают). На высотке монолитовец, я его начал обстреливать одиночными, он ко мне поворачивается и

Скрытый текст

FATAL ERROR

[error]Expression    : FATAL ERROR
[error]Function      : CObjectList::net_Register
[error]File          : d:\_work\forks\ogsr-engine\ogsr_engine\xr_3da\xr_object_list.cpp
[error]Line          : 220
[error]Description   : physic_destroyable_object ID[873] already registered

[16.12.20 20:55:40.644] ***************************[ScriptCrashHandler]**********************************
[16.12.20 20:55:40.644] stack traceback:
[16.12.20 20:55:40.644] *********************************************************************************
[16.12.20 20:55:40.644] ********************************************************************************
[16.12.20 20:55:40.644] !![LogStackTrace] Thread: [UNKNOWN]
[16.12.20 20:55:40.826] !!stack trace:
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrCore.dll], AddrPC.Offset: [000007FEF3DE3E48], Fun: [CTimerBase::getElapsedTime()] + [1516 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrCore.dll], AddrPC.Offset: [000007FEF3E0A449], Fun: [LogStackTrace()] + [73 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrCore.dll], AddrPC.Offset: [000007FEF3E0A28A], Fun: [xrDebug::backend()] + [174 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrCore.dll], AddrPC.Offset: [000007FEF3E0A1C7], Fun: [xrDebug::fatal()] + [131 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F4FFA14], Fun: [CObjectList::net_Register()] + [212 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrGame.dll], AddrPC.Offset: [000007FEED53AF2D]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrGame.dll], AddrPC.Offset: [000007FEED545075]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrGame.dll], AddrPC.Offset: [000007FEED54A8CF]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrGame.dll], AddrPC.Offset: [000007FEED5493D4]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrGame.dll], AddrPC.Offset: [000007FEED4ED2D4]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrGame.dll], AddrPC.Offset: [000007FEED4ECFF9]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrGame.dll], AddrPC.Offset: [000007FEED4E542D]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrGame.dll], AddrPC.Offset: [000007FEED4E4EE6]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F52C19C], Fun: [CLoadScreenRenderer::OnRender()] + [632 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F52B1A4], Fun: [CRenderDevice::FrameMove()] + [292 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F52B48F], Fun: [CRenderDevice::on_idle()] + [223 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F52BC76], Fun: [CRenderDevice::message_loop()] + [98 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F52B292], Fun: [CRenderDevice::Run()] + [182 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F4EE684], Fun: [CApplication::DestroyLoadingScreen()] + [6144 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F4EE9FA], Fun: [CApplication::DestroyLoadingScreen()] + [7030 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F4EC0A5], Fun: [Skin4W()] + [1969 byte(s)]
! Module: [F:\Spl\STALKER_Ars70\bin_x64\xrEngine.exe], AddrPC.Offset: [000000013F54E80A], Fun: [CPerlinNoise3D::Get()] + [42414 byte(s)]
! Module: [C:\Windows\system32\kernel32.dll], AddrPC.Offset: [00000000776A59ED], Fun: [BaseThreadInitThunk()] + [13 byte(s)]
! Module: [C:\Windows\SYSTEM32\ntdll.dll], AddrPC.Offset: [00000000777DC521], Fun: [RtlUserThreadStart()] + [33 byte(s)]
[16.12.20 20:55:40.826] ********************************************************************************
[16.12.20 20:56:01.528] --Saved dump file to [f:\spl\stalker_ars70\appdata\logs\xray_vier_12-16-20_20-56-00.mdmp]

 

Речь про какой-то разрушаемый объект, но попадал я только по чуваку, так как с оптики и одиночными, да и результаты попаданий видел.

@lexa.3012, я о том, что в скачиваемом архиве с модом хорошо бы ридми с описанием делать. Мало ли какими путями к человеку сие попадает, а так он хоть через десять лет будет понимать, что это за штука и чего от неё ждать.

Ссылка на комментарий

@Vier_E, судя по твоему логу и таким же ошибкам в НА5 это коробка или металлическая баррикада (видимо, пуля прошла по бронику монолитовца по касательной и...)

А по ридми: если в архиве несколько правок (как у WASP'а) ридми действительно становится необходим (тот же WASP в пример), а если в архиве единственный файл фонарика light_night.ltx, то на кой там ридми - раздуть архив?!

Скрытый текст

AMD FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

Ссылка на комментарий

@Black_Raven_03, ну фонарики тоже разные бывают. Поэтому в таком случае нужен желательно не ридми, а скриншот в тёмное время суток или в тёмном помещении с включённым фонариком.

Ссылка на комментарий

@Black_Raven_03, да, там он сидит впритык к коробкам и ящикам. Видимо вылет рандомный, так как после я все эти  предметы специально разломал, но вылета не получил.

 

Ссылка на комментарий

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

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

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

  • Сочувствую 1
Ссылка на комментарий
18 минут назад, Vier_E сказал:

 


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

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

 

ругается он на отсутствие файла привязанного в конфиге НеПиСя (монолитовцев), можно в файле "gamedata\configs\creatures\stalkers\m_stalker_monolit.ltx" в строках на sound_ посмотреть на которые ogg-хи ссылается и, если звуков в нет закомментить (символом ";" после "="), чтобы не пытался обратиться

Изменено пользователем Black_Raven_03
  • Спасибо 1
Скрытый текст

AMD FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

Ссылка на комментарий

@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 сказал:

не химерами едиными

Весело, однако... у псевдогигантов, ЕМНИП, такой кости и в стандартном-то скелете, быть не должно. Не предусмотрено.

Только что, Vier_E сказал:

invalid key to 'next'

OGSR-движок на кучу разнообразных скриптовых "неправильных ситуаций" так пишет. Ни с какой кнопкой next это не связано, просто такая запись лога.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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.

Ссылка на комментарий

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

Ссылка на комментарий
Только что, Vier_E сказал:

если это место никак не обойти, а попасть по квесту очень надо? Только перезаход на локу?

А это на входе на локацию произошло? Или где-то в процессе брожения.

Если совсем примитивно, то можно наверное закомментировать весь тот кусок, где он запрашивает кости не проверяя их наличия. Большой беды (типа вылета) не будет. А если более по нормальному, то скрипты надо править, во всех местах где работа с костями идет - ставить проверки на существование нужной кости. Но, это морока которой я как то не горю желанием заниматься)

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на 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,

Это место на Юпитере за мостом, где поезд. Я пошёл к гопникам за доками Х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К добраться можно.

 

Ссылка на комментарий
20.12.2020 в 11:30, Vier_E сказал:

Комментить каждую строку?

Или это проверка неписей на линии для гранатомётчиков?

Ну и в продолжение темы. Количество пробелов перед именем кости как-то влияет на результат обработки строки? Я во второй строке убрал лишний пробел, ну и пока вылетов нет, хотя возможно это потому, что группа охотников с рпг успевает отойти от места раньше, чем замечает монстряк (не знаю почему так стало выходить, но ни стрельбы, ни вылетов пока).

В общем, как я понял, глючит именно часть, отвечающая за логику неписи с РПГ. Итак прежде, чем шмальнуть, непись с РПГ проверяет наличие дружественных унитов на линии до цели. Конечной точкой этой линии является эта самая кость. Если на линии до кости, а также в районе <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



-- Залочил эту тчасть, так как она требует вызова глючной части с костями.
--  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

 

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

Предлагаю после self.object добавить строку отсеивающую всех мутантов (как будто они могут быть союзниками..., ну, Болотный Док, исключение) , к примеру по префиксу ИД, тогда эффективность скрипта будет удовлетворительной и задумка с самой проверкой не пропадёт, а то сам сижу на движковой и каждый раз ловлю палм-фейс от гранатомётчиков старательно расстреливающих своих же на ЧАЭС-2
По собранной по моим прохождениям-брожениям статистике гранатомётчик не в онлайне умирает в отряде (ЧН, ЗП) последним, а при генерации без отряда (ТЧ) пытается прибиться к "своим" (друзья на локе или соседней, потом нейтралы на локе)

Изменено пользователем Black_Raven_03
дополнение
Добавлено  Опричник,

Изучите "Правила цитирования". https://www.amk-team.ru/forum/topic/13514-obyavleniya/

Скрытый текст

AMD FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

Ссылка на комментарий

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

Изменено пользователем Vier_E
  • Не согласен 1
Ссылка на комментарий
5 часов назад, Vier_E сказал(а):

@Black_Raven_03 а шо, в НА есть а-лайф?

А его кто-то когда-то пытался вырезать?! или ты не читал тему по ковырянию движка? А-лайф это поддвижок (одна из длл-ок в бин), занимающаяся "симуляцией" - обработкой ИИ. И если офлайн А-лайф частенько отключают в модах (сразу вспоминается ОЛР, где он хоть и работал, но так как было задумано по диздокам...), то отключение онлайн А-лайфа приведёт к зависшим Т-образным НеПиСям...

Изменено пользователем Black_Raven_03
правка
Скрытый текст

AMD FX-8100 (Bulldozer) , 16GB DDR3-1600, AFOX GeForce GTX1050Ti и нормально сталкерим в НА5.1, НА7, OGSE-0693, OGSR, НС2016, OLR, OFFLIFE, CoC, LADC, CoP Gunslinger, ShoC GA, Legend Return, Anomaly, CS OGSM!

Мозг состоит на 80 процентов из жидкости, и мало того, что она тормозная, так многим еще конкретно не долили...@Denikius136
Black_Raven.gif
 

Ссылка на комментарий

Господа, иконками под НА7 никто не поделится? Не могу распаковать как обычно архивы мода. Уж больно низкого разрешения иконки, на широкоформатных мониторах глаза режет. Хочу поменять под себя.

  • Нравится 1

"Если вы заметили, что вы на стороне большинства, это верный признак того, что пора меняться."

(Марк Твен)

Ссылка на комментарий

@MarsiK я конечно дико извиняюсь, ты хоть немного представляешь какой объём работы надо сделать, что бы перевести ВСЁ оружие на иконки высокого разрешения? Распаковка, по сравнению с этим, детский лепет.

  • Нравится 1
Ссылка на комментарий

@dog19601 многие модели, используемые в НА7, достаточно распространены в других модах, взять даже твои иконки из OGSR, там точно повыше разрешение должно быть у иконок. А вообще порою, может что-то удастся улучшить. Цели исправить всё нет, тупо неоткуда их брать.

 

Файликом иконок поделишься? :biggrin:

"Если вы заметили, что вы на стороне большинства, это верный признак того, что пора меняться."

(Марк Твен)

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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

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