mirror of
https://gitlab.com/YuukiPS/GC-Resources.git
synced 2025-04-28 09:05:26 +00:00
78 lines
2.7 KiB
Lua
78 lines
2.7 KiB
Lua
--[[
|
|
defs = {
|
|
RegionID = 575001
|
|
}
|
|
--]]
|
|
-----------------------------------------
|
|
local tempTrigger = {
|
|
{ config_id = 2330000, name = "LEAVE_REGION_Arena", event = EventType.EVENT_LEAVE_REGION, source = "1",
|
|
condition = "", action = "action_LEAVE_REGION_Arena", trigger_count = 0},
|
|
{ config_id = 2330001, name = "ENTER_REGION_Arena", event = EventType.EVENT_ENTER_REGION, source = "1",
|
|
condition = "", action = "action_ENTER_REGION_Arena", trigger_count = 0},
|
|
{ config_id = 2330002, name = "GROUP_WILL_UNLOAD", event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "",
|
|
condition = "", action = "action_GROUP_WILL_UNLOAD", trigger_count = 0 }
|
|
}
|
|
|
|
function action_GROUP_WILL_UNLOAD(context, evt)
|
|
ScriptLib.PrintContextLog(context, "action_Group_Will_Unload")
|
|
ScriptLib.RemoveEntityByConfigId(context, 0, EntityType.REGION, defs.RegionID)
|
|
return 0
|
|
end
|
|
|
|
function action_LEAVE_REGION_Arena(context, evt)
|
|
ScriptLib.PrintContextLog(context, "action_LEAVE_REGION_Arena")
|
|
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, {1})
|
|
ScriptLib.ClearPlayerEyePoint(context, defs.RegionID)
|
|
return 0
|
|
end
|
|
|
|
-- 触发操作
|
|
function action_ENTER_REGION_Arena(context, evt)
|
|
ScriptLib.PrintContextLog(context, "@@ ENTER_REGION_Arena")
|
|
TrySetPlayerEyePoint(context,regions[defs.RegionID],regions[defs.RegionID],1,{0})
|
|
return 0
|
|
end
|
|
|
|
--此方法在两个region坐标接近时调用比较合适
|
|
function TrySetPlayerEyePoint(context, small_region, big_region, opt_type, vision_type_list)
|
|
--opt_type为1表示需要setVisionType
|
|
local eid = ScriptLib.GetAvatarEntityIdByUid(context, context.uid)
|
|
local player_pos = ScriptLib.GetPosByEntityId(context, eid)
|
|
--在小圈内要处理入圈
|
|
if Is_In_Region(player_pos, small_region) == true then
|
|
ScriptLib.SetPlayerEyePoint(context, small_region.config_id, big_region.config_id)
|
|
if opt_type == 1 then
|
|
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, vision_type_list)
|
|
end
|
|
end
|
|
end
|
|
|
|
function Is_In_Region(pos1, region)
|
|
local X = pos1.x - region.pos.x
|
|
local Y = pos1.y - region.pos.y
|
|
local Z = pos1.z - region.pos.z
|
|
if region.shape == RegionShape.SPHERE then
|
|
if math.sqrt(X*X+Y*Y+Z*Z) <= region.radius then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
elseif region.shape == RegionShape.CUBIC then
|
|
if math.abs(X) > region.size.x/2 or math.abs(Y) > region.size.y/2 or math.abs(Z) > region.size.z/2 then
|
|
return false
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
|
|
function LF_Initialize_Level()
|
|
for k,v in pairs(tempTrigger) do
|
|
table.insert(triggers, v)
|
|
table.insert(suites[init_config.suite].triggers, v.name)
|
|
end
|
|
return 0
|
|
end
|
|
|
|
LF_Initialize_Level()
|