Akella-96 aka SvD 35 Опубликовано 1 Ноября 2013 (изменено) Делаю систему использования противогаза а-ля Metro 2033. Застрял на моменте спавна противогаза. Даже если противогаз покоцали, при окончании срока действия фильтра, спавнится абсолютно целый противогаз. Подскажите, как можно запомнить состояние предыдущего противогаза, чтобы потом выставить его новому? Коллбэк на юзание фильтра : local antigas = ActorHasItem("helm_respirator_wo_filter") local gas_cond = antigas:condition() if antigas then awrp_cop.g_start_timer("del_antigas",0,0,15,gas_cond) awrp_cop.send_tip("Срок действия фильтра - 15 минут",nil,nil,5,"actor") SpawnItemInInv("helm_respirator") local se_obj = alife():object(antigas:id()) alife():release(se_obj,true) else awrp_cop.send_tip("У вас нет противогаза!",nil,nil,5,"actor") SpawnItemInInv("filtr") end И функция удаления противогаза с фильтром (дабы заспавнить противогаз без фильтра) function del_antigas(params) local antigas = ActorHasItem("helm_respirator") if antigas then local sobj = SpawnItemInInv("helm_respirator_wo_filter") level.client_spawn_manager():add( sobj.id, 0, function(id,obj) obj:set_condition( tonumber(params) ) end) local se_obj = alife():object(antigas:id()) alife():release(se_obj,true) awrp_cop.send_tip("Срок действия фильтра закончился.",nil,nil,5,"actor") if awrp_cop.has_g_timer("del_antigas") then awrp_cop.stop_g_timer("del_antigas") end end end Таймер -- cтарт таймера в игровом времени function g_start_timer(name,delay_d,delay_h,delay_m,action) local time=level.get_time_days()*60*24+level.get_time_hours()*60+level.get_time_minutes() --time in game minutes if delay_d==nil or delay_h==nil or delay_m==nil then return false end if action==nil then action="" end local a=1 while db.storage[db.actor:id()].pstor["gt"..a] do a=a+1 if a>100 then return false end end awrp.write_variable("gt"..a,name) awrp.write_variable("gt"..a.."d",time+delay_d*60*24+delay_h*60+delay_m) awrp.write_variable("gt"..a.."p",action) return true end Изменено 1 Ноября 2013 пользователем Akella-96 aka SvD AWRP : Re - Load 0.2 © Поделиться этим сообщением Ссылка на сообщение
Akella-96 aka SvD 35 Опубликовано 1 Ноября 2013 @Malandrinus, спасибо, конечно, но я почти ни слова не понял . Можно, если не трудно, поправить мою функцию? Если что - можно в ЛС. 1 AWRP : Re - Load 0.2 © Поделиться этим сообщением Ссылка на сообщение
Akella-96 aka SvD 35 Опубликовано 2 Ноября 2013 (изменено) @AndreySol, да, ты правильно понял. Мне нужно передавать состояние предыдущего противогаза - следующему при спавне. @Artos, спасибо, учту. А что если вот таким макаром? local obj = actor:object("helm_respirator") if obj ~= nil then obj:set_condition(gas_cond) end Изменено 2 Ноября 2013 пользователем ColR_iT AWRP : Re - Load 0.2 © Поделиться этим сообщением Ссылка на сообщение
Akella-96 aka SvD 35 Опубликовано 2 Ноября 2013 (изменено) @AndreySol, огромное спасибо. А в коллбэке на юзание фильтра как эту же плюшку реализовать? Вот сам коллбэк : local antigas = ActorHasItem("helm_respirator_wo_filter") local gas_cond = antigas:condition() if antigas then awrp_cop.g_start_timer("del_antigas",0,0,15,gas_cond) awrp_cop.send_tip("Срок действия фильтра - 15 минут",nil,nil,5,"actor") SpawnItemInInv("helm_respirator") local se_obj = alife():object(antigas:id()) alife():release(se_obj,true) else awrp_cop.send_tip("У вас нет противогаза!",nil,nil,5,"actor") SpawnItemInInv("filtr") end Изменено 2 Ноября 2013 пользователем Akella-96 aka SvD AWRP : Re - Load 0.2 © Поделиться этим сообщением Ссылка на сообщение
Akella-96 aka SvD 35 Опубликовано 2 Ноября 2013 @Artos, спасибо большое. А где можно прочитать про таймеры?А то неудобно так, каждый раз кричать "На помощь!". Да и вообще, надо расширять познания AWRP : Re - Load 0.2 © Поделиться этим сообщением Ссылка на сообщение
Akella-96 aka SvD 35 Опубликовано 13 Апреля 2014 Всем добра.Возникла проблема со сном ГГ в ЗП.При входе в зону сна вылезает "Спать (F)", нажимаю, а ничего не происходит. Вся проблема заключается в том, что я не знаю, где я "запортачил" код. Изменение sleep_manger.script на оригинальный ничего не дало. Помогите, если кто-то знает, с чем связан данный баг. AWRP : Re - Load 0.2 © Поделиться этим сообщением Ссылка на сообщение
Akella-96 aka SvD 35 Опубликовано 13 Апреля 2014 @Nazgool, у меня была похожая проблема с диалогами, когда я написал функцию, касающуюся юзания брони, ГГ не мог говорить, пока не нам нет брони. Здесь, видимо, похожая ситуация. Закосяченный сторонний код, который мешает выполнять функцию сна. Случайно нет никакой проги, которая поверяет правильное построение скриптов? Если есть, можно ссылку в студию? AWRP : Re - Load 0.2 © Поделиться этим сообщением Ссылка на сообщение