mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-08 19:32:27 +08:00
108 lines
3.2 KiB
Go
108 lines
3.2 KiB
Go
--[[
|
|
磁力机关 黑盒
|
|
ServerUploadTool Save to [/root/env/data/lua/common/BlackBoxPlay]
|
|
]]--
|
|
local fundations={
|
|
[1]=defs.gadget_fundation01,
|
|
[2]=defs.gadget_fundation02,
|
|
[3]=defs.gadget_fundation03,
|
|
[4]=defs.gadget_fundation04,
|
|
[5]=defs.gadget_fundation05,
|
|
}
|
|
|
|
local hands={
|
|
[1]=defs.gadget_hand01,
|
|
[2]=defs.gadget_hand02,
|
|
[3]=defs.gadget_hand03,
|
|
[4]=defs.gadget_hand04,
|
|
[5]=defs.gadget_hand05,
|
|
}
|
|
|
|
|
|
|
|
local extraTriggers={
|
|
{ config_id = 8000001, name = "GROUP_LOAD", event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
|
|
{ config_id = 8000002, name = "TIME_AXIS", event = EventType.EVENT_TIME_AXIS_PASS, source = "checkSuccess", condition = "", action = "action_time_axis_pass", 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 = "successed", value = 0, no_refresh = true})
|
|
--初始化
|
|
end
|
|
|
|
function NormalizationAngles(input)
|
|
local output=input
|
|
return math.abs(180-(180-output)%360)
|
|
end
|
|
|
|
function action_group_load(context, evt)
|
|
if ScriptLib.GetGroupVariableValue(context, "successed")~=1 then
|
|
ScriptLib.InitTimeAxis(context, "checkSuccess", {1}, true)
|
|
return 0
|
|
end
|
|
ScriptLib.AddExtraGroupSuite(context, defs.group_ID, 2)
|
|
--ScriptLib.PrintContextLog(context, "挑战已经完成")
|
|
local pos={}
|
|
local rot={}
|
|
for i=1,5 do
|
|
if hands[i] ~= 0 then
|
|
ScriptLib.RemoveEntityByConfigId(context, defs.group_ID, EntityType.GADGET, hands[i])
|
|
for j=1,#gadgets do
|
|
if gadgets[j].config_id==hands[i] then
|
|
pos=gadgets[j].pos
|
|
end
|
|
if gadgets[j].config_id==fundations[i] then
|
|
rot=gadgets[j].rot
|
|
end
|
|
end
|
|
--ScriptLib.PrintContextLog(context, "位置"..pos.x.." "..pos.y.." "..pos.z.." "..rot.x.." "..rot.y.." "..rot.z)
|
|
ScriptLib.CreateGadgetByConfigIdByPos(context, hands[i], pos, rot)
|
|
ScriptLib.SetGadgetStateByConfigId(context, hands[i], 201)
|
|
ScriptLib.SetGadgetStateByConfigId(context, fundations[i], 201)
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
|
|
function action_time_axis_pass(context, evt)
|
|
local count=0
|
|
local y1=0
|
|
local y2=0
|
|
for i=1,5 do
|
|
if fundations[i]~=0 then
|
|
y1=ScriptLib.GetRotationByEntityId(context, ScriptLib.GetEntityIdByConfigId(context, fundations[i])).y
|
|
y2=ScriptLib.GetRotationByEntityId(context, ScriptLib.GetEntityIdByConfigId(context, hands[i])).y
|
|
if y1<0 or y1>360 or y2<0 or y2>360 then
|
|
return 0
|
|
end
|
|
end
|
|
if fundations[i]==0 then
|
|
count=count+1
|
|
elseif NormalizationAngles(y1-y2) <= defs.minDiscrapancy then
|
|
count=count+1
|
|
ScriptLib.SetGadgetStateByConfigId(context, fundations[i], 201)
|
|
else
|
|
ScriptLib.SetGadgetStateByConfigId(context, fundations[i], 0)
|
|
end
|
|
end
|
|
--ScriptLib.PrintContextLog(context, "count is "..count)
|
|
if count>=5 then
|
|
ScriptLib.AddExtraGroupSuite(context, defs.group_ID, 2)
|
|
for i=1,5 do
|
|
if hands[i] ~= 0 then
|
|
ScriptLib.SetGadgetStateByConfigId(context, hands[i], 201)
|
|
end
|
|
end
|
|
ScriptLib.PauseTimeAxis(context, "checkSuccess")
|
|
ScriptLib.SetGroupVariableValue(context, "successed", 1)
|
|
end
|
|
return 0
|
|
end
|
|
|
|
|
|
LF_Initialize_Group(triggers, suites) |