Files
hk4e/gdconf/game_data_config/lua/common/BlackBoxPlay/MagneticGear.lua
2022-11-30 00:00:20 +08:00

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)