Silver Raven 197 Опубликовано 28 Января 2016 Еще бы избавиться от пусть и редких, но противных ошибок переполнения стека (иногда, вываливающихся как-раз при юзании неписями подстволок). aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 28 Января 2016 @dromundus, допустим. Но те версии, что лежат в шапке темы ведь не содержат данных правок? Или я ошибаюсь. aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 28 Января 2016 (изменено) @Bak, увы, у меня в доках завалялся только самый конец лога: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...р s.t.a.l.k.e.r\shoc\gamedata\scripts\rx_wmgr.script:549: C stack overflow Версия игры 1.0006 (собственная сборка), пропатченная X-Ray Extensions и S.T.A.L.K.E.R. Sound EnvFx А вызвать данную ошибку целенаправленно довольно сложно. Она очень рандомна. Тем не менее, попробую, дабы было больше деталей. Ну или хотя бы полный лог. Изменено 28 Января 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 6 Августа 2016 (изменено) @alex5773, Моя версия отличается от предпоследней, что в шапке темы. К примеру, там добавлена функция проверки на безопасность стрельбы для НПС из РГ-6 или РПГ: ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- -- by KamikaZze -- небольшая часть кода скопипастена из check_friends_on_fire_line так как идельно подходила -- для этих целей. Надеюсь xStream не обидится -- -- Эта функция сделана для ликвидации ситуаций когда непись с РПГ-7 или РГ-6 ведёт себя как сумашедший шахид, -- стреляя в упор в толпе своих же товарищей и вынося их всех под ноль в итоге, -- вводя следующие ограничения: расстояние до цели должно быть не менее 25 метров, до ближайшего друга не -- менее 12 метров, и от цели до ближайшего друга не менее 8 метров. В этом случае если непись по случайности -- выстрелит себе под ноги, он подорвёт только себя, окружающие не пострадают. -- -- В случае если условия для безопасного ведения огня не выполняются, РПГ-7 или РГ-6 просто не включается менеджером -- в табличку доступного для стрельбы оружия, и непись достаёт другой ствол... -- -- Помимо дистанции проверяется ещё и валидность цели - непись не будет вести огонь из РПГ-7 или РГ-6 по -- собакам, кошкам и плотям. По псевдопсам - будет, они расцениваются как опасная цель. -- Аналогично тушканы и крысы, так как бегают стаями. ---------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------- function check_if_safe_rpg7(npc) local shooting_are_safe = true local be = npc:best_enemy() local friends = {} local function check_object(obj) if obj and obj.clsid and obj:alive() and npc:id() ~= obj:id() then if IsStalker(obj) and npc:relation(obj) ~= game_object.enemy then table.insert(friends,obj) end end end for o in npc:memory_visible_objects() do check_object(o:object()) end for o in npc:memory_sound_objects() do check_object(o:object()) end if be then local npc_pos = npc:bone_position("bip01_spine") local be_pos = be:bone_position("bip01_spine") local be_dist = npc_pos:distance_to(be_pos) local check_dist = 20 local friendly_fire_dist = 20 if #friends ~= 0 then for i,friend in ipairs(friends) do local friend_pos = friend:bone_position("bip01_spine") local friend_dist = npc_pos:distance_to(friend_pos) local ff_dist = friend_pos:distance_to(be_pos) if friend_dist < check_dist then check_dist = friend_dist end if ff_dist < friendly_fire_dist then friendly_fire_dist = ff_dist end if check_dist <= 15 or ff_dist <= 15 then shooting_are_safe = false return shooting_are_safe end end end if (be_dist > 25) and (check_dist > 15) and (friendly_fire_dist > 15) and valid_target(be) then shooting_are_safe = true return shooting_are_safe else shooting_are_safe = false return shooting_are_safe end end return shooting_are_safe end Можешь сам убедится, поискав ее в оригинальном rx_wmgr.scipt - не найдешь. Второе - я тестировал апдейт как на чистой игре совмещая с прошлым неофициальным релизом. Неудачно. (пришлось брать тот, что в шапке - да он работает), так и на собственной сборке, основным вылетом которого был первый из моего прошлого поста (кстати, кто его затер?). Сейчас, при убийстве непися а то и просто при появлении кого-то в онлайне валится с руганью на death_manager.script (и да, я качал версию, где вылет с ножом пофикшен): FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp [error]Line : 73 [error]Description : <no expression> [error]Arguments : LUA error: ...- trilogy\shoc\gamedata\scripts\death_manager.script:138: attempt to index field '?' (a nil value) stack trace: Scheduler tried to update object mil_stalker_0002 Изменено 7 Августа 2016 пользователем Bak 1 aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 6 Августа 2016 (изменено) Не слишком полезно использовать локальные функции в цикле, у меня из-за этого вылетало по переполнению стека. Слышал такое. Но, что поделать, схему получше никто пока не предложил, а эта очень полезна, хоть и потенциально нестабильна. Ещё бы сделать схему "охотник на больших птиц" т.е. НПС vs вертолёт, НПС стреляют на упреждения из мощного оружия типа пулемёт, из ПМ и обрезов даже не пытаются, так же из ПЗРК стреляют только по вертолётам. Да, по вертолетам было бы здорово что-нибудь сварганить. Еще, мне кажется, что схема лечения раненных не учитывает некоторые осбенности\типы логики (надеюсь я не прав). Специально тестировал: у меня на левеле несколько вышек со снайперами, АИ сетка под ними слинкована с основной частью левела, а чтоб они оттуда не сбежали я поместил их в in рестрикторы. Вот только когда опасность минует, кто-то из них похоже хочет идти лечить раненных, только рестриктор не дает сдвинуться с места. И так "добровольные лекари" и стоят, как статуи... Придется, наверное, запихать всю эту банду в исключения для схемы. Кто-нибудь знает как модифицировать схему кидания гранат xrs_grenade.script, чтобы звуковые схемы там читались так же как и в модуле "собирательство". Просто когда создавали эту схему, звуков взять то по-ходу не откуда было, потому озвучка такая бедная. А сейчас, все есть в ЧН и ЗП, для каждого звукового профиля только переноси и радуйся. З.Ы. А свой вылет по death_manager.script я пофиксил. Там в одном из конфигов была ошибка, а я копал скрипты. Изменено 6 Августа 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 6 Августа 2016 (изменено) @Kondr48, это та, где еще Иглу добавили? Если она, то там есть спорные моменты и "особенности" (глюки и прочее). Та же Игла требует переработки, я уже молчу про ее жуткие текстуры. И она случаем не под 4-ый патч? Изменено 6 Августа 2016 пользователем Silver Raven 1 aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 7 Августа 2016 (изменено) Схема проверяет доступность вертекса раненого. И разве ин рестрикторы это не те, в которые нельзя заходить? Да, все верно. Я не совсем правильно написал. НПС (снайперы) не помещены в in рестрикторы, а путь ведущий вниз, с их вышек, перегорожен этим самым рестриктором, дабы последние не "леветировали" по лестнице. А так вещь полезная, НПС часто убивают себя и своих из РПГ, т.к. не встроена в движок схема проверки на безопасную стрельбу. Я кстати работаю над РПГ-7 с реальной баллистикой сейчас. В новом менеджере оружия есть такая фнкция А этот новый менеджер я так понимаю не входит в текущий пакет? Если так, когда ждать, хотя бы примерно? И можно ли показанный тобой кусок кода сейчас запихнуть в менеджер оружия, работать будет? Изменено 7 Августа 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 30 Августа 2016 , уверен будет, рано или поздно. Но лучше, сперва, с менеджером оружия разобраться. Там работы еще вагон и маленькая тележка. 1 aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 5 Сентября 2016 (изменено) @Bak, я перевожу свою сборку с устаревшего m_net_utils.script на m_netpk.script, соответственно нужно сменить и вызов функций из rx_utils.script, заместо старых для АИ пака: function get_weapon_data(sobj) return m_net_utils.get_weapon_data(sobj) end function set_weapon_data(t,sobj) m_net_utils.set_weapon_data(t,sobj) end function get_weapon_full_data(sobj) return m_net_utils.get_weapon_full_data(sobj) end function set_weapon_full_data(t,sobj) m_net_utils.set_weapon_full_data(t,sobj) end function get_weapon_w_gl_full_data(sobj) return m_net_utils.get_weapon_w_gl_full_data(sobj) end function set_weapon_w_gl_full_data(t,sobj) m_net_utils.set_weapon_w_gl_full_data(t,sobj) end Где искать соответствующие аналоги в новом скрипте? З.Ы. Надеюсь, официальный перевод на юзание m_netpk.script не за горами? Изменено 5 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 24 Сентября 2016 (изменено) @Bak, накопились вопросы по некотоым модулям: 1. У меня не корректно работает модуль помощи раненым (возможно, как и самолечения). НПС дает раненному аптечку, но тот не встает, схема зацикливается. Подозреваю, что это может быть связано с модулем "Медецина" от ColR_iT aka BozKurt. (у всех мед. препаратов, в конфигах, параметры лечения стоят по нулям. хп добавляется скриптом. а для лечения нпс со стороны гг используется заглушка, выдающая им фулл хп, при передачи аптечки) Где копать? 2. В том же модуле помощи раненым, у группировок (честно говоря, всех не тестировал - но у монолитовцев, это так) проигрывается один набор звуков (из профилей одиночек). Я добавил из ЗП уникальные звуки для тех группировок, где их не было. Почему они не юзаются? 3. Квестовый непись не хочет игнорить обыск трупов и как только появляется возможность, подбирает ствол и устраивает локальный апокалипсис, будучи игнорируемым пленником, не смотря на добавление в секцию [excluded_npcs] - в конфиге настроек модуля "Собирательство". В чем может быть причина? Изменено 24 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 25 Сентября 2016 (изменено) @Bak, 1. Для xr_wounded правка уже стояла, в rx_utils, добавил так (будет ли работать?): function eat_medkit() xr_wounded.Cwound_manager:eat_medkit() end 2. Если говорить о звуках раненного\помогающего раненному - они же читаются для каждой группировки отдельно? Я правильно понимаю назначение профилей в конфиге?: ; Выстрел из подствольника [gl_fire] path = fight\fire\fire_ idle = 20,40,80 ; Атака с ножом [knife_attack] path = fight\threat\threat_close_ idle = 6,18,50 delay_sound = 300,1500 ; Атака монстра с ножом [knife_attack_mutant] path = fight\threat\threat_distant_ idle = 5,20,50 avail_communities = stalker, dolg, freedom, military, monolith delay_sound = 1000 ;??? [monster_defend] path = states\panic_monster\panic_monster_ idle = 6,16,50 avail_communities = stalker, bandit, dolg, freedom, military ;??? [npc_hit] sound = sound_injuring idle = 3,8,80 ; Союзный огонь [friendly_fire] sound = sound_injuring_by_friend idle = 2,5,100 ;Союзная граната [friendly_grenade] sound = sound_friendly_grenade_alarm idle = 10,30,100 ; Враг получил урон [enemy_hit] sound = sound_enemy_critically_wounded idle = 5,10,100 ; Враг мертв [enemy_death] sound = sound_enemy_killed_or_wounded idle = 5,10,70 delay_sound = 400 ; Добивание раненых [kill_wounded] sound = sound_kill_wounded idle = 4,6,100 ; Обнаружение трупа [corpse_loot_begin] path = states\loot\loot_begin_ idle = 10,30,50 ; На трупе найден хороший лут [corpse_loot_good] path = states\loot\loot_good_ idle = 10,15,90 ; На трупе найден плохой лут [corpse_loot_bad] path = states\loot\loot_bad_ idle = 10,20,80 delay_sound = 100,700 ; Тяжелораненный просит о помощи [help_heavy] avail_communities = military, csky, stalker, bandit, dolg, freedom, killer ;-- А это нужно? path = help\wounded_heavy\help_ idle = 4,8,100 ; Помогаем тяжелораненному [wounded_medkit] path = help\wounded\medkit_ idle = 20,40,50 ; Тяжелораненый получил помощь [help_thanks] path = help\wounded_thanx\thanx_ idle = 20,20,80 delay_sound = 300,3000 3. Подбирает оружие с земли, если кто-то недалеко от него помер и возвращается на место. (может это оружейный менеджер?) Вообще, хорошо бы добавить временную блокировку для логики каких-либо схем из ai-additions. Что-то вроде: [logic] active = walker [walker] path_walk = walk path_look = look combat_ignore_cond = always corpse_detection = false wpn_mgr = false Допустим, пока нпс - пленный, блочим в логике подбор оружия и обыск трупов. Перешел на другую схему - отключаем запреты. Изменено 25 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 25 Сентября 2016 @Bak, а как понимать эти пресеты: ;??? -- Монстр защищается? о_О [monster_defend] path = states\panic_monster\panic_monster_ idle = 6,16,50 avail_communities = stalker, bandit, dolg, freedom, military ;??? -- Непись получил хит? [npc_hit] sound = sound_injuring idle = 3,8,80 Работает движковая схема сбора оружия. убери персонажа из excluded_npcs и запрещай через логику, чтобы решить эту проблему. Движковая, точно? Где отрубать? (написать no_move = true, что б не бегал?) Но, я точно помню, что до обновления ai additions этот непись сидел смирно под своей логикой (пленного) и не порывался подобрать ближайший доступный ствол. (спавнится он без оружия) aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение
Silver Raven 197 Опубликовано 25 Сентября 2016 (изменено) @Bak, Мы все ошибаемся... Пара затыков все же осталось: после того, как неписю отменяется логика пленного и он переходит в обычный walker (без запрета на обыск трупов) - начинает сходить с ума (подходит к лежащиму стволу, приседает, как паралитик и начинает дергаться на месте. если кинуть ему ствол, может начать целится в разные точки. выправляется, только если уйдет в офлайн и вернется обратно в онлайн.) После правки, схема помощи раненым почему-то осталась неработоспособной, неписи все так же валяются на земле, в окружении заботливых "докторов". Очень странно. Остается только вопрос по значению тех двух звуковых пресетов. З.Ы. В ai additions 2.0, по мимо правок, улучшений и нового (как я понял) оружейного менеджера, ты не планируешь разобраться с логикой вертолетов и всем, что с ней завязано? Там полный швах... Вроде, @НаноБот, порывался, но каковы результаты... Изменено 25 Сентября 2016 пользователем Silver Raven aka Stalker_AleX333 Мои проекты - ЯндексДиск | Я на Gamer-Mods.ru Поделиться этим сообщением Ссылка на сообщение