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

Скриптование


Svoboда

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

(изменено)

С новым годом!

Короче тут такой вопрос.Сделал функцию зажигания костра при приближении ГГ к ближайшему костру, но она работает только когда костер горит. То есть когда костер потухший, функция не срабатывает. Ставлю ее в функцию campfire_binder:update. Куда можно поставить мою функцию, чтобы она зажигала костер? 

if db.actor:position():distance_to(self.object:position()) <= 4 then
self.campfire:turn_on()
end
Изменено пользователем aleksn09

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


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

aleksn09, по идее, ты строки прописал в нужное место. Это ведь постоянное обновление. Что-то мне подсказывает, что нужно пробовать переписать зажигание, используя движковую функцию-проверку is_on(). Как-то так, что ли:

Так я тоже писал. Изначально у меня такая была функция: 

if db.actor:position():distance_to(self.object:position()) <= 4 and not self.campfire:is_on() and has_alife_info("has_fire") then
self.campfire:turn_on()
end

Потом решил сократить условия и приписать еще вывод сообщения в ПДА. Функция активируется только когда НПСы сами разжигают костер. Сообщение выводится и костер как бы зажигается. Вот даже скриншот имеется:

8_091NAuTcw.jpg

 

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

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


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

Поставил свою функцию в campfire_binder:net_spawn, ближайший костер загорелся, но это не то. Надо ставить функцию на апдейт, но как поставить, если апдейт костра работает только когда НПСы зажигают костер. Есть какие идеи или предложения?

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

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


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

@Viнt@rь, то есть допустим поставить функцию из xr_kamp, которая ниже приведена, на апдейт актера? Только сделать чтобы проверял наличие ГГ возле костра а не НПС.

	local campfire = bind_campfire.campfire_table[self.kamp_name.."_campfire"]
	if self.population > 0 and campfire ~= nil and not campfire:is_on() then
		campfire:turn_on()
	end
Изменено пользователем aleksn09

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


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

Приветствую! У меня тут такой вопрос. Как можно сделать условие, чтобы при наличии артефакта в инвентаре, повышался уровень радиации у ГГ, а когда убираешь артефакт в ячейку для артефактов, радиация переставала повышаться?

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

 

function artefact_radiation() 
 
if time_global() - flag_timer < 10000 then 
return 
end 
if db.actor.radiation <= 0.5 then 
flag_timer = time_global()
if db.actor:object("af_oasis_heart") and db.actor:item_in_slot(11) ~= "af_oasis_heart" then 
local actor = db.actor
local h = hit()
h.draftsman = actor
h.power = 0.3
h.type = hit.radiation
actor:hit(h) 
end
end 
end

 

 

 

db.actor:item_in_slot(11) ~= "af_oasis_heart", как минимум... dc
 

В том и прикол, что даже когда артефакт в ячейке, функция работает. Даже сделал функцию вывода сообщения, если артефакт в слоте, так сообщение не выводится.

P.S. Надеюсь пост ниже не относится ко мне? Я всего-то задал вопрос, а отвечать или нет, ваше дело. Просто реально уже все перепробовал.

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

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


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

1. Я проверяю есть ли арт вообще и нету ли арта в 11 слоте. Тоесть когда я арт в контейнер положу, то редиация уже не будет повышаться. С :section() уже проверял, то же самое.

4. Переменной flag_timer я еще вне функции прописал 0.

Со вторым и третьим спасибо за подсказку, буду разбираться.

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


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

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

AMK-Team.ru

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