mirror of
https://gitlab.com/YuukiPS/GC-Resources.git
synced 2025-04-28 09:05:26 +00:00
288 lines
11 KiB
Lua
288 lines
11 KiB
Lua
--[[local defs = {
|
||
gadget_operator = xxx,
|
||
group_id = xxx,
|
||
gadget_prison_list = {1,2,3,4}
|
||
}--]]
|
||
|
||
local play_param = {
|
||
prepare_time = 20,
|
||
duration = 240,
|
||
hunter_skill = {9013,9014,9017},
|
||
prey_skill = {9015,9016,9018}
|
||
}
|
||
|
||
local Tri = {
|
||
{ name = "gadget_create", config_id = 8000001, event = EventType.EVENT_GADGET_CREATE, source = "", condition = "", action = "action_gadget_create", trigger_count = 0},
|
||
{ name = "select_option", config_id = 8000002, event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option", trigger_count = 0 },
|
||
{ name = "challenge_success", config_id = 8000003, event = EventType.EVENT_CHALLENGE_SUCCESS, source = "", condition = "", action = "action_challenge_success", trigger_count = 0},
|
||
{ name = "challenge_fail", config_id = 8000004, event = EventType.EVENT_CHALLENGE_FAIL, source = "", condition = "", action = "action_challenge_fail", trigger_counter = 0},
|
||
{ name = "variable_change", config_id = 8000005, event = EventType.EVENT_VARIABLE_CHANGE, source = "catch_sum", condition = "", action = "action_variable_change", trigger_count = 0, tag = "9012"},
|
||
{ name = "time_axis_pass", config_id = 8000006, event = EventType.EVENT_TIME_AXIS_PASS, source = "", condition = "", action = "action_time_axis_pass", trigger_count = 0},
|
||
{ name = "enter_region", config_id = 8000007, event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_region", trigger_count = 0, forbid_guest = false}
|
||
}
|
||
|
||
local Var = {
|
||
{ config_id=50000001,name = "catch_sum", value = 0, no_refresh = false}
|
||
}
|
||
|
||
function Initialize()
|
||
for i,v in ipairs(Tri) do
|
||
table.insert(triggers, v)
|
||
table.insert(suites[1].triggers, v.name)
|
||
end
|
||
for i,v in ipairs(Var) do
|
||
table.insert(variables, v)
|
||
end
|
||
end
|
||
---------------------------------------
|
||
function action_gadget_create(context, evt)
|
||
if evt.param1 == defs.gadget_operator then
|
||
ScriptLib.PrintContextLog(context, "--------------- version 21 ---------------------")
|
||
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, evt.param1, {2902})
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_select_option(context, evt)
|
||
if evt.param1 == defs.gadget_operator and evt.param2 == 2902 then
|
||
ScriptLib.KillEntityByConfigId(context, { group_id = defs.group_id, config_id = defs.gadget_operator, entity_type = EntityType.GADGET })
|
||
LF_Start_Hide_And_Seek(context)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_challenge_success(context, evt)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : challenge_success -> "..evt.param1)
|
||
if evt.param1 == 9011 then
|
||
LF_Stop_Hide_And_Seek(context, 1)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_challenge_fail(context, evt)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : challenge_fail -> "..evt.param1)
|
||
if evt.param1 == 9011 then
|
||
LF_Stop_Hide_And_Seek(context, 2)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_variable_change(context, evt)
|
||
if evt.param1 == evt.param2 + 1 then
|
||
return 0
|
||
else
|
||
return -1
|
||
end
|
||
end
|
||
|
||
function action_time_axis_pass(context, evt)
|
||
if evt.source_name == "prepare" then
|
||
LF_Start_Comp_Challenge(context)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function action_enter_region(context, evt)
|
||
if evt.param1 ~= 471011 then
|
||
return -1
|
||
end
|
||
local uid_list = ScriptLib.GetSceneUidList(context)
|
||
if ScriptLib.GetRegionEntityCount(context, {region_eid = evt.source_eid, entity_type = EntityType.AVATAR}) == #uid_list then
|
||
if 1 == ScriptLib.GetGroupTempValue(context, "in_prepare", {}) then
|
||
LF_Prepare_Comp_Challenge(context)
|
||
ScriptLib.SetGroupTempValue(context, "in_prepare", 0, {})
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
---------------------------------------
|
||
function LF_Start_Hide_And_Seek(context)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : LF_Start_Hide_And_Seek")
|
||
ScriptLib.SetGroupTempValue(context, "in_prepare", 1, {})
|
||
LF_Assign_Character_Card(context)
|
||
end
|
||
|
||
function LF_Stop_Hide_And_Seek(context, value)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : LF_Stop_Hide_And_Seek")
|
||
local uid_list = ScriptLib.GetSceneUidList(context)
|
||
ScriptLib.SetPlayerGroupVisionType(context, {uid_list}, {1})
|
||
-------
|
||
if value == 1 then
|
||
--hunter胜利
|
||
ScriptLib.ShowTemplateReminder(context, 125, {0})
|
||
elseif value == 2 then
|
||
--prey胜利
|
||
ScriptLib.ShowTemplateReminder(context, 126, {0})
|
||
end
|
||
ScriptLib.CreateGadget(context, {config_id = defs.gadget_operator})
|
||
--玩法结束,恢复UI面板
|
||
ScriptLib.SetPlayerInteractOption(context, "HideAndSeek_Stop")
|
||
ScriptLib.RemoveExtraGroupSuite(context, 0,3)
|
||
end
|
||
|
||
function LF_Assign_Character_Card(context)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : LF_Assign_Character_Card")
|
||
--分配hunter人员
|
||
local uid_list = ScriptLib.GetSceneUidList(context)
|
||
math.randomseed(ScriptLib.GetServerTime(context))
|
||
local choice = math.random(#uid_list)
|
||
local hunter = uid_list[choice]
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : hunter_uid = "..hunter)
|
||
ScriptLib.ShowTemplateReminder(context, 124, {choice})
|
||
ScriptLib.SetGroupTempValue(context, "hunter", hunter, {})
|
||
for i,v in ipairs(defs.gadget_prison_list) do
|
||
if i == choice then
|
||
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, v, 0)
|
||
else
|
||
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, v, 201)
|
||
end
|
||
end
|
||
for i,v in ipairs(uid_list) do
|
||
for m,n in ipairs(points) do
|
||
if n.config_id == defs.trans_point_list[i] then
|
||
ScriptLib.TransPlayerToPos(context, {uid_list={v}, pos=n.pos, radius=0, rot=n.rot})
|
||
end
|
||
end
|
||
end
|
||
LF_Bake_Random_Scene(context)
|
||
end
|
||
|
||
function LF_Prepare_Comp_Challenge(context)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : LF_Prepare_Comp_Challenge")
|
||
local uid_list = ScriptLib.GetSceneUidList(context)
|
||
ScriptLib.SetPlayerGroupVisionType(context, {uid_list}, {0})
|
||
ScriptLib.CreateFatherChallenge(context, 9011, 9011, play_param.prepare_time, {success=10,fail=10})
|
||
ScriptLib.AttachChildChallenge(context,9011,9019,9019,{defs.group_id,10},{},{success=1,fail=1})
|
||
ScriptLib.InitTimeAxis(context, "prepare", {play_param.prepare_time - 1}, false)
|
||
ScriptLib.StartFatherChallenge(context, 9011)
|
||
--玩法准备阶段,禁用小地图,禁用普攻与技能
|
||
ScriptLib.SetPlayerInteractOption(context, "HideAndSeek_Prepare")
|
||
end
|
||
|
||
function LF_Start_Comp_Challenge(context)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : LF_Start_Comp_Challenge")
|
||
local uid_list = ScriptLib.GetSceneUidList(context)
|
||
ScriptLib.StopChallenge(context, 9019, 1)
|
||
ScriptLib.ModifyFatherChallengeProperty(context, 9011, FatherChallengeProperty.DURATION, play_param.duration)
|
||
ScriptLib.AttachChildChallenge(context, 9011, 9012, 9012, {0,3,9012,#uid_list-1}, {},{success=10,fail=1})
|
||
--解除hunter限制
|
||
for i,v in ipairs(defs.gadget_prison_list) do
|
||
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, v, 201)
|
||
end
|
||
local hunter = ScriptLib.GetGroupTempValue(context, "hunter", {})
|
||
ScriptLib.PrintContextLog(context, "## hunter_uid = "..hunter)
|
||
for i,v in ipairs(uid_list) do
|
||
ScriptLib.PrintContextLog(context, "## compare_uid = "..v)
|
||
if v == hunter then
|
||
for m,n in ipairs(play_param.hunter_skill) do
|
||
ScriptLib.AttachChildChallenge(context,9011,n*math.pow(10,10)+v,n,{defs.group_id,10},{v},{success=1,fail=1})
|
||
end
|
||
else
|
||
for m,n in ipairs(play_param.prey_skill) do
|
||
ScriptLib.AttachChildChallenge(context,9011,n*math.pow(10,10)+v,n,{defs.group_id,10},{v},{success=1,fail=1})
|
||
end
|
||
end
|
||
end
|
||
--玩法开始,禁用小地图,还原技能面板
|
||
ScriptLib.SetPlayerInteractOption(context, "HideAndSeek_Start")
|
||
end
|
||
|
||
function LF_Bake_Random_Scene(context)
|
||
if #suites >= 3 then
|
||
math.randomseed(ScriptLib.GetServerTime(context))
|
||
for i,v in ipairs(suites[3].gadgets) do
|
||
if math.random(100) > 50 then
|
||
ScriptLib.CreateGadget(context, {config_id = v})
|
||
end
|
||
end
|
||
end
|
||
end
|
||
---------------------------------------
|
||
local skill_info = {
|
||
[1] = { name = "HideSeek_Skill_DisguiseRevealing", key = "Disguise_Forbid", radius = 3 },
|
||
[2] = { name = "HideSeek_Skill_Hunting", key = "Play_Forbid", radius = 3 },
|
||
[3] = { name = "HideSeek_Skill_Struggle_Succ", key = "Disguise_Forbid"}
|
||
}
|
||
|
||
function HideSeek_Skill_DisguiseRevealing(context)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : HideSeek_Skill_DisguiseRevealing")
|
||
local skill_name = "HideSeek_Skill_DisguiseRevealing"
|
||
LF_Handle_Skill(context, skill_name)
|
||
return 0
|
||
end
|
||
|
||
function HideSeek_Skill_Hunting(context)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : HideSeek_Skill_Hunting")
|
||
local skill_name = "HideSeek_Skill_Hunting"
|
||
LF_Handle_Skill(context, skill_name)
|
||
return 0
|
||
end
|
||
|
||
---------------------------------------
|
||
function LF_Handle_Skill(context, skill_name)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : LF_Handle_Skill")
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : uid = "..context.uid)
|
||
local hunter_eid = ScriptLib.GetAvatarEntityIdByUid(context, context.uid)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : ueid ="..hunter_eid)
|
||
local hunter_pos = ScriptLib.GetPosByEntityId(context, hunter_eid)
|
||
local uid_list = ScriptLib.GetSceneUidList(context)
|
||
for i,v in ipairs(uid_list) do
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : get uid_list to "..v)
|
||
if v ~= context.uid then
|
||
local prey_eid = ScriptLib.GetAvatarEntityIdByUid(context, v)
|
||
local prey_pos = ScriptLib.GetPosByEntityId(context, prey_eid)
|
||
local info_ = LF_Get_Skill_Info(context, skill_name)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : radius = "..info_.radius.." | uid = "..v)
|
||
if LF_Get_Distance(context, hunter_pos, prey_pos) <= info_.radius then
|
||
local value_ = ScriptLib.GetTeamAbilityFloatValue(context, v, info_.key)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : value_ = "..value_)
|
||
if value_ == 1 then
|
||
ScriptLib.AddTeamEntityGlobalFloatValue(context, {v}, info_.key, -1)
|
||
end
|
||
LF_Handle_Progress(context, skill_name, v)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function LF_Get_Distance(context, pos1, pos2)
|
||
local X = pos1.x - pos2.x
|
||
local Y = pos1.y - pos2.y
|
||
local Z = pos1.z - pos2.z
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : X = "..X.." | Y = "..Y.." | Z = "..Z)
|
||
return math.sqrt(math.pow(X,2)+math.pow(Y,2)+math.pow(Z,2))
|
||
end
|
||
|
||
function LF_Get_Skill_Info(context, name)
|
||
for i,v in ipairs(skill_info) do
|
||
if v.name == name then
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : skill_name = "..name)
|
||
return v
|
||
end
|
||
end
|
||
return -1
|
||
end
|
||
|
||
function LF_Handle_Progress(context, skill_name, uid)
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : LF_Handle_Progress")
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : skill = "..skill_name.." | uid = "..uid)
|
||
if skill_name == "HideSeek_Skill_Hunting" then
|
||
if 0 == ScriptLib.GetTeamAbilityFloatValue(context, uid, "Play_Forbid") then
|
||
ScriptLib.AddTeamEntityGlobalFloatValue(context, {uid}, "Play_Forbid", 1)
|
||
ScriptLib.ChangeGroupVariableValue(context, "catch_sum", 1)
|
||
local uid_list = ScriptLib.GetSceneUidList(context)
|
||
local idx = 0
|
||
for i,v in ipairs(uid_list) do
|
||
if uid == v then
|
||
idx = i
|
||
break
|
||
end
|
||
end
|
||
ScriptLib.PrintContextLog(context, "## HS_Log : idx = "..idx)
|
||
ScriptLib.SetGroupGadgetStateByConfigId(context, defs.group_id, defs.gadget_prison_list[idx], 0)
|
||
ScriptLib.TransPlayerToPos(context, {uid_list={uid},pos=gadgets[defs.gadget_prison_list[idx]].pos,radius=0,rot=gadgets[defs.gadget_prison_list[idx]].rot})
|
||
end
|
||
end
|
||
end
|
||
----------------------------------------
|
||
Initialize() |