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

[CoP] Ковыряемся в файлах


Halford

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

Здравствуйте!

В travel_manager.script нашел подобную функцию:

function squad_action_description(actor, npc, dialog_id, phrase_id)

	local npc_squad = get_object_squad(npc)

	if npc_squad.current_action == nil or npc_squad.current_action.name == "stay_point" then
		return "dm_" .. "stalker" .."_doing_nothing_"..tostring(math.random(1,3))  --npc:character_community()
	end

	local target_id = npc_squad.assigned_target_id
--	if target_id == nil then
--		return "dm_" .. npc:character_community() .."_doing_nothing"
--	end

	local target_obj = alife():object(target_id)

	if target_obj == nil then

		abort("SIM TARGET NOT EXIST %s, action_name %s", tostring(target_id), tostring(npc_squad.current_action.name))
	end

	local target_clsid = target_obj:clsid()
	if target_clsid == clsid.script_actor then
		abort("Actor talking with squad, which chasing actor")
	elseif target_clsid == clsid.online_offline_group_s then
		return "dm_" .. "stalker" .."_chasing_squad_"..alife_character_community(target_obj) --npc:character_community()

	elseif target_clsid == clsid.smart_terrain then
		local smart_name = target_obj:name()
		local travel_class = get_travel_class()

		local desc = travel_class.smart_to_stringtables[smart_name]
		if desc == nil then
			abort("wrong smart name [%s] in travel_manager.ltx", tostring(smart_name))
		end
		return desc
	end
	abort("wrong target clsid [%s]", tostring(target_clsid))
end

 

Собстено меня заинтересовала строка:

return "dm_" .. "stalker" .."_chasing_squad_"..alife_character_community(target_obj) --npc:character_community()

 

Выдает нам ее НПС когда охотится з отрядом, например за бандитами. Игра обращается к функции "alife_character_community()" (_g.script) и должна вернуть значение "bandit" и выдать "dm_stalker_chasing_squad_bandit", однако игра не правильно определяет группировку отряда и возвращает всегда значение "monster" и на выходе всегда получается "dm_stalker_chasing_squad_monster"

function alife_character_community (obj)
	if IsStalker(obj, obj:clsid()) then
		return obj:community()
	end
	return "monster"
end

 

Находил в _g.script подобное:

function start_game_callback()
	aa = alife()

	squad_community_by_behaviour = {
		["stalker"]							= "stalker",
		["bandit"]							= "bandit",
		["dolg"]							= "dolg",
		["freedom"]							= "freedom",
		["army"]							= "army",
		["ecolog"]							= "ecolog",
		["killer"]							= "killer",
		["zombied"]							= "zombied",
		["monolith"]						= "monolith",
		["monster"]							= "monster",
		["monster_predatory_day"]			= "monster",
		["monster_predatory_night"]			= "monster",
		["monster_vegetarian"]				= "monster",
		["monster_zombied_day"]				= "monster",
		["monster_zombied_night"]			= "monster",
		["monster_special"]					= "monster"
	}
...

 

Вот как раз эти группировки отряда должна определять игра. Так вот вопрос: как заставить игру определить группировку преследуемого отряда? Пробовал вместо "alife_character_community(target_obj)" вставить это: "npc_squad:get_squad_community(target_obj)", и игра в таком случае определяет группировку НПС, с которым говорит игрок, а не группировку преследуемого отряда.

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


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

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