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

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


Svoboда

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

Делаю систему использования противогаза а-ля 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

 

 

Изменено пользователем Akella-96 aka SvD

AWRP : Re - Load 0.2 ©

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


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

@Malandrinus, спасибо, конечно, но я почти ни слова не понял  :crazy: . Можно, если не трудно, поправить мою функцию? Если что - можно в ЛС.

  • Нравится 1

AWRP : Re - Load 0.2 ©

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


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

@AndreySol, да, ты правильно понял. Мне нужно передавать состояние предыдущего противогаза - следующему при спавне.

@Artos, спасибо, учту. А что если вот таким макаром?

local obj = actor:object("helm_respirator") 
if obj ~= nil then 
   obj:set_condition(gas_cond) 
end 
Изменено пользователем ColR_iT

AWRP : Re - Load 0.2 ©

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


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

@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
Изменено пользователем Akella-96 aka SvD

AWRP : Re - Load 0.2 ©

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


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

@Artos, спасибо большое. А где можно прочитать про таймеры?
А то неудобно так, каждый раз кричать "На помощь!". Да и вообще, надо расширять познания  :)

AWRP : Re - Load 0.2 ©

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


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

Всем добра.
Возникла проблема со сном ГГ в ЗП.
При входе в зону сна вылезает "Спать (F)", нажимаю, а ничего не происходит. Вся проблема заключается в том, что я не знаю, где я "запортачил" код. Изменение sleep_manger.script на оригинальный ничего не дало. Помогите, если кто-то знает, с чем связан данный баг.

AWRP : Re - Load 0.2 ©

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


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

@Nazgool, у меня была похожая проблема с диалогами, когда я написал функцию, касающуюся юзания брони, ГГ не мог говорить, пока не нам нет брони. Здесь, видимо, похожая ситуация. Закосяченный сторонний код, который мешает выполнять функцию сна. Случайно нет никакой проги, которая поверяет правильное построение скриптов? Если есть, можно ссылку в студию?

AWRP : Re - Load 0.2 ©

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


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

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