Можно поступить так, как сделаны NPC на о. Весны. Т.е., если у нас пройден квест Языковой барьер, то NPC "говорят" с нами. В противном случае они пишут белиберду. Как бы они не понимают нас, а мы их.
Здесь все точно так же. Мы пишем скрипт в котором указываем желаемый интервал времени. Допустим с 14:00 по 18:00 часов.
Если мы поговорим, например, в 16:31, то скрипт вернет LUA_TRUE, а если в 13:15, то скрипт вернет LUA_FALSE.
В самом начале скрипта NPC ставим проверку:
InitTrigger() TriggerCondition(1, CheckTime) --Функция, которая проверяет время. TriggerAction(1, JumpPage, 1) --Если мы говорим в указанный интервал, то NPC "говорит" с нами. TriggerFailure(1, JumpPage, 2 ) --В противном случае мы попадаем на страницу, где нам говорят, что в данное время нельзя "поговорить" с NPC. Start(GetMultiTrigger(), 1)
Затем пишем простой код:
function CheckTime(character)
local i1 = 14
local i2 = 18
local hour = tonumber(os.date("%H"))
if hour >= i1 and hour <= i2 then
return LUA_TRUE
end
return LUA_FALSE
endЕсли нужно учитывать еще и минуты, то
function CheckTime(character)
local i1 = 1435 -- с 14:35
local i2 = 1837 -- по 18:37
local hour = tonumber(os.date("%H")) * 100
local minute = tonumber(os.date("%M"))
local check = hour + minute
if check >= i1 and check <= i2 then
return LUA_TRUE
end
return LUA_FALSE
endТакже можно передавать интервал через параметры, если у вас будет несколько таких NPC
function CheckTime(character, i1, i2)
local hour = tonumber(os.date("%H")) * 100
local minute = tonumber(os.date("%M"))
local check = hour + minute
if check >= i1 and check <= i2 then
return LUA_TRUE
end
return LUA_FALSE
endЗатем функцию следует добавить в список conditions в файле MissionSdk.lua
elseif conditions[i].func == CheckTime then
PRINT( "ConditionsTest: CheckTime")
local ret = CheckTime(character)
if ret ~= LUA_TRUE then
PRINT( "ConditionsTest: CheckTime = false" )
return LUA_FALSE
endС параметрами, соответственно
elseif conditions[i].func == CheckTime then
PRINT( "ConditionsTest: CheckTime")
local ret = CheckTime(character, conditions[i].p1, conditions[i].p2)
if ret ~= LUA_TRUE then
PRINT( "ConditionsTest: CheckTime = false" )
return LUA_FALSE
endКод NPC:
function pn_FuncName() InitTrigger() TriggerCondition(1, CheckTime) TriggerAction(1, JumpPage, 1) TriggerFailure(1, JumpPage, 2 ) Start(GetMultiTrigger(), 1) Talk( 1, "Я буду с тобой говорить! " ) Talk( 2, "Я НЕ буду с тобой говорить! " ) end
С параметрами:
function pn_FuncName() InitTrigger() TriggerCondition(1, CheckTime, 1400, 1800) TriggerAction(1, JumpPage, 1) TriggerFailure(1, JumpPage, 2 ) Start(GetMultiTrigger(), 1) Talk( 1, "Я буду с тобой говорить!" ) Talk( 2, "Я НЕ буду с тобой говорить!" ) end