0
0
mirror of https://gitlab.com/YuukiPS/GC-Resources.git synced 2025-04-29 09:35:48 +00:00
2023-08-27 13:56:21 -04:00

289 lines
11 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

--[[defs = {
gadget_operator = xxx,
group_id = xxx,
gadget_prison_list = {1,2,3,4}
}--]]
play_param = {
prepare_time = 20,
duration = 240,
hunter_skill = {9013,9014,9017},
prey_skill = {9015,9016,9018}
}
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}
}
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
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")
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人员
uid_list = ScriptLib.GetSceneUidList(context)
math.randomseed(ScriptLib.GetServerTime(context))
choice = math.random(#uid_list)
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")
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")
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
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
---------------------------------------
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")
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")
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)
hunter_eid = ScriptLib.GetAvatarEntityIdByUid(context, context.uid)
ScriptLib.PrintContextLog(context, "## HS_Log : ueid ="..hunter_eid)
hunter_pos = ScriptLib.GetPosByEntityId(context, hunter_eid)
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
prey_eid = ScriptLib.GetAvatarEntityIdByUid(context, v)
prey_pos = ScriptLib.GetPosByEntityId(context, prey_eid)
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
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)
X = pos1.x - pos2.x
Y = pos1.y - pos2.y
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)
uid_list = ScriptLib.GetSceneUidList(context)
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()