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

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

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

 

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


class "CSchemeEval" (property_evaluator)

function CSchemeEval:__init(storage) super(nil, "CSchemeEval")
	self.st = storage;
end

function CSchemeEval:evaluate()
	return self.st.enabled;
end

class "CSchemeAction" (action_base);

function CSchemeAction:__init(storage) super(nil, "CSchemeAction")
	self.st = storage;
end

function CSchemeAction:initialize()
	action_base.initialize(self);
	self.object:set_dest_level_vertex_id(db.actor:level_vertex_id());
end

function CSchemeAction:execute()
	action_base.execute(self);
end

function CSchemeAction:finalize()
	action_base.finalize(self);
end

local ACTION_BASE = 5000;
local EVAL_BASE = 10000;

function addToBinder(npc, storage)
	local manager = npc:motivation_action_manager();

	manager:add_evaluator(EVAL_BASE + 1, CSchemeEval(storage));

	local action = CSchemeAction(storage);
	action:add_precondition(world_property(stalker_ids.property_alive, true));
	action:add_precondition(world_property(stalker_ids.property_danger, false));
	action:add_precondition(world_property(stalker_ids.property_enemy, false));
	action:add_precondition(world_property(stalker_ids.property_anomaly, false));
	action:add_precondition(world_property(EVAL_BASE + 1, true));
	action:add_effect(world_property(EVAL_BASE + 1, false));
	manager:add_action(ACTION_BASE + 1, action);

	action = manager:action(xr_actions_id.alife);
	action:add_precondition(world_property(EVAL_BASE + 1, false));
end

 

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


function bind(object)
	object:bind_object(CNpcBinder(object));
end

class "CNpcBinder" (object_binder)

function CNpcBinder:__init(object) super(object) 
end

function CNpcBinder:net_spawn(sobject)
	self.st = {
		enabled = true;
	};
	
	local manager = self.object:motivation_action_manager()
	manager:remove_evaluator	(stalker_ids.property_anomaly)
	manager:add_evaluator		(stalker_ids.property_anomaly, property_evaluator_const(false));
	
	scheme.addToBinder(self.object, self.st);
		return true;
end

function CNpcBinder:reinit() 
	self.state_mgr = state_mgr.bind_manager(self.object)
	self.move_mgr = move_mgr.move_mgr(self.object)
	self.move_mgr:initialize()
end

function CNpcBinder:update(delta)
	if self.state_mgr then
		if self.object:alive() then
			self.state_mgr:update()	
		else
			self.state_mgr = nil;
		end
	end	
end

 

 

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

Подскажите, как из консоли включить один погодный цикл или не из консоли, если из консоли невозможно

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

Как сделать чтобы ассортимент торговца не обновлялся при загрузке сейва или смене локации? 

 

Очень давно выкладывалась отдельная правка, но не могу найти.

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

@scala Поправь вероятность появления товара в конфигах торговцев в секциях [supplies_start], [supplies_after...].

Пример: 

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

[supplies_start]

;Название предмета = количество, вероятность появления

 stalker_outfit              = 3,  0.7 

 

Ссылка на комментарий
8 минут назад, TIGER_VLAD сказал:

Поправь вероятность

Нули поставить? Он тогда вообще не будет меняться? Как сделать чтобы он менялся по таймеру или переходу на другую локацию?

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

@scala 1 поставь.

В секции [supplies_after_квест_торговца] указано количество предметов и вероятность появления, после выполнения квеста торговца.

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

Мне нужно не после квеста. А вообще. Чтобы ассортимент менялся не после перезагрузки, а был привязан к какомуто другому условию. Была какаято старая правка очень давно.

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

Суть проблемы расписана здесь:

https://www.amk-team.ru/forum/topic/13078-prozektorskaya/?do=findComment&comment=899422

Стол заказов закрыт в связи с отправкой всех телепатов на переаттестацию.

Ссылка на комментарий
12 минут назад, Dennis_Chikin сказал:

Суть проблемы рас

Спасибо. Полезная инфа.

Можешь на правку ссылку кинуть?

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

[ТЧ] Подскажите как можно НПС перевести в онлайн, а как загрузится его логика включить "свободный полёт" (когда НПС сам выбирает где ему быть, в онлайне или нет). При условии, что НПС заспавнился за пределами радиуса алайфа?

 

"свободный полёт":

	local sim = alife()
	sim:set_switch_online  (id, true)
	sim:set_switch_offline (id, true)

 

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

Солянка-2016.У меня убили Киценко, главного кормильца и грозу собак.Также ушли 2 часовых и оставили блокпост назащищенным.Я хочу написать скрипт, чтобы они заспавнивались через некоторое время,если Киценко убит.Заспавнить непись несложно, но как узнать имя секции Киценко? Как узнать, жив ли данный НПС?

Прошел Солянку, иду в NLC

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

Как узнать, жив ли данный НПС?

if npc:alive() then -- жив

...

end

 

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

но как узнать имя секции Киценко?

В файлах надо искать, ищите "Криценко" ctrl+f

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

 

  <specific_character id="bar_zastava_commander_1" team_default = "1">
    <name>bar_kicenko_name</name>
    <icon>ui_npc_u_stalker_do_balon_1</icon>
    <map_icon x="0" y="0"></map_icon>
    <bio>sim_dolg_veteran_bio</bio>

    <class>bar_zastava_commander</class>

 

 

 

Кого спавнить? alife():create(name,p,lv,gv).Пробовал: bar_zastava_commander_1, bar_kicenko_name, bar_zastava_commander - вылет с "Can't open section".

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

Прошел Солянку, иду в NLC

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

Пробовал: bar_zastava_commander_1

Нет, это чарактер, а нужна секция, поищите "bar_zastava_commander_1" в spawn_sections.ltx и в распакованном олл.спавне

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

отсюда из шапки, универсал, должен жрать все, главное настрой правильно.

" - Народная солянка 2010 от 19.04 (с ключом -nofatal) "

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


Он не проверен на этой версии, не распаковывает.

Quote

 

FATAL ERROR!
Function: stkutils::scan::get_class
Line: 1919
Description: cannot find clsid for class buddy_psevdopup


 

 

Прошел Солянку, иду в NLC

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

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

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

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

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

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

Войти

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

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

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