aleksn09 2 Опубликовано 5 Января 2014 (изменено) С новым годом! Короче тут такой вопрос.Сделал функцию зажигания костра при приближении ГГ к ближайшему костру, но она работает только когда костер горит. То есть когда костер потухший, функция не срабатывает. Ставлю ее в функцию campfire_binder:update. Куда можно поставить мою функцию, чтобы она зажигала костер? if db.actor:position():distance_to(self.object:position()) <= 4 then self.campfire:turn_on() end Изменено 5 Января 2014 пользователем aleksn09 Поделиться этим сообщением Ссылка на сообщение
aleksn09 2 Опубликовано 5 Января 2014 (изменено) 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 Потом решил сократить условия и приписать еще вывод сообщения в ПДА. Функция активируется только когда НПСы сами разжигают костер. Сообщение выводится и костер как бы зажигается. Вот даже скриншот имеется: Изменено 5 Января 2014 пользователем aleksn09 Поделиться этим сообщением Ссылка на сообщение
aleksn09 2 Опубликовано 6 Января 2014 (изменено) Поставил свою функцию в campfire_binder:net_spawn, ближайший костер загорелся, но это не то. Надо ставить функцию на апдейт, но как поставить, если апдейт костра работает только когда НПСы зажигают костер. Есть какие идеи или предложения? Изменено 6 Января 2014 пользователем aleksn09 Поделиться этим сообщением Ссылка на сообщение
aleksn09 2 Опубликовано 16 Января 2014 (изменено) @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 Изменено 16 Января 2014 пользователем aleksn09 Поделиться этим сообщением Ссылка на сообщение
aleksn09 2 Опубликовано 18 Июля 2014 (изменено) Приветствую! У меня тут такой вопрос. Как можно сделать условие, чтобы при наличии артефакта в инвентаре, повышался уровень радиации у ГГ, а когда убираешь артефакт в ячейку для артефактов, радиация переставала повышаться?А вот функция, которую я сделал. Но когда арт убираешь в ячейку для слотов, радиация все равно повышается. 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. Надеюсь пост ниже не относится ко мне? Я всего-то задал вопрос, а отвечать или нет, ваше дело. Просто реально уже все перепробовал. Изменено 18 Июля 2014 пользователем aleksn09 Поделиться этим сообщением Ссылка на сообщение
aleksn09 2 Опубликовано 20 Июля 2014 1. Я проверяю есть ли арт вообще и нету ли арта в 11 слоте. Тоесть когда я арт в контейнер положу, то редиация уже не будет повышаться. С :section() уже проверял, то же самое.4. Переменной flag_timer я еще вне функции прописал 0.Со вторым и третьим спасибо за подсказку, буду разбираться. Поделиться этим сообщением Ссылка на сообщение