mirror of
https://gitlab.com/YuukiPS/GC-Resources.git
synced 2025-04-29 09:35:48 +00:00
359 lines
12 KiB
Lua
359 lines
12 KiB
Lua
-- 基础信息
|
||
local base_info = {
|
||
group_id = 111101106
|
||
}
|
||
|
||
-- Trigger变量
|
||
local defs = {
|
||
groupID = 111101106,
|
||
rewardChestID = 106004,
|
||
isLoop = 0,
|
||
maxCount = 3,
|
||
minCount = 3,
|
||
gadget_1 = 106001,
|
||
gadget_2 = 106002,
|
||
gadget_3 = 106003,
|
||
gadget_4 = 0,
|
||
gadget_5 = 0
|
||
}
|
||
|
||
-- DEFS_MISCS
|
||
minCount = 3
|
||
gadgetInfo = { {index = 1, name = "gadget_1"},
|
||
{index = 2, name = "gadget_2"},
|
||
{index = 3, name = "gadget_3"},
|
||
{index = 4, name = "gadget_4"},
|
||
{index = 5, name = "gadget_5"}}
|
||
|
||
--================================================================
|
||
--
|
||
-- 配置
|
||
--
|
||
--================================================================
|
||
|
||
-- 怪物
|
||
monsters = {
|
||
}
|
||
|
||
-- NPC
|
||
npcs = {
|
||
}
|
||
|
||
-- 装置
|
||
gadgets = {
|
||
-- 1号石头
|
||
{ config_id = 106001, gadget_id = 70950055, pos = { x = 2635.260, y = 229.527, z = -1327.835 }, rot = { x = 0.000, y = 189.505, z = 0.000 }, level = 1, state = GadgetState.Action03, persistent = true },
|
||
-- 2号石头
|
||
{ config_id = 106002, gadget_id = 70950055, pos = { x = 2634.997, y = 229.516, z = -1330.366 }, rot = { x = 0.000, y = 190.825, z = 0.000 }, level = 1, state = GadgetState.Action02, persistent = true },
|
||
-- 3号石头
|
||
{ config_id = 106003, gadget_id = 70950055, pos = { x = 2634.601, y = 229.662, z = -1332.832 }, rot = { x = 0.000, y = 190.825, z = 0.000 }, level = 1, state = GadgetState.Action01, persistent = true },
|
||
{ config_id = 106007, gadget_id = 70210004, pos = { x = 2631.688, y = 228.163, z = -1329.863 }, rot = { x = 0.000, y = 269.823, z = 0.000 }, level = 1, chest_drop_id = 1000100, drop_count = 1, isOneoff = true, persistent = true }
|
||
}
|
||
|
||
-- 区域
|
||
regions = {
|
||
}
|
||
|
||
-- 触发器
|
||
triggers = {
|
||
{ config_id = 1106004, name = "GADGET_STATE_CHANGE_106004", event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "condition_EVENT_GADGET_STATE_CHANGE_106004", action = "action_EVENT_GADGET_STATE_CHANGE_106004", trigger_count = 0 },
|
||
{ config_id = 1106014, name = "GADGET_STATE_CHANGE_106014", event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "condition_EVENT_GADGET_STATE_CHANGE_106014", action = "action_EVENT_GADGET_STATE_CHANGE_106014", trigger_count = 0 },
|
||
{ config_id = 1106015, name = "GADGET_STATE_CHANGE_106015", event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "condition_EVENT_GADGET_STATE_CHANGE_106015", action = "action_EVENT_GADGET_STATE_CHANGE_106015", trigger_count = 0 }
|
||
}
|
||
|
||
-- 变量
|
||
variables = {
|
||
{ config_id = 1, name = "isFinished", value = 0, no_refresh = true },
|
||
{ config_id = 2, name = "midChecker", value = 0, no_refresh = true },
|
||
{ config_id = 3, name = "RightChecker", value = 0, no_refresh = true },
|
||
{ config_id = 4, name = "LeftChecker", value = 0, no_refresh = true }
|
||
}
|
||
|
||
--================================================================
|
||
--
|
||
-- 初始化配置
|
||
--
|
||
--================================================================
|
||
|
||
-- 初始化时创建
|
||
init_config = {
|
||
suite = 1,
|
||
end_suite = 2,
|
||
rand_suite = false
|
||
}
|
||
|
||
--================================================================
|
||
--
|
||
-- 小组配置
|
||
--
|
||
--================================================================
|
||
|
||
suites = {
|
||
{
|
||
-- suite_id = 1,
|
||
-- description = ,
|
||
monsters = { },
|
||
gadgets = { 106001, 106002, 106003 },
|
||
regions = { },
|
||
triggers = { "GADGET_STATE_CHANGE_106004", "GADGET_STATE_CHANGE_106014", "GADGET_STATE_CHANGE_106015" },
|
||
rand_weight = 100
|
||
},
|
||
{
|
||
-- suite_id = 2,
|
||
-- description = ,
|
||
monsters = { },
|
||
gadgets = { 106001, 106002, 106003, 106007 },
|
||
regions = { },
|
||
triggers = { },
|
||
rand_weight = 100,
|
||
ban_refresh = true
|
||
}
|
||
}
|
||
|
||
--================================================================
|
||
--
|
||
-- 触发器
|
||
--
|
||
--================================================================
|
||
|
||
-- 触发条件
|
||
function condition_EVENT_GADGET_STATE_CHANGE_106004(context, evt)
|
||
-- 判断变量"isFinished"为0
|
||
if ScriptLib.GetGroupVariableValue(context, "isFinished") ~= 0 then
|
||
return false
|
||
end
|
||
|
||
-- 判断变量"midChecker"为0
|
||
if ScriptLib.GetGroupVariableValue(context, "midChecker") ~= 0 then
|
||
return false
|
||
end
|
||
|
||
return true
|
||
end
|
||
|
||
-- 触发操作
|
||
function action_EVENT_GADGET_STATE_CHANGE_106004(context, evt)
|
||
--ScriptLib.PrintLog(evt.param2.."---".."GadgetStateChange Start")
|
||
--ScriptLib.PrintLog(evt.param2.."---".."GadgetStateChange isActive ~= 1")
|
||
--ScriptLib.CreateGadget(context, { config_id = 106008 })
|
||
local gadgetDefsName=""
|
||
local gadgetID = 0
|
||
local gadgetIndex = 0
|
||
local gadgetRightDefsName = ""
|
||
local gadgetRightIndex = 0
|
||
local gadgetLeftDefsName = ""
|
||
local gadgetLeftIndex = 0
|
||
|
||
gadgetID = evt.param2
|
||
--检测是哪个Gadget被触发了,并且获取对应的defs中定义的名称
|
||
for k,v in pairs(defs) do
|
||
if v == gadgetID then
|
||
gadgetDefsName = k
|
||
end
|
||
end
|
||
|
||
|
||
--根据触发的Gadget计算周围的联动Gadget,并且获取他们的Index
|
||
for k,v in pairs (gadgetInfo) do
|
||
if v.name == gadgetDefsName then
|
||
gadgetIndex = v.index
|
||
|
||
if defs.isLoop == 0 then
|
||
if v.index <= 1 then
|
||
gadgetLeftIndex = -1
|
||
gadgetRightIndex = gadgetIndex + 1
|
||
elseif v.index >= defs.maxCount then
|
||
gadgetRightIndex = -1
|
||
gadgetLeftIndex = gadgetIndex - 1
|
||
else
|
||
gadgetLeftIndex = gadgetIndex - 1
|
||
gadgetRightIndex = gadgetIndex + 1
|
||
end
|
||
elseif defs.isLoop == 1 then
|
||
if v.index <= 1 then
|
||
gadgetLeftIndex = defs.maxCount
|
||
gadgetRightIndex = gadgetIndex + 1
|
||
elseif v.index >= defs.maxCount then
|
||
gadgetRightIndex = 1
|
||
gadgetLeftIndex = gadgetIndex - 1
|
||
else
|
||
gadgetLeftIndex = gadgetIndex - 1
|
||
gadgetRightIndex = gadgetIndex + 1
|
||
end
|
||
end
|
||
break
|
||
end
|
||
end
|
||
|
||
--判断index是否超界,如果超界则设置对应的ID为0
|
||
if gadgetRightIndex ~= -1 then
|
||
gadgetRightDefsName = gadgetInfo[gadgetRightIndex].name
|
||
else
|
||
gadgetRightDefsName = nil
|
||
end
|
||
|
||
|
||
if gadgetLeftIndex ~= -1 then
|
||
gadgetLeftDefsName = gadgetInfo[gadgetLeftIndex].name
|
||
else
|
||
gadgetLeftDefsName = nil
|
||
end
|
||
|
||
|
||
|
||
|
||
ScriptLib.SetGroupVariableValue(context, "midChecker", 1)
|
||
--ScriptLib.PrintLog(evt.param2.."---".."GadgetStateChange Ready to change negiborhold")
|
||
--ScriptLib.CreateGadget(context, { config_id = 106009 })
|
||
--设置相连的右边物件状态
|
||
if gadgetRightDefsName ~= nil and ScriptLib.GetGroupVariableValue(context,"isFinished") == 0 then
|
||
ScriptLib.SetGroupVariableValue(context, "RightChecker", 1)
|
||
|
||
if GadgetState.Default == ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetRightDefsName]) then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[gadgetRightDefsName], GadgetState.Action01)
|
||
elseif GadgetState.Action01 == ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetRightDefsName]) then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[gadgetRightDefsName], GadgetState.Action02)
|
||
elseif GadgetState.Action02 == ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetRightDefsName]) then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[gadgetRightDefsName], GadgetState.Action03)
|
||
elseif GadgetState.Action03 == ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetRightDefsName]) then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[gadgetRightDefsName], GadgetState.Action01)
|
||
end
|
||
end
|
||
|
||
--设置相连的左边物件状态
|
||
if gadgetLeftDefsName ~= nil and ScriptLib.GetGroupVariableValue(context,"isFinished") == 0 then
|
||
ScriptLib.SetGroupVariableValue(context, "LeftChecker", 1)
|
||
if GadgetState.Default == ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetLeftDefsName]) then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[gadgetLeftDefsName], GadgetState.Action01)
|
||
elseif GadgetState.Action01 == ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetLeftDefsName]) then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[gadgetLeftDefsName], GadgetState.Action02)
|
||
elseif GadgetState.Action02 == ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetLeftDefsName]) then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[gadgetLeftDefsName], GadgetState.Action03)
|
||
elseif GadgetState.Action03 == ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetLeftDefsName]) then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[gadgetLeftDefsName], GadgetState.Action01)
|
||
end
|
||
end
|
||
|
||
|
||
--ScriptLib.PrintLog(evt.param2.."---".."GadgetStateChange check allEqual")
|
||
--ScriptLib.CreateGadget(context, { config_id = 106010 })
|
||
|
||
|
||
--ScriptLib.CreateGadget(context, { config_id = 106011 })
|
||
--ScriptLib.SetGroupVariableValue(context, "isActive", 0)
|
||
--ScriptLib.CreateGroupTimerEvent(context, 111101106, "isActiveTimer", 1)
|
||
--ScriptLib.PrintLog(evt.param2.."---".."GadgetStateChange Set isActive = 0")
|
||
--ScriptLib.CreateGadget(context, { config_id = 106012 })
|
||
return 0
|
||
end
|
||
|
||
-- 触发条件
|
||
function condition_EVENT_GADGET_STATE_CHANGE_106014(context, evt)
|
||
-- 判断变量"RightChecker"为1
|
||
if ScriptLib.GetGroupVariableValue(context, "RightChecker") ~= 1 then
|
||
return false
|
||
end
|
||
|
||
-- 判断变量"isFinished"为0
|
||
if ScriptLib.GetGroupVariableValue(context, "isFinished") ~= 0 then
|
||
return false
|
||
end
|
||
|
||
return true
|
||
end
|
||
|
||
-- 触发操作
|
||
function action_EVENT_GADGET_STATE_CHANGE_106014(context, evt)
|
||
--检测玩法是否完成
|
||
local allEqual = 1
|
||
|
||
for i=1,defs.maxCount do
|
||
if ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetInfo[i].name]) ~= evt.param1 then
|
||
allEqual = 0
|
||
break
|
||
end
|
||
end
|
||
|
||
|
||
if allEqual == 1 and ScriptLib.GetGroupVariableValue(context,"isFinished") ~= 1 then
|
||
ScriptLib.SetGroupVariableValue(context, "isFinished", 1)
|
||
ScriptLib.SetGroupVariableValue(context, "midChecker", 2)
|
||
ScriptLib.SetGroupVariableValue(context, "RightChecker", 2)
|
||
ScriptLib.SetGroupVariableValue(context, "LeftChecker", 2)
|
||
|
||
--ScriptLib.AddExtraGroupSuite(context, defs.groupID, 2)
|
||
for k,v in pairs(gadgetInfo) do
|
||
if defs[v.name] ~=0 then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[v], GadgetState.GearStart)
|
||
end
|
||
end
|
||
|
||
ScriptLib.GoToGroupSuite(context, defs.groupID, 2)
|
||
|
||
|
||
return 0
|
||
end
|
||
---如果玩法没有完成
|
||
ScriptLib.SetGroupVariableValue(context, "RightChecker", 0)
|
||
|
||
if ScriptLib.GetGroupVariableValue(context,"RightChecker") == 0 and ScriptLib.GetGroupVariableValue(context,"LeftChecker") == 0 then
|
||
ScriptLib.SetGroupVariableValue(context, "midChecker", 0)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
-- 触发条件
|
||
function condition_EVENT_GADGET_STATE_CHANGE_106015(context, evt)
|
||
-- 判断变量"LeftChecker"为1
|
||
if ScriptLib.GetGroupVariableValue(context, "LeftChecker") ~= 1 then
|
||
return false
|
||
end
|
||
|
||
-- 判断变量"isFinished"为0
|
||
if ScriptLib.GetGroupVariableValue(context, "isFinished") ~= 0 then
|
||
return false
|
||
end
|
||
|
||
return true
|
||
end
|
||
|
||
-- 触发操作
|
||
function action_EVENT_GADGET_STATE_CHANGE_106015(context, evt)
|
||
--检测玩法是否完成
|
||
local allEqual = 1
|
||
|
||
for i=1,defs.maxCount do
|
||
if ScriptLib.GetGadgetStateByConfigId(context, defs.groupID, defs[gadgetInfo[i].name]) ~= evt.param1 then
|
||
allEqual = 0
|
||
break
|
||
end
|
||
end
|
||
|
||
|
||
if allEqual == 1 and ScriptLib.GetGroupVariableValue(context,"isFinished") ~= 1 then
|
||
ScriptLib.SetGroupVariableValue(context, "isFinished", 1)
|
||
ScriptLib.SetGroupVariableValue(context, "midChecker", 2)
|
||
ScriptLib.SetGroupVariableValue(context, "RightChecker", 2)
|
||
ScriptLib.SetGroupVariableValue(context, "LeftChecker", 2)
|
||
--ScriptLib.AddExtraGroupSuite(context, defs.groupID, 2)
|
||
|
||
for k,v in pairs(gadgetInfo) do
|
||
if defs[v.name] ~=0 then
|
||
ScriptLib.SetGadgetStateByConfigId(context, defs[v], GadgetState.GearStart)
|
||
end
|
||
end
|
||
|
||
ScriptLib.GoToGroupSuite(context, defs.groupID, 2)
|
||
|
||
|
||
return 0
|
||
end
|
||
---如果玩法没有完成
|
||
ScriptLib.SetGroupVariableValue(context, "LeftChecker", 0)
|
||
|
||
if ScriptLib.GetGroupVariableValue(context,"RightChecker") == 0 and ScriptLib.GetGroupVariableValue(context,"LeftChecker") == 0 then
|
||
ScriptLib.SetGroupVariableValue(context, "midChecker", 0)
|
||
end
|
||
|
||
return 0
|
||
end |