mirror of
https://gitlab.com/YuukiPS/GC-Resources.git
synced 2025-04-28 09:05:26 +00:00
123 lines
5.0 KiB
Lua
123 lines
5.0 KiB
Lua
--- ServerUploadTool Save to [/root/env/data/lua/common/V2_8] ---
|
||
--[[======================================
|
||
|| filename: TimeReverser
|
||
|| owner: weiwei.sun
|
||
|| description: 2.8莫娜梦境 时间回溯
|
||
|| LogName: TimeReverser
|
||
|| Protection:
|
||
=======================================]]--
|
||
--[[
|
||
local defs = {
|
||
reverse_time = 10,--回溯倒计时,整数秒
|
||
}
|
||
]]
|
||
local extraTriggers={
|
||
{ config_id = 8000001, name = "TimeAxis_Pass", event = EventType.EVENT_TIME_AXIS_PASS, source = "reverse", condition = "", action = "action_TimeAxis_Pass", trigger_count = 0 },
|
||
{ config_id = 8000002, name = "Gadget_State_Change", event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_Gadget_State_Change", trigger_count = 0 },
|
||
{ config_id = 8000003, name = "Group_Load", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_Group_Load", trigger_count = 0 },
|
||
{ config_id = 8000004, name = "Revert_VariableChange", event = EventType.EVENT_VARIABLE_CHANGE, source = "revert", condition = "", action = "action_Revert_VariableChange", trigger_count = 0 },
|
||
{ config_id = 8000005, name = "Device_Gadget_State_Change", event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_Device_Gadget_State_Change", trigger_count = 0 },
|
||
}
|
||
function LF_Initialize_Group(triggers, suites)
|
||
for i=1,#extraTriggers do
|
||
table.insert(triggers, extraTriggers[i])
|
||
table.insert(suites[init_config.suite].triggers,extraTriggers[i].name)
|
||
end
|
||
--外部手动触发回溯
|
||
table.insert(variables,{ config_id = 50000001, name = "revert", value = 0, no_refresh = true })
|
||
--是否正处于待回溯状态
|
||
table.insert(variables,{ config_id = 50000002, name = "is_reverting", value = 0, no_refresh = true })
|
||
end
|
||
|
||
function action_Group_Load(context, evt)
|
||
if 1 == ScriptLib.GetGroupVariableValue(context, "is_reverting") then
|
||
for k, v in pairs(gadgets) do
|
||
if nil ~= v.mark_flag then
|
||
ScriptLib.SetGadgetStateByConfigId(context, v.config_id, 0)
|
||
end
|
||
end
|
||
end
|
||
ScriptLib.SetGroupVariableValue(context, "revert", 0)
|
||
ScriptLib.SetGroupVariableValue(context, "is_reverting", 0)
|
||
return 0
|
||
end
|
||
|
||
function action_Device_Gadget_State_Change(context, evt)
|
||
local gadget_id = ScriptLib.GetGadgetIdByEntityId(context, evt.source_eid)
|
||
if 70310390 ~= gadget_id then
|
||
return 0
|
||
end
|
||
if 0 ~= evt.param1 then
|
||
return 0
|
||
end
|
||
ScriptLib.SetGroupVariableValue(context, "is_reverting", 0)
|
||
return 0
|
||
end
|
||
|
||
function action_Gadget_State_Change(context, evt)
|
||
if nil == gadgets[evt.param2] then
|
||
ScriptLib.PrintContextLog(context, "## [TimeReverser] Gadget_State_Change get unknown param2.")
|
||
return 0
|
||
end
|
||
if nil == gadgets[evt.param2].mark_flag then
|
||
return 0
|
||
end
|
||
if 201 ~= evt.param1 then
|
||
return 0
|
||
end
|
||
--检查是否处于待回溯状态,若不处于,则尝试init回溯时间轴
|
||
if 1 ~= ScriptLib.GetGroupVariableValue(context, "is_reverting") then
|
||
LF_TryInitReverseTimeAxis(context)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_TimeAxis_Pass(context, evt)
|
||
for k, v in pairs(gadgets) do
|
||
if nil ~= v.mark_flag then
|
||
ScriptLib.SetGadgetStateByConfigId(context, v.config_id, 0)
|
||
end
|
||
--其中回溯机关 做回溯表现
|
||
if 70310390 == v.gadget_id then
|
||
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {v.config_id}, "GV_TimeReverse", 1)
|
||
end
|
||
end
|
||
ScriptLib.SetGroupVariableValue(context, "is_reverting", 0)
|
||
return 0
|
||
end
|
||
|
||
function action_Revert_VariableChange(context, evt)
|
||
if 1 == evt.param1 and 0 == evt.param2 then
|
||
ScriptLib.PrintContextLog(context, "## [TimeReverser] Revert_VariableChange.")
|
||
ScriptLib.SetGroupVariableValue(context, "revert", 0)
|
||
--检查是否处于待回溯状态,若不处于,则尝试init回溯时间轴
|
||
if 1 ~= ScriptLib.GetGroupVariableValue(context, "is_reverting") then
|
||
LF_TryInitReverseTimeAxis(context)
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
function LF_TryInitReverseTimeAxis(context)
|
||
local state = -1
|
||
--根据GadgetState判断是否要准备回溯
|
||
for k, v in pairs(gadgets) do
|
||
if 70310390 == v.gadget_id then
|
||
state = ScriptLib.GetGadgetStateByConfigId(context, base_info.group_id, v.config_id)
|
||
ScriptLib.PrintContextLog(context, "## [TimeReverser] LF_TryInitReverseTimeAxis. Operator gadget state@"..state)
|
||
break
|
||
end
|
||
end
|
||
--如果state为0 时间回溯不生效
|
||
if 0 == state then
|
||
ScriptLib.SetGroupVariableValue(context, "is_reverting", 0)
|
||
return 0
|
||
else
|
||
ScriptLib.InitTimeAxis(context, "reverse", {defs.reverse_time}, false)
|
||
ScriptLib.SetGroupVariableValue(context, "is_reverting", 1)
|
||
ScriptLib.PrintContextLog(context, "## [TimeReverser] LF_TryInitReverseTimeAxis. InitTimeAxis.")
|
||
return 0
|
||
end
|
||
return 0
|
||
end
|
||
LF_Initialize_Group(triggers, suites)
|