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

AI additions


Bak

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

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


Ссылка на сообщение
(изменено)

@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

А вызвать данную ошибку целенаправленно довольно сложно. Она очень рандомна. Тем не менее, попробую, дабы было больше деталей. Ну или хотя бы полный лог.

Изменено пользователем Silver Raven

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


Ссылка на сообщение
(изменено)

@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

 

 

Изменено пользователем Bak
  • Полезно 1

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


Ссылка на сообщение
(изменено)
Не слишком полезно использовать локальные функции в цикле, у меня из-за этого вылетало по переполнению стека.

Слышал такое. Но, что поделать, схему получше никто пока не предложил, а эта очень полезна, хоть и потенциально нестабильна. 

 

Ещё бы сделать схему "охотник на больших птиц" т.е. НПС vs вертолёт, НПС стреляют на упреждения из мощного оружия типа пулемёт, из ПМ и обрезов даже не пытаются, так же из ПЗРК стреляют только по вертолётам.

Да, по вертолетам было бы здорово что-нибудь сварганить.

 

Еще, мне кажется, что схема лечения раненных не учитывает некоторые осбенности\типы логики (надеюсь я не прав). Специально тестировал: у меня на левеле несколько вышек со снайперами, АИ сетка под ними слинкована с основной частью левела, а чтоб они оттуда не сбежали я поместил их в in рестрикторы. Вот только когда опасность минует, кто-то из них похоже хочет идти лечить раненных, только рестриктор не дает сдвинуться с места. И так "добровольные лекари" и стоят, как статуи... Придется, наверное, запихать всю эту банду в исключения для схемы.

 

Кто-нибудь знает как модифицировать схему кидания гранат xrs_grenade.script, чтобы звуковые схемы там читались так же как и в модуле "собирательство". Просто когда создавали эту схему, звуков взять то по-ходу не откуда было, потому озвучка такая бедная. А сейчас, все есть в ЧН и ЗП, для каждого звукового профиля только переноси и радуйся.

 

З.Ы. А свой вылет по death_manager.script я пофиксил. Там в одном из конфигов была ошибка, а я копал скрипты.

Изменено пользователем Silver Raven

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


Ссылка на сообщение
(изменено)

@Kondr48, это та, где еще Иглу добавили? Если она, то там есть спорные моменты и "особенности" (глюки и прочее). Та же Игла требует переработки, я уже молчу про ее жуткие текстуры. И она случаем не под 4-ый патч? 

Изменено пользователем Silver Raven
  • Полезно 1

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


Ссылка на сообщение
(изменено)
Схема проверяет доступность вертекса раненого. И разве ин рестрикторы это не те, в которые нельзя заходить?

Да, все верно. Я не совсем правильно написал. НПС (снайперы) не помещены в in рестрикторы, а путь ведущий вниз, с их вышек, перегорожен этим самым рестриктором, дабы последние не "леветировали" по лестнице. 

 

А так вещь полезная, НПС часто убивают себя и своих из РПГ, т.к. не встроена в движок схема проверки на безопасную стрельбу. Я кстати работаю над РПГ-7 с реальной баллистикой сейчас.

 

В новом менеджере оружия есть такая фнкция

А этот новый менеджер я так понимаю не входит в текущий пакет? Если так, когда ждать, хотя бы примерно? И можно ли показанный тобой кусок кода сейчас запихнуть в менеджер оружия, работать будет?

Изменено пользователем Silver Raven

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


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

, уверен будет, рано или поздно. Но лучше, сперва, с менеджером оружия разобраться. Там работы еще вагон и маленькая тележка.

  • Согласен 1

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


Ссылка на сообщение
(изменено)

@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 не за горами?

Изменено пользователем Silver Raven

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


Ссылка на сообщение
(изменено)

@Bak, накопились вопросы по некотоым модулям:

 

1. У меня не корректно работает модуль помощи раненым (возможно, как и самолечения). НПС дает раненному аптечку, но тот не встает, схема зацикливается. Подозреваю, что это может быть связано с модулем "Медецина" от ColR_iT aka BozKurt. (у всех мед. препаратов, в конфигах, параметры лечения стоят по нулям. хп добавляется скриптом. а для лечения нпс со стороны гг используется заглушка, выдающая им фулл хп, при передачи аптечки) Где копать?

 

2. В том же модуле помощи раненым, у группировок (честно говоря, всех не тестировал - но у монолитовцев, это так) проигрывается один набор звуков (из профилей одиночек). Я добавил из ЗП уникальные звуки для тех группировок, где их не было. Почему они не юзаются?

 

3. Квестовый непись не хочет игнорить обыск трупов и как только появляется возможность, подбирает ствол и устраивает локальный апокалипсис, будучи игнорируемым пленником, не смотря на добавление в секцию [excluded_npcs] - в конфиге настроек модуля "Собирательство". В чем может быть причина?

Изменено пользователем Silver Raven

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


Ссылка на сообщение
(изменено)

@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

Допустим, пока нпс - пленный, блочим в логике подбор оружия и обыск трупов. Перешел на другую схему - отключаем запреты.

Изменено пользователем Silver Raven

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


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

@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

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


Ссылка на сообщение
(изменено)

@Bak, Мы все ошибаемся...

Пара затыков все же осталось: после того, как неписю отменяется логика пленного и он переходит в обычный walker (без запрета на обыск трупов) - начинает сходить с ума (подходит к лежащиму стволу, приседает, как паралитик и начинает дергаться на месте. если кинуть ему ствол, может начать целится в разные точки. выправляется, только если уйдет в офлайн и вернется обратно в онлайн.)

После правки, схема помощи раненым почему-то осталась неработоспособной, неписи все так же валяются на земле, в окружении заботливых "докторов". Очень странно.

 

Остается только вопрос по значению тех двух звуковых пресетов. 

 

З.Ы. В ai additions 2.0, по мимо правок, улучшений и нового (как я понял) оружейного менеджера, ты не планируешь разобраться с логикой вертолетов и всем, что с ней завязано? Там полный швах... Вроде, @НаноБот, порывался, но каковы результаты...

Изменено пользователем Silver Raven

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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


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

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

AMK-Team.ru

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