添加配置表

This commit is contained in:
flswld
2022-11-30 00:00:20 +08:00
parent f70a890338
commit d7f3f3b866
33382 changed files with 8476601 additions and 0 deletions

View File

@@ -0,0 +1,257 @@
--[[
local defs = {
need_kill_hint = true,
group_id = 144001108, --对应的GroupID
gadget_init = {108013, 108014}, --defs.gadget_init里按顺序填入 开启挑战机关ConfigID、 限时终点ConfigID
challenge_time = 181, --挑战持续的时间
gadget_suites = {
[4] = {108015,108023}, --suites每波需要销毁的指示路点和光柱,结构为[suite_id] = {gadget1,gadget2},id从4开始
[5] = {108017,108024},
[6] = {108019,108025},
},
--怪物死亡时刷新对应的Suites里的纹章,结构为[configid] = suiteid,
suites_heraldry_loot = {
[108075] = 7,
[108077] = 8,
},
gadget_heraldry_count = 15, --收集的激流纹章数量
gadget_heraldry_id = 70350256, --激流纹章ID
suites_chain = {4,5,6,2}, --suite的刷新顺序
}
]]--
local Triggers_Start = {
[1] = { name = "challenge_success", config_id = 9000001, event = EventType.EVENT_CHALLENGE_SUCCESS, source = "",condition = "",action = "action_challenge_success",trigger_count= 0},
[2] = { name = "challenge_fail", config_id = 9000002, event = EventType.EVENT_CHALLENGE_FAIL, source = "",condition = "",action = "action_challenge_fail",trigger_count= 0},
[3] = { name = "select_option", config_id = 9000003, event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "action_select_option", trigger_count = 0 },
[4] = { name = "gadget_create", config_id = 9000004, event = EventType.EVENT_GADGET_CREATE, source = "", condition = "", action = "action_gadget_create", trigger_count = 0 },
[5] = { name = "gadget_die_count",config_id = 9000005, event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "condition_gadget_die_count", action = "", trigger_count = 0, tag = "888" },
[6] = { name = "any_monster_die", config_id = 9000006, event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "", action = "action_any_monster_die", trigger_count = 0 },
[7] = { name = "enter_region_action", config_id = 9000007, event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_region", trigger_count = 0 },
[8] = { name = "group_will_unload", config_id = 9000008, event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", condition = "", action = "action_group_will_unload", trigger_count = 0 },
[9] = { name = "group_unload", config_id = 9000009, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
}
local Triggers_Final = {
[1] = { config_id=50000001,name = "enter_final_region",config_id = 9000010, event = EventType.EVENT_ENTER_REGION, source = "", condition = "condition_enter_final_region", action = "", trigger_count = 0, tag = "666" },
}
--挑战机关初始化
function action_gadget_create(context, evt)
-- 设置操作台选项
if defs.gadget_init[1] == evt.param1 then
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, defs.gadget_init[1], {175})
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : create_open_gadget")
end
return 0
end
--机关开启条件及开启处理
function action_select_option(context, evt)
if defs.gadget_init[1] ~= evt.param1 or 175 ~= evt.param2 then
return -1
end
--弹出Reminder提示玩家不处于要求的状态下状态ID为2代表玩家处于开船状态
if 2 ~= ScriptLib.GetPlayerVehicleType(context,context.uid) then
ScriptLib.ShowReminder(context, 400041)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : not_in_boat")
return -1
end
if true == ScriptLib.CheckIsInMpMode(context) then
ScriptLib.ShowReminder(context, 400053)
return -1
end
if 0 ~= ScriptLib.GetGroupTempValue(context, "flagHasStarted", {}) then
ScriptLib.ShowReminder(context, 400046)
return -1
end
local boat_groups = {144002049,144001130,144004065,144001127,144004063,144001108}
for k,grp_id in pairs(boat_groups) do
ScriptLib.SetGroupTempValue(context, "flagHasStarted", 1, {group_id = grp_id})
end
-- 新建一个波次的全局变量 从1开始suites的刷新顺序按suites_chain的顺序刷新
local ret = ScriptLib.SetGroupTempValue(context, "wave", 1, {})
--创建编号为888该挑战的识别id),挑战内容为127的区域挑战具体参数填写方式见DungeonChallengeData表中的注释所有填写的值都必须是int类型
ScriptLib.CreateFatherChallenge(context, 2011, 2011, defs.challenge_time, {success = 10, fail = 5})
ScriptLib.AttachChildChallenge(context, 2011, 2012, 2012,{0,4, 666,1},{},{success = 10,fail = 5}) --限时到达
ScriptLib.AttachChildChallenge(context, 2011, 2013, 2013,{0,2, 888, defs.gadget_heraldry_count},{},{success = 1,fail = 0}) --收集纹章
if defs.need_kill_hint == true then
local hints = 0
for k,v in pairs(defs.suites_heraldry_loot) do
hints = hints+1
end
ScriptLib.AttachChildChallenge(context, 2011, 2014, 2014,{180, defs.group_id, hints, 0},{},{success = 1,fail = 0}) --收集纹章
end
ScriptLib.StartFatherChallenge(context, 2011)
ScriptLib.SetChallengeEventMark(context, 2011, ChallengeEventMarkType.SUMMER_TIME_SPRINT_BOAT_TIME)
ScriptLib.SetChallengeEventMark(context, 2013, ChallengeEventMarkType.SUMMER_TIME_SPRINT_BOAT_GATHER_POINT)
ScriptLib.DelWorktopOptionByGroupId(context, defs.group_id, defs.gadget_init[1], 175)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : del_work_options_by_group_configId")
-- 添加suite4的新内容
ScriptLib.AddExtraGroupSuite(context, defs.group_id, defs.suites_chain[1])
--处理关卡6刷怪时会卡住
if defs.group_id == 144002049 then
ScriptLib.AddExtraGroupSuite(context, defs.group_id, 10)
end
-- 将configid为 defs.gadget_init[1] 的物件更改为状态 GadgetState.GearStart
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_init[1], GadgetState.GearStart)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : set_gadget_state_GearStart")
return 0
end
-- 处理成功
function action_challenge_success(context, evt)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : success_process_start")
if evt.param1 ~= 2011 then
return -1
end
for i=1,#defs.gadget_init do
ScriptLib.KillEntityByConfigId(context, { config_id = defs.gadget_init[i] })
end
for i= 2, #suites do
ScriptLib.KillExtraGroupSuite(context, defs.group_id, i)
end
local boat_groups = {144002049,144001130,144004065,144001127,144004063,144001108}
for k,grp_id in pairs(boat_groups) do
ScriptLib.SetGroupTempValue(context, "flagHasStarted", 0, {group_id = grp_id})
end
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : success_kill_all_entity")
ScriptLib.RefreshGroup(context, { group_id = defs.group_id, suite = 1 })
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : success_process_end")
return 0
end
-- 处理失败
function action_challenge_fail(context, evt)
if evt.param1 ~= 2011 then
return -1
end
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : fail_process_start")
-- 将本组内变量名为 "hasStarted" 的变量设置为 0
ScriptLib.SetGroupVariableValue(context, "hasStarted", 0)
--标记挑战结束
local boat_groups = {144002049,144001130,144004065,144001127,144004063,144001108}
for k,grp_id in pairs(boat_groups) do
ScriptLib.SetGroupTempValue(context, "flagHasStarted", 0, {group_id = grp_id})
end
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : set_groupVariable")
-- 设置操作台选项
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, defs.gadget_init[1], {175})
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : set_wok_options_by_configid")
for i= 2, #suites do --目前第三组为空,从第四组开始
ScriptLib.RemoveExtraGroupSuite(context, defs.group_id, i)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : remove_groupsuites")
end
-- 将configid为 defs.gadget_init[1] 的物件更改为状态 GadgetState.Default
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_init[1], GadgetState.Default)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : set_gadget_state_dafault_to_Starter")
-- 永久关闭CongfigId的Gadget需要和Groups的RefreshWithBlock标签搭配
ScriptLib.KillEntityByConfigId(context, { config_id = defs.gadget_init[2] })
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : kill_entity_by_configId")
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : fail_process_end")
return 0
end
--统计激流纹章数量,
function condition_gadget_die_count(context, evt)
local death_config_id = evt.param1
if gadgets[death_config_id].gadget_id == defs.gadget_heraldry_id then
return true
end
return false
end
-- 进入最终区域,suite2
function condition_enter_final_region(context, evt)
-- 判断角色数量不少于1
if evt.param1 ~= suites[2].regions[1] then
return false
end
if ScriptLib.GetRegionEntityCount(context, { region_eid = evt.source_eid, entity_type = EntityType.AVATAR }) < 1 then
return false
end
return true
end
-- 进入每个Suite触发区域时移除终点指示器并刷新下一个Suite移除上一个Suite
function action_enter_region(context, evt)
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : EnterRegionToNext")
local wave = ScriptLib.GetGroupTempValue(context, "wave", {})
if wave > #defs.suites_chain then --防止访问不存在的wave
return -1
end
local suite_seq = defs.suites_chain[wave]
-- 判断角色数量不少于1
if evt.param1 ~= suites[suite_seq].regions[1] then
return -1
end
if ScriptLib.GetRegionEntityCount(context, { region_eid = evt.source_eid, entity_type = EntityType.AVATAR }) < 1 then
return -1
end
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Enter"..suite_seq)
-- 关闭该Suite中的提示光柱和路点
if wave < #defs.suites_chain then
ScriptLib.KillEntityByConfigId(context, { config_id = defs.gadget_suites[suite_seq][1] })
ScriptLib.KillEntityByConfigId(context, { config_id = defs.gadget_suites[suite_seq][2] })
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Kill Tip Gadgets when enter and this wave is"..suite_seq)
end
if wave == 1 then
ScriptLib.AddExtraGroupSuite(context, defs.group_id, defs.suites_chain[wave+1])
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Refresh_Next_Group"..(defs.suites_chain[wave+1]))
elseif wave == #defs.suites_chain then
ScriptLib.RemoveExtraGroupSuite(context, defs.group_id, defs.suites_chain[wave-1])
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Remove_last_Group"..(defs.suites_chain[wave-1]))
elseif wave > 1 and wave < #defs.suites_chain then
ScriptLib.AddExtraGroupSuite(context, defs.group_id, defs.suites_chain[wave+1])
ScriptLib.RemoveExtraGroupSuite(context, defs.group_id, defs.suites_chain[wave-1])
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Refresh_Next_Group_And_Remove_last_Group"..(defs.suites_chain[wave]))
end
ScriptLib.SetGroupTempValue(context, "wave", wave+1, {})
return 0
end
--根据死亡的怪物对应刷新含有纹章的Suite
function action_any_monster_die(context, evt)
if defs.suites_heraldry_loot[evt.param1] == nil then
return -1
else
ScriptLib.AddExtraGroupSuite(context, defs.group_id, defs.suites_heraldry_loot[evt.param1])
ScriptLib.PrintContextLog(context, "@@ LUA_WARNING : Kill_Monster_And_Add_heraldry")
end
return 0
end
--处理Group重新加载时操作台的问题
function action_group_load( context,evt )
ScriptLib.RefreshGroup(context, { group_id = defs.group_id, suite = 1 })
ScriptLib.SetWorktopOptionsByGroupId(context, defs.group_id, defs.gadget_init[1], {175})
return 0
end
--处理Group未正确卸载的情况
function action_group_will_unload( context,evt )
local boat_groups = {144002049,144001130,144004065,144001127,144004063,144001108}
for k,grp_id in pairs(boat_groups) do
ScriptLib.SetGroupTempValue(context, "flagHasStarted", 0, {group_id = grp_id})
end
return 0
end
--给每个suite塞触发器
function Initialize()
for k,v in pairs(Triggers_Start) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
table.insert(triggers, Triggers_Final[1])
table.insert(suites[2].triggers, Triggers_Final[1].name)
return 0
end
Initialize()

View File

@@ -0,0 +1,52 @@
-- local extrTriggers = {
-- initialtrigger = {
-- --["General_Die"] = { config_id = 8000001, name = "General_Die", event= EventType.EVENT_MONSTER_BATTLE, source = "", condition = "", action = "action_whern_general_inbattle", trigger_count = 0 },
-- }
-- }
-- function HitByShadow( context )
-- ScriptLib.AddExhibitionReplaceableData(context, context.uid, "GeneralBattle_HitByShadow", 1)
-- return 0
-- end
-- function HitByDoubleAttack( context )
-- ScriptLib.AddExhibitionReplaceableData(context, context.uid, "GeneralBattle_HitByDoubleAttack", 1)
-- return 0
-- end
-- function ExecuteInTuant( context )
-- local UidList = ScriptLib.GetSceneUidList(context)
-- for i,v in ipairs(UidList) do
-- ScriptLib.AddExhibitionReplaceableData(context, v, "GeneralBattle_ExecuteInTaunt", 1)
-- end
-- return 0
-- end
-- function action_whern_general_inbattle( context, evt )
-- if evt.param1 ~= MonsterID then
-- return 0
-- end
-- local UidList = ScriptLib.GetSceneUidList(context)
-- for i,v in ipairs(UidList) do
-- ScriptLib.AddExhibitionReplaceableData(context, v, "GeneralBattle_HitByShadow", 0)
-- ScriptLib.AddExhibitionReplaceableData(context, v, "GeneralBattle_HitByDoubleAttack", 0)
-- end
-- return 0
-- end
-- function LF_Initialize_Group(triggers, suites)
-- for k,v in pairs(extrTriggers.initialtrigger) do
-- table.insert(triggers, v)
-- table.insert(suites[init_config.suite].triggers, v.name)
-- end
-- return 0
-- end
--LF_Initialize_Group(triggers, suites)

View File

@@ -0,0 +1,100 @@
--[[
local defs = {
group_id = xxx,
tide_sum = 25,
tide_max = 8,
tide_min = 8
}
--suites[2]为monsterTide
--suites[3]为装饰gadget
--]]
local Tri = {
[1] = { name = "group_load", config_id = 8000001, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
[2] = { name = "group_refresh", config_id = 8000002, event = EventType.EVENT_GROUP_REFRESH, source = "", condition = "", action = "action_group_refresh", trigger_count = 0 },
[3] = { name = "any_monster_die", config_id = 8000003, event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "", action = "action_any_monster_die", trigger_count = 0 },
[4] = { name = "blossom_progress_finish", config_id = 8000004, event = EventType.EVENT_BLOSSOM_PROGRESS_FINISH, source = "", condition = "", action = "action_blossom_progress_finish", trigger_count = 0}
}
local Var = {
[1] = { config_id=50000001,name = "in_battle", value = 0, no_refresh = true },
[2] = { config_id=50000002,name = "BombTypeA", value = 0, no_refresh = false },
[3] = { config_id=50000003,name = "BombTypeB", value = 0, no_refresh = false },
[4] = { config_id=50000004,name = "BombTypeC", value = 0, no_refresh = false },
[5] = { config_id=50000005,name = "wave", value = 0, no_refresh = false }
}
local Reg = {
[1] = { config_id = 7000001, shape = RegionShape.SPHERE, radius = 40, pos = points[1].pos, area_id = monsters[1].area_id, ability_group_list = {"ActivityAbility_LudiHarpastum_Bomb_Mark"} }
}
------------------------------
function Initialize()
for k,v in pairs(Tri) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
for k,v in pairs(Var) do
table.insert(variables, v)
end
for k,v in pairs(Reg) do
table.insert(regions, v)
table.insert(suites[1].regions, v.config_id)
end
end
-------------------------------
function action_group_load(context, evt)
ScriptLib.PrintContextLog(context, "## KeleeBomb : action_group_load")
ScriptLib.AddExtraGroupSuite(context, 0, 3)
if 0 == ScriptLib.GetGroupVariableValue(context, "in_battle") then
ScriptLib.RefreshBlossomGroup(context, { group_id = 0, suite = 1, exclude_prev = true, is_delay_unload = true })
end
return 0
end
function action_group_refresh(context, evt)
ScriptLib.PrintContextLog(context, "## KeleeBomb : action_group_refresh")
LF_Group_Init(context)
return 0
end
function action_any_monster_die(context, evt)
ScriptLib.PrintContextLog(context, "## KeleeBomb : monster_die : source = "..evt.source_name)
if evt.source_name == "ActivityAbility_LudiHarpastumGadgetSkill_BombTypeA" then
ScriptLib.ChangeGroupVariableValue(context, "BombTypeA", 1)
elseif evt.source_name == "ActivityAbility_LudiHarpastumGadgetSkill_BombTypeB" then
ScriptLib.ChangeGroupVariableValue(context, "BombTypeB", 1)
elseif evt.source_name == "ActivityAbility_LudiHarpastumGadgetSkill_BombTypeC" then
ScriptLib.ChangeGroupVariableValue(context, "BombTypeC", 1)
end
ScriptLib.AddBlossomScheduleProgressByGroupId(context, defs.group_id)
if 0 == ScriptLib.GetGroupMonsterCount(context) then
local _wave = ScriptLib.GetGroupVariableValue(context, "wave")
if _wave+4 <= #suites then
ScriptLib.ShowReminderRadius(context, 400004, points[1].pos, 40)
ScriptLib.AddExtraGroupSuite(context, 0, _wave+4)
ScriptLib.ChangeGroupVariableValue(context, "wave", 1)
end
end
return 0
end
function action_blossom_progress_finish(context, evt)
ScriptLib.PrintContextLog(context, "## KeleeBomb : blossom_finish")
ScriptLib.RemoveEntityByConfigId(context, 0, EntityType.REGION, 70000001)
ScriptLib.SetGroupVariableValue(context, "in_battle", 0)
ScriptLib.SetGroupVariableValue(context, "wave", 0)
ScriptLib.SetBlossomScheduleStateByGroupId(context, defs.group_id, 3)
ScriptLib.RefreshBlossomGroup(context, { group_id = 0, suite = 1, exclude_prev = true, is_delay_unload = true })
return 0
end
------------------------------
function LF_Group_Init(context)
ScriptLib.PrintContextLog(context, "## KeleeBomb : group_init")
ScriptLib.SetBlossomScheduleStateByGroupId(context, defs.group_id, 2)
ScriptLib.AddExtraGroupSuite(context, 0, 3)
ScriptLib.SetGroupVariableValue(context, "in_battle", 1)
ScriptLib.SetGroupVariableValue(context, "wave", 1)
ScriptLib.AddExtraGroupSuite(context, 0, 4)
end
------------------------------
Initialize()

View File

@@ -0,0 +1,731 @@
local GroupID = 144003005
local smallRegion = 5039
local bigRegion = 5040
--自定义函数部分
local extrTriggers = {
initialtrigger = {
["Start_Gallery"] = { config_id = 8000001, name = "Start_Gallery", event= EventType.EVENT_GALLERY_START, source = "", condition = "", action = "action_whern_gallery_start", trigger_count = 0 },
["MultiStage_End"] = { config_id = 8000002, name = "MultiStage_End", event= EventType.EVENT_SCENE_MULTISTAGE_PLAY_STAGE_END, source = "", condition = "", action = "action_multistage_end", trigger_count = 0 },
["Shooter_Die"] = { config_id = 8000003, name = "Shooter_Die", event= EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "", action = "action_whern_shooter_die", trigger_count = 0 },
["Group_Ready"] = { config_id = 8000004, name = "Group_Ready", event= EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_ready", trigger_count = 0 },
["MultiStage_Start"] = { config_id = 8000005, name = "MultiStage_Start", event= EventType.EVENT_SCENE_MULTISTAGE_PLAY_STAGE_START, source = "", condition = "", action = "action_multistage_start", trigger_count = 0 },
--["GadgetSate_Change"] = { config_id = 8000006, name = "GadgetSate_Change", event= EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_gadgetstate_change", trigger_count = 0 },
["Gallery_Stop"] = { config_id = 8000007, name = "Gallery_Stop", event= EventType.EVENT_GALLERY_STOP, source = "", condition = "", action = "action_whern_gallery_stop", trigger_count = 0 },
["Random_Buff"] = { config_id = 8000008, name = "Random_Buff", event= EventType.EVENT_TIME_AXIS_PASS, source = "randombuff", condition = "", action = "action_timeaxis_randombuff", trigger_count = 0 },
["Shooter_Reborn"] = { config_id = 8000009, name = "Shooter_Reborn", event= EventType.EVENT_TIMER_EVENT, source = "shooterreborn", condition = "", action = "action_timer_shooterreborn", trigger_count = 0 },
["Group_Unload"] = {name = "Group_Unload", config_id = 8000010, event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", condition = "", action = "action_group_will_unload", trigger_count = 0},
["Small_Region"] = { config_id = 9000001, name = "Small_Region", event= EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "player_in_optimizationRegion", trigger_count = 0, forbid_guest = false },
["Big_Region"] = { config_id = 9000002, name = "Big_Region", event= EventType.EVENT_LEAVE_REGION, source = "", condition = "", action = "player_leave_optimizationRegion", trigger_count = 0, forbid_guest = false }
}
}
local extrSuites = {
{
monsters = { },
gadgets = { },
regions = {smallRegion, bigRegion },
triggers = { "Small_Region","Big_Region"},
rand_weight = 100
}
}
function FeverStart( context )
ScriptLib.PrintContextLog(context, "##BD LOG : Fever Start")
-- Fever状态开始
ScriptLib.SetGroupTempValue(context, "ISFEVERSTAGE", 1, {})
ScriptLib.EndSceneMultiStagePlayStage(context, 1, "NormalRound", true)
return 0
end
function FeverEnd( context )
ScriptLib.PrintContextLog(context, "##BD LOG : Fever End")
-- Fever状态结束
ScriptLib.EndSceneMultiStagePlayStage(context, 1, "FeverRound", true)
return 0
end
function GetRandomType(context, randomList, isFerver)
local MaxNum = #randomList
local CurStage = ScriptLib.GetGroupTempValue(context, "StageCount", {})
math.randomseed(ScriptLib.GetServerTime(context))
if CurStage > MaxNum then
CurStage = MaxNum
end
return randomList[CurStage][math.random(#randomList[CurStage])]
end
function CurveBallCount( context )
-- 曲线球计数
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."CurveBallCount ++")
ScriptLib.AddExhibitionAccumulableData(context, context.uid, "Activity_BD_CurveCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 1)
return 0
end
function IceBallCount( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."IceBallCount ++")
-- 冰冻球计数
ScriptLib.AddExhibitionAccumulableData(context, context.uid, "Activity_BD_IceCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 1)
return 0
end
function SpeedBallCount( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."SpeedBallCount ++")
-- 高速球计数
ScriptLib.AddExhibitionAccumulableData(context, context.uid, "Activity_BD_SpeedCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 1)
--高速球翻牌子计数
ScriptLib.AddExhibitionReplaceableData(context, context.uid, "Activity_BD_SpeedValue", 1)
return 0
end
function SoilBallCount( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."SoilBallCount ++")
-- 岩土球计数
ScriptLib.AddExhibitionAccumulableData(context, context.uid, "Activity_BD_SoilCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 1)
return 0
end
function TimeLimitedShieldDieCount( context )
-- 限时内护盾被击破翻牌子计数
local UidList = ScriptLib.GetSceneUidList(context)
for i,v in ipairs(UidList) do
ScriptLib.AddExhibitionReplaceableData(context, v, "Activity_BD_ShieldDestroy", 1)
end
return 0
end
function ShieldDieCount( context)
-- 护盾击破计数
local UidList = ScriptLib.GetSceneUidList(context)
for i,v in ipairs(UidList) do
ScriptLib.PrintContextLog(context, "##BD LOG : ShieldDieCount +1 for uid"..v)
ScriptLib.AddExhibitionAccumulableData(context, v, "Activity_BD_ShieldDieCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 1)
end
return 0
end
function AutoReturnCount( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."AutoReturnCount ++")
-- 自动回球计数
ScriptLib.AddExhibitionAccumulableData(context, context.uid, "Activity_BD_AutoReturnCount", 1)
return 0
end
function GoldPAPACount( context )
-- 黄金球拍计数
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
ScriptLib.UpdatePlayerGalleryScore(context, GalleryIDList[GalleryStage], {["catch_gadget_id"] = 70350257 ,["add_score"] = 0, ["add_destroyed_machine_count"] = 0, ["add_damage"] = 0,["add_normal_hit_count"] = 0,["add_perfect_hit_count"] = 0, ["add_fever_count"] = 0} )
return 0
end
function PepperBuffCount( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."PepperBuffCount ++")
-- 绝云辣椒计数
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
ScriptLib.UpdatePlayerGalleryScore(context, GalleryIDList[GalleryStage], {["catch_gadget_id"] = 70350252 ,["add_score"] = 0, ["add_destroyed_machine_count"] = 0, ["add_damage"] = 0,["add_normal_hit_count"] = 0,["add_perfect_hit_count"] = 0, ["add_fever_count"] = 0} )
ScriptLib.AddExhibitionAccumulableData(context, context.uid, "Activity_BD_PepperCount", 1)
return 0
end
function SpeedBuffCount( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."SpeedBuffCount ++")
-- 黄金鞋计数
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
ScriptLib.UpdatePlayerGalleryScore(context, GalleryIDList[GalleryStage], {["catch_gadget_id"] = 70350248 ,["add_score"] = 0, ["add_destroyed_machine_count"] = 0, ["add_damage"] = 0,["add_normal_hit_count"] = 0,["add_perfect_hit_count"] = 0, ["add_fever_count"] = 0} )
ScriptLib.AddExhibitionAccumulableData(context, context.uid, "Activity_BD_ShoesCount", 1)
return 0
end
function BeingForzen( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."BeingForzen ++")
-- 冻结计数
ScriptLib.SetGroupTempValue(context, "NoFrozenCount"..context.uid, 1, {})
return 0
end
function BeingDirty( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."BeingDirty ++")
-- 脏脏球计数
ScriptLib.SetGroupTempValue(context, "NoDirtyCount"..context.uid, 1, {})
return 0
end
function HitByBall( context )
ScriptLib.PrintContextLog(context, "##BD LOG : player "..context.uid.."HitByBall ++")
-- 被球命中翻牌子计数
ScriptLib.AddExhibitionReplaceableData(context, context.uid, "Activity_BD_NoSufferHit", 1)
return 0
end
function AddScore( context, damage, isPerfect, ballType )
-- 计算分数
ScriptLib.PrintContextLog(context, "##BD LOG : Score Damage == "..damage.." UID == "..context.uid)
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
if isPerfect == 1 then
ScriptLib.PrintContextLog(context, "##BD LOG : updatePlayerScore PERFECT BALL")
--完美球翻牌子计数
ScriptLib.AddExhibitionReplaceableData(context, context.uid, "Activity_BD_PerfectValue", 1)
--完美球陈列室累计计数
ScriptLib.AddExhibitionAccumulableData(context, context.uid, "Activity_BD_PerfectCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 1)
--伤害翻牌子计数
ScriptLib.AddExhibitionReplaceableData(context, context.uid, "Activity_BD_DamageValue", -1*damage)
--伤害实时显示
ScriptLib.UpdatePlayerGalleryScore(context, GalleryIDList[GalleryStage], {["add_score"] = -1*damage*PerDamageScore, ["add_destroyed_machine_count"] = 0, ["add_damage"] = -1*damage,["add_normal_hit_count"] = 0,["add_perfect_hit_count"] = 1, ["add_fever_count"] = 0} )
else
ScriptLib.PrintContextLog(context, "##BD LOG : updatePlayerScore NORMAL BALL ")
--伤害翻牌子计数
ScriptLib.AddExhibitionReplaceableData(context, context.uid, "Activity_BD_DamageValue", -1*damage)
--伤害实时显示
ScriptLib.UpdatePlayerGalleryScore(context, GalleryIDList[GalleryStage], {["add_score"] = -1*damage*PerDamageScore, ["add_destroyed_machine_count"] = 0, ["add_damage"] = -1*damage,["add_normal_hit_count"] = 1,["add_perfect_hit_count"] = 0, ["add_fever_count"] = 0} )
end
return 0
end
function SetGadgetStateByGalleryStage(context)
local Stage = ScriptLib.GetGroupTempValue(context, "GalleryStage", {})
ScriptLib.SetGroupGadgetStateByConfigId(context, GroupID, ShooterConfigID, 200+Stage)
return 0
end
--自定义函数部分结束
--evt调用部分
function player_leave_optimizationRegion( context, evt )
ScriptLib.PrintContextLog(context, "##BD LOG : optimization Stop~~~~~ regionID == "..evt.param1)
if evt.param1 ~= bigRegion then
return 0
end
--优化结束
ScriptLib.PrintContextLog(context, "##BD LOG : optimization Stop!!!!!!!! uid == "..context.uid)
ScriptLib.ClearPlayerEyePoint(context, smallRegion)
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, {1})
ScriptLib.SetLimitOptimization(context, context.uid, false)
ScriptLib.SetGroupTempValue(context, "optimize_"..context.uid, 0, { group_id = 144002077})
return 0
end
function player_in_optimizationRegion( context, evt )
if evt.param1 ~= smallRegion then
return 0
end
ScriptLib.PrintContextLog(context, "##BD LOG : optimization Start uid == "..context.uid)
--优化部分
ScriptLib.SetPlayerEyePoint(context, smallRegion, bigRegion)
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, {0})
ScriptLib.SetLimitOptimization(context, context.uid, true)
ScriptLib.SetGroupTempValue(context, "optimize_"..context.uid, 1, { group_id = 144002077})
return 0
end
function action_group_will_unload( context, evt )
--优化suite卸载
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
if GalleryStage == 0 then
return 0
end
ScriptLib.PrintContextLog(context, "##BD LOG : GroupWillUnLoad gallerStage == "..GalleryStage)
ScriptLib.PrintContextLog(context, "##BD LOG : GroupWillUnLoad gallerID == "..GalleryIDList[GalleryStage])
ScriptLib.StopGallery(context, GalleryIDList[GalleryStage], false)
ScriptLib.RemoveEntityByConfigId(context, GroupID, EntityType.REGION, bigRegion)
return 0
end
function action_gadgetstate_change(context,evt )
-- ScriptLib.PrintContextLog(context, "##BD LOG : GadgetState Change")
-- if evt.param2 ~= TextEnterConfigID then
-- return 0
-- end
-- if evt.param1 == 203 then
-- ScriptLib.PrintContextLog(context, "##BD LOG : GadgetState Change GameStart")
-- ScriptLib.StartGallery(context, GalleryID)
-- elseif evt.param1 == 204 then
-- local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
-- ScriptLib.StopGallery(context, GalleryIDList[GalleryStage], false)
-- end
return 0
end
function action_timeaxis_randombuff( context, evt )
math.randomseed(ScriptLib.GetServerTime(context))
local MaxNum = 0
local CurBuffList = 0
if ScriptLib.GetGroupTempValue(context, "GalleryStage", {})==1 then
CurBuffList = BUffList
elseif ScriptLib.GetGroupTempValue(context, "GalleryStage", {})==2 then
CurBuffList = BUffList2
else
CurBuffList = BUffList3
end
for i,v in ipairs(CurBuffList) do
MaxNum = MaxNum + v.buffWeight
end
local randomWeight = math.random(MaxNum)
local CurBuffConfigID = 0
for i,v in ipairs(CurBuffList) do
if v.buffWeight >= randomWeight then
CurBuffConfigID = v.buffConfigID
break
else
randomWeight = randomWeight - v.buffWeight
end
end
local regionPos = regions[BuffRegionID].pos
local regionSize = regions[BuffRegionID].size
ScriptLib.PrintContextLog(context, "##BD simple pos.x = "..regions[BuffRegionID].pos.x.." Size.x = "..regions[BuffRegionID].size.x)
local pos_table = { x = math.random(math.ceil(regionPos.x - (regionSize.x/2)), math.ceil(regionPos.x + (regionSize.x/2))),
y = regionPos.y,
z = math.random(math.ceil(regionPos.z - (regionSize.z/2)), math.ceil(regionPos.z + (regionSize.z/2)))
}
ScriptLib.PrintContextLog(context, "##BD BUFF CONFIGID = "..CurBuffConfigID)
ScriptLib.CreateGadgetByConfigIdByPos(context, CurBuffConfigID, pos_table, {x=0,y=0,z=0})
return 0
end
function action_group_ready( context, evt )
ScriptLib.PrintContextLog(context, "##BD LOG : Group Load")
return 0
end
function action_whern_gallery_start(context, evt )
local UidList = ScriptLib.GetSceneUidList(context)
--加载岩创杀手
ScriptLib.CreateGadget(context, { config_id = 5030 })
ScriptLib.CreateGadget(context, { config_id = 5037 })
ScriptLib.SetGroupTempValue(context, "GalleryID", evt.param1, {})
--取出当前的阶段
for i,v in ipairs(GalleryIDList) do
if v == evt.param1 then
ScriptLib.SetGroupTempValue(context, "GalleryStage", i, {})
break
end
end
--初始化冰冻、岩土计数
for i,v in ipairs(UidList) do
ScriptLib.SetGroupTempValue(context, "NoFrozenCount"..v, 0, {})
ScriptLib.SetGroupTempValue(context, "NoDirtyCount"..v, 0, {})
ScriptLib.AddExhibitionReplaceableData(context, v, "Activity_BD_NoFrozenCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 0)
ScriptLib.AddExhibitionReplaceableData(context, v, "Activity_BD_NoDirtyCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 0)
end
--优化suite开启
ScriptLib.AddExtraGroupSuite(context, GroupID, #suites)
ScriptLib.SetGroupTempValue(context, "ShooterAlive", 1, {})
ScriptLib.SetGroupTempValue(context, "GalleryOn", 1, {})
math.randomseed(ScriptLib.GetServerTime(context))
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
if evt.param1 ~= GalleryIDList[GalleryStage] then
return 0
end
ScriptLib.SetGroupTempValue(context, "StageCount", 1, {})
ScriptLib.SetGroupTempValue(context, "FeverCount", 0, {})
--初始化BUFF时间轴
ScriptLib.InitTimeAxis(context, "randombuff", RandomBuffTimeAxis[math.random(#RandomBuffTimeAxis)], true)
ScriptLib.SetGroupTempValue(context, "PlayerNum", #UidList, {})
-- 创建一个发射器
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
if ScriptLib.GetGroupTempValue(context, "PlayerNum", {}) == 1 then
ScriptLib.SetGroupTempValue(context, "RandomType", GetRandomType(context, NormalRandomList[GalleryStage], false),{})
ScriptLib.SetGroupTempValue(context, "FeverRandomType", GetRandomType(context, FeverRandomList[GalleryStage], true),{})
else
ScriptLib.SetGroupTempValue(context, "RandomType", GetRandomType(context, NormalRandomList2[GalleryStage], false),{})
ScriptLib.SetGroupTempValue(context, "FeverRandomType", GetRandomType(context, FeverRandomList2[GalleryStage], true),{})
end
--ScriptLib.CreateGadgetWithGlobalValue(context, ShooterConfigID, { ["SGV_BDShootType"]= RandomType})
ScriptLib.SetEntityServerGlobalValueByConfigId(context, ShooterConfigID, "SGV_BDShootType", ScriptLib.GetGroupTempValue(context, "RandomType",{}))
SetGadgetStateByGalleryStage(context)
-- 初始化一个多阶段玩法
ScriptLib.InitSceneMultistagePlay(context, 1, MultistagePlayType.BounceConjuring, {}, UidList)
ScriptLib.SetGroupTempValue(context, "ISFEVERSTAGE", 0, {})
--启动一个8秒时间的等待阶段
ScriptLib.StartSceneMultiStagePlayStage(context, 1, 8, Multistage.Idle, "WaitRound",{})
return 0
end
function action_whern_gallery_stop( context,evt )
ScriptLib.SetGroupTempValue(context, "GalleryOn", 0, {})
local UidList = ScriptLib.GetSceneUidList(context)
local FeverCount = ScriptLib.GetGroupTempValue(context, "FeverCount", {})
--游戏时间结束
if evt.param3 == 1 then
ScriptLib.PrintContextLog(context, "##BD LOG : TimeoUT Stop")
for i,v in ipairs(UidList) do
if ScriptLib.GetGroupTempValue(context, "NoFrozenCount"..v, {}) == 0 then
--设置每个玩家的冰冻球次数
ScriptLib.PrintContextLog(context, "##BD LOG : TimeoUT SET FROZENNUM")
ScriptLib.AddExhibitionReplaceableData(context, v, "Activity_BD_NoFrozenCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 1 )
end
if ScriptLib.GetGroupTempValue(context, "NoDirtyCount"..v, {}) == 0 then
--设置每个玩家的脏脏球次数
ScriptLib.AddExhibitionReplaceableData(context, v, "Activity_BD_NoDirtyCount"..ScriptLib.GetGroupTempValue(context, "GalleryID", {}), 1 )
end
end
end
--移除岩创杀手
ScriptLib.RemoveEntityByConfigId(context, GroupID, EntityType.GADGET, 5030)
ScriptLib.RemoveEntityByConfigId(context, GroupID, EntityType.GADGET, 5037)
--移除多余的BUFF
for i,v in ipairs(BUffList) do
ScriptLib.RemoveEntityByConfigId(context, GroupID, EntityType.GADGET, v.buffConfigID)
end
--优化suite卸载
ScriptLib.RemoveEntityByConfigId(context, GroupID, EntityType.REGION, bigRegion)
ScriptLib.EndSceneMultiStagePlay(context, 1, true)
ScriptLib.EndTimeAxis(context, "randombuff")
ScriptLib.EndTimeAxis(context, "shooterreborn")
local UidList = ScriptLib.GetSceneUidList(context)
for i,v in ipairs(UidList) do
--设置本局Fever次数
ScriptLib.AddExhibitionReplaceableData(context, v, "Activity_BD_FeverCount", FeverCount)
end
ScriptLib.RefreshGroup(context, { group_id = GroupID, suite = 1 })
ScriptLib.SetEntityServerGlobalValueByConfigId(context, ShooterConfigID, "SGV_BDShootType", 0)
-- if ScriptLib.GetGroupTempValue(context, "ShooterAlive", {})==1 then
-- ScriptLib.SetEntityServerGlobalValueByConfigId(context, ShooterConfigID, "SGV_BDShootType", 0)
-- ScriptLib.SetGroupGadgetStateByConfigId(context, GroupID, ShooterConfigID, 0)
-- else
-- ScriptLib.CreateGadgetWithGlobalValue(context, ShooterConfigID, { ["SGV_BDShootType"]= 0})
-- end
return 0
end
function action_multistage_start(context, evt )
-- 阶段开始设置gadgetSGV
ScriptLib.PrintContextLog(context, "##BD LOG : MultiStage Start")
local UidList = ScriptLib.GetSceneUidList(context)
math.randomseed(ScriptLib.GetServerTime(context))
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
if evt.source_name == "NormalRound" then
--从基础库里挑一个随机
ScriptLib.SetEntityServerGlobalValueByConfigId(context, ShooterConfigID, "SGV_BDShootType", ScriptLib.GetGroupTempValue(context, "RandomType",{}))
ScriptLib.PrintContextLog(context, "##BD LOG : Nromal RandomType == "..ScriptLib.GetGroupTempValue(context, "RandomType",{}))
elseif evt.source_name == "FeverRound" then
--进入Fever次数翻牌子计数
for i,v in ipairs(UidList) do
ScriptLib.PrintContextLog(context, "##BD LOG : Feverount +1 for uid"..v)
ScriptLib.AddExhibitionReplaceableData(context, v, "Activity_BD_FeverValue", 1)
end
--从Fever库里挑一个随机
local UidList = ScriptLib.GetSceneUidList(context)
for i,v in ipairs(UidList) do
ScriptLib.PrintContextLog(context, "##BD LOG : updatePlayerScore Fever ")
ScriptLib.UpdatePlayerGalleryScore(context, GalleryIDList[GalleryStage], {["add_score"] = 0, ["add_destroyed_machine_count"] = 0, ["add_damage"] = 0,["add_normal_hit_count"] = 0,["add_perfect_hit_count"] = 0, ["add_fever_count"] = 1,["uid"] = v} )
end
ScriptLib.ChangeGroupTempValue(context, "FeverCount", 1, {})
ScriptLib.SetEntityServerGlobalValueByConfigId(context, ShooterConfigID, "SGV_BDShootType", ScriptLib.GetGroupTempValue(context, "FeverRandomType",{}))
ScriptLib.PrintContextLog(context, "##BD LOG : Fever RandomType == "..ScriptLib.GetGroupTempValue(context, "FeverRandomType",{}))
end
return 0
end
function action_multistage_end(context, evt )
if ScriptLib.GetGroupTempValue(context, "GalleryOn", {}) ~= 1 then
return 0
end
-- 结束一个阶段后开启下一个阶段
if evt.source_name == "FeverRound" then
ScriptLib.SetGroupTempValue(context, "ISFEVERSTAGE", 0, {})
end
if ScriptLib.GetGroupTempValue(context, "ISFEVERSTAGE", {})==0 then
ScriptLib.PrintContextLog(context, "##BD LOG : Start Normal Round")
ScriptLib.StartSceneMultiStagePlayStage(context, 1, 0, Multistage.Idle, "NormalRound",{})
else
ScriptLib.PrintContextLog(context, "##BD LOG : Start Fever Round")
ScriptLib.StartSceneMultiStagePlayStage(context, 1, 0, Multistage.Idle, "FeverRound",{})
end
return 0
end
function action_whern_shooter_die(context, evt )
if evt.param1 ~= ShooterConfigID then
return 0
end
ScriptLib.SetGroupTempValue(context, "ShooterAlive", 0, {})
local UidList = ScriptLib.GetSceneUidList(context)
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
for i,v in ipairs(UidList) do
ScriptLib.PrintContextLog(context, "##BD LOG : add_destroyed_machine_count")
ScriptLib.AddExhibitionAccumulableData(context, v, "Activity_BD_ShooterDieCount", 1)
ScriptLib.UpdatePlayerGalleryScore(context, GalleryIDList[GalleryStage], {["add_score"] = 0, ["add_destroyed_machine_count"] = 1, ["add_damage"] = 0,["add_normal_hit_count"] = 0,["add_perfect_hit_count"] = 0, ["add_fever_count"] = 0,["uid"] = v} )
end
ScriptLib.PrintContextLog(context, "##BD LOG : ShooterDie Uid == "..UidList[1])
ScriptLib.UpdatePlayerGalleryScore(context, GalleryIDList[GalleryStage], {["add_score"] = PerShooterScore, ["add_destroyed_machine_count"] = 0, ["add_damage"] = 0,["add_normal_hit_count"] = 0,["add_perfect_hit_count"] = 0, ["add_fever_count"] = 0, ["uid"] = UidList[1] } )
ScriptLib.ChangeGroupTempValue(context, "StageCount", 1, {})
ScriptLib.PrintContextLog(context, "##BD LOG : Shooter Die Stage Change")
-- 前一个gadget被打死立刻切阶段
if ScriptLib.GetGroupTempValue(context, "ISFEVERSTAGE", {})==0 then
ScriptLib.EndSceneMultiStagePlayStage(context, 1, "NormalRound", true)
else
ScriptLib.EndSceneMultiStagePlayStage(context, 1, "FeverRound", true)
--Fever期间内装置摧毁翻牌子计数
for i,v in ipairs(UidList) do
ScriptLib.PrintContextLog(context, "##BD LOG : FeverShooterDieCount +1 for uid"..v)
ScriptLib.AddExhibitionReplaceableData(context, v, "Activity_BD_FeverDestroy", 1)
end
end
-- 延时创建一个新的发射器
ScriptLib.CreateGroupTimerEvent(context, GroupID, "shooterreborn", 1.5)
return 0
end
function action_timer_shooterreborn(context, evt)
ScriptLib.SetGroupTempValue(context, "ShooterAlive", 1, {})
local GalleryStage = ScriptLib.GetGroupTempValue(context, "GalleryStage",{})
if ScriptLib.GetGroupTempValue(context, "PlayerNum", {}) == 1 then
ScriptLib.SetGroupTempValue(context, "RandomType", GetRandomType(context, NormalRandomList[GalleryStage], false),{})
ScriptLib.SetGroupTempValue(context, "FeverRandomType", GetRandomType(context, FeverRandomList[GalleryStage], true),{})
else
ScriptLib.SetGroupTempValue(context, "RandomType", GetRandomType(context, NormalRandomList2[GalleryStage], false),{})
ScriptLib.SetGroupTempValue(context, "FeverRandomType", GetRandomType(context, FeverRandomList2[GalleryStage], true),{})
end
if ScriptLib.GetGroupTempValue(context, "GalleryOn", {}) == 1 then
ScriptLib.PrintContextLog(context, "##BD LOG : Die Change RandomType == "..ScriptLib.GetGroupTempValue(context, "RandomType",{}))
ScriptLib.CreateGadgetWithGlobalValue(context, ShooterConfigID, { ["SGV_BDShootType"]= ScriptLib.GetGroupTempValue(context, "RandomType",{})})
SetGadgetStateByGalleryStage(context)
else
ScriptLib.PrintContextLog(context, "##BD LOG : Die Change RandomType But GalleryStop")
ScriptLib.CreateGadgetWithGlobalValue(context, ShooterConfigID, { ["SGV_BDShootType"]= 0 })
end
return 0
end
function LF_Initialize_Group(triggers, suites)
for k,v in pairs(extrTriggers.initialtrigger) do
table.insert(triggers, v)
table.insert(suites[init_config.suite].triggers, v.name)
end
for i,v in ipairs(extrSuites) do
table.insert(suites, v)
end
return 0
end
LF_Initialize_Group(triggers, suites)

View File

@@ -0,0 +1,261 @@
--[[
local defs = {
monster_boss = xxx,
summon_region_list = {1,2,3}, --region出怪的list
summon_interval = 15, --自动出怪时间
gadget_operator_list = {1,2,3....9} --9个锚点
}
--]]
local Tri = {
{ name = "variable_change", config_id = 8000001, event = EventType.EVENT_VARIABLE_CHANGE, source = "", condition = "", action = "action_variable_change", trigger_count = 0 },
{ name = "time_axis_pass", config_id = 8000002, event = EventType.EVENT_TIME_AXIS_PASS, source = "", condition = "", action = "action_time_axis_pass", trigger_count = 0 },
{ name = "any_monster_die", config_id = 8000003, event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "", action = "action_any_monster_die", trigger_count = 0 },
}
local other_Tri = {
[1] = { name = "enter_region", config_id = 8000010, event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_region", forbid_guest = false, trigger_count = 0 }
}
function Initialize()
for i,v in ipairs(Tri) do
table.insert(triggers, v)
table.insert(suites[2].triggers, v.name)
end
table.insert(triggers, other_Tri[1])
table.insert(suites[10].triggers, other_Tri[1].name)
end
-----------------------------------
--处理召唤进度,需要保留
function action_variable_change(context, evt)
if evt.param1 == evt.param2 then
return -1
end
ScriptLib.PrintContextLog(context, "## ## BossDungeon : variable change | "..evt.source_name.." "..evt.param2.." -> "..evt.param1)
--竞争处理
if evt.source_name == "SummonStep" then
if evt.param1 == 1111 then
ScriptLib.EndTimeAxis(context, "summon")
end
end
return -1
end
--处理局内计时,需要保留
function action_time_axis_pass(context, evt)
ScriptLib.PrintContextLog(context, "## BossDungeon : time axis pass : "..evt.source_name.." | param1 = "..evt.param1)
--依次召唤阶段的处理逻辑
if evt.source_name == "summon" then
local SummonStep_ = ScriptLib.GetGroupTempValue(context, "SummonStep", {})
for i=2,4 do
local temp_ = SummonStep_
if temp_%math.pow(10,i)//math.pow(10,i-1) == 0 then
LF_Summon_Action(context, i)
break
end
end
elseif evt.source_name == "summon_delay" then
SLC_Summon_Start(context)
elseif evt.source_name == "stage_1" then
local stage = ScriptLib.GetGroupTempValue(context, "Oceanid_State", {})
ScriptLib.PrintContextLog(context, "## BossDungeon : stage = "..stage)
if 1 == stage then
SLC_Stage_To_2(context)
end
elseif evt.source_name == "shuffle_loop" then
LF_Random_Attack_Platform(context)
end
return 0
end
--处理踩怪,需要保留
function action_enter_region(context, evt)
for i,v in ipairs(defs.summon_region_list) do
if v == evt.param1 then
--提前踩出怪,重新计时
LF_Summon_Action(context, i+1)
break
end
end
return 0
end
function action_any_monster_die(context, evt)
ScriptLib.PrintContextLog(context, "## ACT_OCEANID_LOG : monster_die = "..evt.param1)
if evt.param1 == defs.monster_boss then
LF_Clear_Battle_Arena(context)
else
--根据召唤的suite自行换算行为
local noob = ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_boss, "_MONSTERAFFIX_OCEANID_02_ANIMALSELECT")
local noob_suite = noob + 4
for k,v in ipairs(suites[noob_suite].monsters) do
if evt.param1 == v then
--怪死了立即召唤下一只
local temp_ = ScriptLib.GetGroupTempValue(context, "SummonStep", {})
for i=2,4 do
if temp_ == 0 then
break
end
if temp_%math.pow(10,i)//math.pow(10,i-1) ~= 1 then
LF_Summon_Action(context, i)
break
end
end
ScriptLib.ChangeGroupTempValue(context, "Oceanid_HP", -10, {})
local hp_ = ScriptLib.GetGroupTempValue(context, "Oceanid_HP", {})
ScriptLib.PrintContextLog(context, "## ACT_OCEANID_LOG : boss_cur_hp = "..hp_)
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.monster_boss, "SGV_Oceanid_HP", hp_)
--血量40则进入3阶段
if hp_ <= 40 then
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.monster_boss, "SGV_Oceanid_State", 3)
ScriptLib.SetGroupTempValue(context, "Oceanid_State", 3, {})
--ScriptLib.RemoveExtraGroupSuite(context, 0, 11)
LF_Random_Attack_Platform(context)
ScriptLib.InitTimeAxis(context, "shuffle_loop", {25}, true)
end
break
end
end
end
return 0
end
---------------------------------------
function LF_Get_Distance(context, uid, config_id)
local eid = ScriptLib.GetAvatarEntityIdByUid(context, uid)
local pos1 = ScriptLib.GetPosByEntityId(context, eid)
local pos2 = gadgets[config_id].pos
local X = pos1.x - pos2.x
local Y = pos1.y - pos2.y
local Z = pos1.z - pos2.z
return math.sqrt(X*X+Y*Y+Z*Z)
end
function LF_Clear_Battle_Arena(context)
ScriptLib.PrintContextLog(context, "##ACT_OCEANID_LOG : Clear_Battle_Arena")
ScriptLib.SetGroupTempValue(context, "is_in_battle", 0, {})
ScriptLib.SetGroupTempValue(context, "SummonStep", 0, {})
ScriptLib.EndTimeAxis(context, "stage_1")
ScriptLib.EndTimeAxis(context, "summon_delay")
ScriptLib.EndTimeAxis(context, "summon")
ScriptLib.EndTimeAxis(context, "shuffle_loop")
for i=2,10 do
ScriptLib.KillExtraGroupSuite(context, 0, i)
end
--变量转给group内部
end
function LF_Create_Boss(context)
--调资源包接口
ScriptLib.InitTimeAxis(context, "stage_1", {120}, false)
ScriptLib.SetGroupTempValue(context, "Oceanid_State", 1, {})
ScriptLib.AddExtraGroupSuite(context, 0, 2)
end
function LF_Random_Attack_Platform(context)
math.randomseed(ScriptLib.GetServerTime(context))
local p={}
local array = {1,2,3,4,5,6,7,8,9}
local _max = 3
if 0 ~= ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_boss, "_MONSTERAFFIX_OCEANID_02_PLATFORMDAMAGE_SUM_UP") then
_max = 5
end
for j=1,_max do
local ran = math.random(#array)
for k,v in pairs(array) do
if ran == k then
p[j] = array[k]
table.remove(array, k)
break
end
end
end
ScriptLib.PrintContextLog(context, "## BossDungeon : Platform_Sum = "..#p)
for i,v in ipairs(defs.gadget_operator_list) do
local is_match = false
for m,n in ipairs(p) do
if i == n then
is_match = true
break
end
end
if is_match == true then
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, v, 201)
else
ScriptLib.SetGroupGadgetStateByConfigId(context, 0, v, 0)
end
end
end
function LF_Summon_Action(context, idx)
--根据召唤的suite自行换算行为
local noob = ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_boss, "_MONSTERAFFIX_OCEANID_02_ANIMALSELECT")
local noob_suite = noob + 4
local noob_heal = ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_boss, "_MONSTERAFFIX_OCEANID_02_ANIMALHEAL_UP")
local noob_bomb = ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_boss, "_MONSTERAFFIX_OCEANID_02_ANIMAL_DEATHEXPLODE")
local noob_level = ScriptLib.GetEffigyChallengeMonsterLevel(context) + 1
ScriptLib.PrintContextLog(context, "## ACT_OCEANID_LOG : noob = "..noob.." | noob_heal = "..noob_heal)
ScriptLib.CreateMonster(context, {config_id=suites[noob_suite].monsters[idx], level=noob_level, delay_time=0, server_global_value={["SGV_MONSTERAFFIX_OCEANID_02_ANIMALHEAL_UP"]=noob_heal,["SGV_MONSTERAFFIX_OCEANID_02_ANIMAL_DEATHEXPLODE"]=noob_bomb}})
--remove相应的region
if idx ~= 1 then
ScriptLib.RemoveExtraGroupSuite(context, 0, idx+5)
end
local value = ScriptLib.GetGroupTempValue(context, "SummonStep", {})
value = value - value%math.pow(10,idx) + value%math.pow(10,idx-1) + math.pow(10,idx-1)
ScriptLib.SetGroupTempValue(context, "SummonStep", value, {})
if value ~= 1111 then
ScriptLib.InitTimeAxis(context, "summon", {defs.summon_interval}, true)
end
end
---------------------------------------
function SLC_Stage_To_2(context)
ScriptLib.PrintContextLog(context, "## ACT_OCEANID_LOG : SLC_Stage_To_2")
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.monster_boss, "SGV_Oceanid_State", 2)
ScriptLib.SetGroupTempValue(context, "Oceanid_State", 2, {})
ScriptLib.EndTimeAxis(context, "stage_1")
ScriptLib.SetEntityServerGlobalValueByConfigId(context, defs.monster_boss, "SGV_Oceanid_HP", 80)
ScriptLib.SetGroupTempValue(context, "Oceanid_HP", 80, {})
ScriptLib.SetGroupTempValue(context, "SummonStep", 0, {})
ScriptLib.InitTimeAxis(context, "summon_delay", {10}, false)
ScriptLib.SetGroupTempValue(context, "summon_lock", 0, {})
return 0
end
function SLC_Summon_Start(context)
if 1 ~= ScriptLib.GetGroupTempValue(context, "summon_lock", {}) then
ScriptLib.SetGroupTempValue(context, "summon_lock", 1, {})
else
return -1
end
ScriptLib.EndTimeAxis(context, "summon_delay")
ScriptLib.InitTimeAxis(context, "summon", {defs.summon_interval}, true)
--0001b为第一只怪的标识
local noob = ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_boss, "_MONSTERAFFIX_OCEANID_02_ANIMALSELECT")
local noob_suite = noob + 4
local noob_heal = ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_boss, "_MONSTERAFFIX_OCEANID_02_ANIMALHEAL_UP")
local noob_bomb = ScriptLib.GetMonsterAbilityFloatValue(context, 0, defs.monster_boss, "_MONSTERAFFIX_OCEANID_02_ANIMAL_DEATHEXPLODE")
local noob_level = ScriptLib.GetEffigyChallengeMonsterLevel(context) + 1
ScriptLib.PrintContextLog(context, "## ACT_OCEANID_LOG : noob = "..noob.." | noob_heal = "..noob_heal)
ScriptLib.CreateMonster(context, {config_id=suites[noob_suite].monsters[1], level=noob_level, delay_time=0, server_global_value={["SGV_MONSTERAFFIX_OCEANID_02_ANIMALHEAL_UP"]=noob_heal,["SGV_MONSTERAFFIX_OCEANID_02_ANIMAL_DEATHEXPLODE"]=noob_bomb}})
ScriptLib.AddExtraGroupSuite(context, 0, 7)
ScriptLib.AddExtraGroupSuite(context, 0, 8)
ScriptLib.AddExtraGroupSuite(context, 0, 9)
ScriptLib.AddExtraGroupSuite(context, 0, 10)
ScriptLib.SetGroupTempValue(context, "SummonStep", 1, {})
return 0
end
function SLC_Platform_Shuffle(context)
ScriptLib.PrintContextLog(context, "## ACT_OCEANID_LOG : SLC_Shuffle")
LF_Random_Attack_Platform(context)
return 0
end
function SLC_Boss_Escape(context)
ScriptLib.PrintContextLog(context, "## oceanid escape")
return 0
end
---------------------------------------
Initialize()
---------------------------------------

View File

@@ -0,0 +1,100 @@
--[[
local vision_def = {
[1] = { enter = 100, leave = 101 },
[2] = { enter = 102, leave = 103 },
}
--]]
local Tri = {
{ name = "enter_region", config_id = 8000001, event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_region", trigger_count = 0, forbid_guest = false },
{ name = "leave_region", config_id = 8000002, event = EventType.EVENT_LEAVE_REGION, source = "", condition = "", action = "action_leave_region", trigger_count = 0, forbid_guest = false },
{ name = "variable_change", config_id = 8000003, event = EventType.EVENT_VARIABLE_CHANGE, source = "", condition = "", action = "action_variable_change", trigger_count = 0 }
}
function Initialize()
for i,v in ipairs(Tri) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
end
-----------------------------------------------------
function action_enter_region(context, evt)
local opt = ScriptLib.GetGroupTempValue(context, "optimize_"..context.uid, {})
if opt ~= 1 then
if opt == -1 then
ScriptLib.SetGroupTempValue(context, "optimize_"..context.uid, 0, {})
end
for k,v in pairs(vision_def) do
if evt.param1 == v.enter then
ScriptLib.AddPlayerGroupVisionType(context, {context.uid}, {k})
break
end
end
end
return 0
end
function action_leave_region(context, evt)
local opt = ScriptLib.GetGroupTempValue(context, "optimize_"..context.uid, {})
if opt ~= 1 then
if opt == -1 then
ScriptLib.SetGroupTempValue(context, "optimize_"..context.uid, 0, {})
end
for k,v in pairs(vision_def) do
if evt.param1 == v.leave then
ScriptLib.DelPlayerGroupVisionType(context, {context.uid}, {k})
break
end
end
end
return 0
end
function action_variable_change(context, evt)
if evt.param2 == 1 and evt.param1 == 0 then
local uid_list = ScriptLib.GetSceneUidList(context)
for i,v in ipairs(uid_list) do
if "optimize_"..v == evt.source_name then
LF_ReCalculate_VisionType(context, v)
end
end
end
return 0
end
function LF_ReCalculate_VisionType(context, uid)
local eid = ScriptLib.GetAvatarEntityIdByUid(context, uid)
local pos = ScriptLib.GetPosByEntityId(context, eid)
local vision = {1}
for k,v in pairs(vision_def) do
if LF_Check_Avatar_In_Region(context, pos, regions[v.leave]) == true then
table.insert(vision, k)
end
end
ScriptLib.SetPlayerGroupVisionType(context, {uid}, vision)
end
function LF_Check_Avatar_In_Region(context, pos, region)
ScriptLib.PrintContextLog(context, "## optimization : region_id = "..region.config_id)
if region.shape == RegionShape.SPHERE then
local X = pos.x - region.pos.x
local Y = pos.y - region.pos.y
local Z = pos.z - region.pos.z
if math.sqrt(X*X+Y*Y+Z*Z) > region.radius then
return false
else return true
end
elseif region.shape == RegionShape.CUBIC then
if math.abs(pos.x-region.pos.x) > region.size.x/2 then
return false
elseif math.abs(pos.y-region.pos.y) > region.size.y/2 then
return false
elseif math.abs(pos.z-region.pos.z) > region.size.z/2 then
return false
end
return true
end
return false
end
---------------------------------
Initialize()

View File

@@ -0,0 +1,359 @@
-- local ProgressTable = {0,10,100}
-- local GalleryID = 0
-- -- local SubScoreTimeAxis = {1}
-- local GroupID = 144004004
--misc
--自定义函数部分
local extrTriggers = {
initialtrigger = {
["Start_Gallery"] = { config_id = 8000001, name = "Start_Gallery", event= EventType.EVENT_GALLERY_START, source = "", condition = "", action = "action_whern_gallery_start", trigger_count = 0 },
--["GadgetSate_Change"] = { config_id = 8000002, name = "GadgetSate_Change", event= EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_gadgetstate_change", trigger_count = 0 },
["Progress_Pass"] = { config_id = 8000003, name = "Progress_Pass", event= EventType.EVENT_GALLERY_PROGRESS_PASS, source = "", condition = "", action = "action_progress_pass", trigger_count = 0 },
["TimeAxis_Event"] = { config_id = 8000004, name = "TimeAxis_Event", event= EventType.EVENT_TIME_AXIS_PASS, source = "SubScoreTimeAxis", condition = "", action = "action_trigger_timeaxis", trigger_count = 0 },
["Monster_Die"] = { config_id = 8000005, name = "Monster_Die", event= EventType.EVENT_MONSTER_DIE_BEFORE_LEAVE_SCENE, source = "", condition = "", action = "action_monster_die", trigger_count = 0 },
--["Const_Target"] = { config_id = 8000006, name = "Const_Target", event= EventType.EVENT_TIME_AXIS_PASS, source = "consttarget", condition = "", action = "action_timeaxis_consttarget", trigger_count = 0 },
["Random_Target"] = { config_id = 8000007, name = "Random_Target", event= EventType.EVENT_TIME_AXIS_PASS, source = "randomtarget", condition = "", action = "action_timeaxis_randomtarget", trigger_count = 0 },
--["Gadget_Die"] = { config_id = 8000006, name = "Gadget_Die", event= EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "", action = "action_gadget_die", trigger_count = 0 },
["Stop_Gallery"] = { config_id = 8000008, name = "Stop_Gallery", event= EventType.EVENT_GALLERY_STOP, source = "", condition = "", action = "action_whern_gallery_stop", trigger_count = 0 },
["Group_Unload"] = {name = "Group_Unload", config_id = 8000009, event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", condition = "", action = "action_group_will_unload", trigger_count = 0},
["Small_Region"] = { config_id = 9000001, name = "Small_Region", event= EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "player_in_optimizationRegion", trigger_count = 0, forbid_guest = false },
["Big_Region"] = { config_id = 9000002, name = "Big_Region", event= EventType.EVENT_LEAVE_REGION, source = "", condition = "", action = "player_leave_optimizationRegion", trigger_count = 0, forbid_guest = false },
}
}
local extrSuites = {
{
monsters = { },
gadgets = { },
regions = {smallRegion, bigRegion },
triggers = { "Small_Region","Big_Region"},
rand_weight = 100
}
}
--自定义函数部分
function MonsterAddScore(context)
-- 杀怪进度
ScriptLib.AddGalleryProgressScore(context, "ScoreProgress", GalleryID, 10)
--杀怪加分
ScriptLib.UpdatePlayerGalleryScore(context, GalleryID, {["monster_id"]=70350175, ["target_id"]=0})
return 0
end
function TargetAddScore(context)
local UidList = ScriptLib.GetSceneUidList(context)
-- 杀靶标进度
ScriptLib.AddGalleryProgressScore(context, "ScoreProgress", GalleryID, GadgetTargetScore)
--杀靶标加分
ScriptLib.PrintContextLog(context, "##SC LOG : uid == "..UidList[1])
ScriptLib.UpdatePlayerGalleryScore(context, GalleryID, {["uid"] = UidList[1], ["monster_id"]=0, ["target_id"]= 70350253})
return 0
end
function DeduplicationRandom( context, configIDList, randomNum )
math.randomseed(ScriptLib.GetServerTime(context))
local TempList = {}
for i,v in ipairs(configIDList) do
table.insert(TempList, v)
end
for i=1,randomNum do
local TempNum = math.random(#TempList)
ScriptLib.CreateGadget(context, { config_id = TempList[TempNum] })
table.remove(TempList, TempNum)
end
ScriptLib.ShowReminder(context, 600038)
return 0
end
--Event调用部分
function player_leave_optimizationRegion( context, evt )
ScriptLib.PrintContextLog(context, "##BD LOG : optimization Stop~~~~~ regionID == "..evt.param1)
if evt.param1 ~= bigRegion then
return 0
end
--优化结束
ScriptLib.PrintContextLog(context, "##BD LOG : optimization Stop!!!!!!!! uid == "..context.uid)
ScriptLib.ClearPlayerEyePoint(context, smallRegion)
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, {1})
ScriptLib.SetLimitOptimization(context, context.uid, false)
ScriptLib.SetGroupTempValue(context, "optimize_"..context.uid, 0, { group_id = 144002077})
return 0
end
function player_in_optimizationRegion( context, evt )
if evt.param1 ~= smallRegion then
return 0
end
ScriptLib.PrintContextLog(context, "##BD LOG : optimization Start uid == "..context.uid)
--优化部分
ScriptLib.SetPlayerEyePoint(context, smallRegion, bigRegion)
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, {0})
ScriptLib.SetLimitOptimization(context, context.uid, true)
ScriptLib.SetGroupTempValue(context, "optimize_"..context.uid, 1, { group_id = 144002077})
return 0
end
function action_timeaxis_randomtarget( context,evt )
math.randomseed(ScriptLib.GetServerTime(context))
local TargetConfigID = RandomTargetConfigID[math.random(#RandomTargetConfigID)]
ScriptLib.PrintContextLog(context, "##SC LOG : random target configID == "..TargetConfigID)
ScriptLib.ShowReminder(context, 600038)
ScriptLib.CreateGadget(context, { config_id = TargetConfigID })
return 0
end
function action_timeaxis_consttarget( context,evt )
math.randomseed(ScriptLib.GetServerTime(context))
local TempList = {}
for i,v in ipairs(ConstTargetConfigID) do
table.insert(TempList, v)
end
for i=1,2 do
local TempNum = math.random(#TempList)
ScriptLib.CreateGadget(context, { config_id = TempList[TempNum] })
table.remove(TempList, TempNum)
end
return 0
end
function action_monster_die( context,evt )
-- body
local UidList = ScriptLib.GetSceneUidList(context)
ScriptLib.PrintContextLog(context, "##SC LOG : monster entityID == "..evt.source_eid)
local MonsterID = ScriptLib.GetMonsterIdByEntityId(context, evt.source_eid)
ScriptLib.PrintContextLog(context, "##SC LOG : monsterID == "..MonsterID)
-- 杀怪进度
local MonsterScore = 0
for i,v in ipairs(MonsterTargetScore) do
if v.monsterID == MonsterID then
MonsterScore = v.score
break
end
end
ScriptLib.AddGalleryProgressScore(context, "ScoreProgress", GalleryID, MonsterScore)
--杀怪加分
ScriptLib.PrintContextLog(context, "##SC LOG : uid == "..UidList[1])
ScriptLib.UpdatePlayerGalleryScore(context, GalleryID, {["uid"] = UidList[1], ["monster_id"] = MonsterID, ["target_id"]=0})
return 0
end
function action_gadget_die( context,evt )
-- body
local UidList = ScriptLib.GetSceneUidList(context)
ScriptLib.PrintContextLog(context, "##SC LOG : gadget entityID == "..evt.source_eid)
-- 杀怪进度
ScriptLib.AddGalleryProgressScore(context, "ScoreProgress", GalleryID, 10)
--杀怪加分
ScriptLib.PrintContextLog(context, "##SC LOG : uid == "..UidList[1])
ScriptLib.UpdatePlayerGalleryScore(context, GalleryID, {["uid"] = UidList[1], ["monster_id"]=0, ["target_id"]= ScriptLib.GetGadgetIdByEntityId(context, evt.source_eid)})
return 0
end
function action_whern_gallery_start( context,evt )
ScriptLib.PrintContextLog(context, "##SC LOG : Gallery Start")
math.randomseed(ScriptLib.GetServerTime(context))
--优化suite开启
ScriptLib.AddExtraGroupSuite(context, GroupID, #suites)
--初始化扣分数值
ScriptLib.SetGroupTempValue(context, "SubNum", PerSecondSubScore[1], {})
--初始化两个靶标时间轴
--ScriptLib.InitTimeAxis(context, "consttarget", ConstTimeAxis, true)
ScriptLib.InitTimeAxis(context, "randomtarget", RandomTimeAxis[math.random(#RandomTimeAxis)], true)
--初始化一个热度条
ScriptLib.InitGalleryProgressScore(context, "ScoreProgress", GalleryID, ProgressTable, GalleryProgressScoreUIType.GALLERY_PROGRESS_SCORE_UI_TYPE_BUOYANT_COMBAT)
ScriptLib.AttachGalleryAbilityGroup(context, {}, GalleryID, 0)
if GalleryID == 8002 then
ScriptLib.SetGroupTempValue(context, "_phase", 0, {})
local uid_list = ScriptLib.GetSceneUidList(context)
ScriptLib.SetTeamEntityGlobalFloatValue(context, uid_list, "BuoyantCombat_Water_Level", 0.5)
end
--初始化一个定时器扣分
ScriptLib.InitTimeAxis(context, "SubScoreTimeAxis", SubScoreTimeAxis, true)
return 0
end
function action_whern_gallery_stop( context, evt )
if GalleryID == 8002 then
ScriptLib.SetGroupTempValue(context, "_phase", 0, {})
local uid_list = ScriptLib.GetSceneUidList(context)
ScriptLib.SetTeamEntityGlobalFloatValue(context, uid_list, "BuoyantCombat_Water_Level", 0.5)
end
--优化suite卸载
ScriptLib.RemoveEntityByConfigId(context, GroupID, EntityType.REGION, bigRegion)
ScriptLib.EndTimeAxis(context, "randomtarget")
ScriptLib.EndTimeAxis(context, "SubScoreTimeAxis")
ScriptLib.RefreshGroup(context, { group_id = GroupID, suite = 1 })
return 0
end
function action_group_will_unload( context, evt )
ScriptLib.PrintContextLog(context, "##SC LOG : optimization Group will unload")
--优化suite卸载
ScriptLib.RemoveEntityByConfigId(context, GroupID, EntityType.REGION, bigRegion)
ScriptLib.StopGallery(context, GalleryID, false)
return 0
end
function action_gadgetstate_change( context,evt )
-- if evt.param2 ~= TestEnterConfigID or evt.param1 ~= 201 then
-- return 0
-- end
-- ScriptLib.PrintContextLog(context, "##SC LOG : GadgetState Change GameStart")
-- --GM手段进入玩法
-- ScriptLib.StartGallery(context, GalleryID)
return 0
end
function action_progress_pass( context,evt )
-- 阶段变更后
local LastPhase = evt.param3+1
local CurPhase = evt.param1+1
ScriptLib.PrintContextLog(context, "##SC LOG : param1 =="..evt.param1.."param3 =="..evt.param3)
if CurPhase > #PerSecondSubScore then
CurPhase = #PerSecondSubScore
end
ScriptLib.SetGroupTempValue(context, "SubNum", PerSecondSubScore[CurPhase], {})
--水元素有bug,换一种新的做法,不替换abilityGroup,直接改GlobalValue
if GalleryID ~= 8002 then
if evt.param2 == 1 then
--阶段上升
for i= LastPhase+1, CurPhase do
ScriptLib.AttachGalleryAbilityGroup(context, {}, GalleryID, i-1)
end
ScriptLib.ShowReminder(context, 600034+CurPhase-1)
else
--阶段下降
for i= LastPhase-1, CurPhase do
ScriptLib.DelGalleryAbilityGroup(context, {}, GalleryID, i)
end
end
elseif GalleryID == 8002 then
ScriptLib.SetGroupTempValue(context, "_phase", evt.param1, {})
local ratio = 0.5
ScriptLib.PrintContextLog(context, "##SC LOG : Gallery is 8002")
if evt.param1 == 1 then
ratio = 1
elseif evt.param1 == 2 then
ratio = 2
elseif evt.param1 == 3 then
ratio = 4.5
end
local uid_list = ScriptLib.GetSceneUidList(context)
ScriptLib.SetTeamEntityGlobalFloatValue(context, uid_list, "BuoyantCombat_Water_Level", ratio)
end
return 0
end
function action_trigger_timeaxis( context,evt )
-- 扣分
local SubNum = ScriptLib.GetGroupTempValue(context, "SubNum", {})
ScriptLib.AddGalleryProgressScore(context, "ScoreProgress", GalleryID, SubNum)
return 0
end
function LF_Initialize_Group(triggers, suites)
for k,v in pairs(extrTriggers.initialtrigger) do
table.insert(triggers, v)
table.insert(suites[init_config.suite].triggers, v.name)
end
for i,v in ipairs(extrSuites) do
table.insert(suites, v)
end
return 0
end
--水元素断线重连有风险要slc辅助恢复
function SLC_Recover_BuoyantCombat_Water_Level(context)
local _p = ScriptLib.GetGroupTempValue(context, "_phase", {})
local ratio = 0.5
ScriptLib.PrintContextLog(context, "##SC LOG : SLC_Recover_BuoyantCombat_Water_Level | phase = ".._p)
if _p == 1 then
ratio = 1
elseif _p == 2 then
ratio = 2
elseif _p == 3 then
ratio = 4.5
end
ScriptLib.SetTeamEntityGlobalFloatValue(context, {context.uid}, "BuoyantCombat_Water_Level", ratio)
return 0
end
LF_Initialize_Group(triggers, suites)

View File

@@ -0,0 +1,148 @@
--[[
local defs = {
gadget_up = 1, --向上压板
gadget_down = 2, --向下压板
gadget_water = 7001, --水片
point_array = 400100010,
point_list = {1,2,3,4,5},
gadget_list = {1,2,3,4,5}, --刻痕
point_xz = {x=100,z=100}, --point坐标
point_y = {100,110,120,130,140}, --point坐标
start_level = 3, --初始水位
is_abnormal = 0,
abnormal_height = 90, --上涨高度
}
--]]
-------------------
local Tri = {
[1] = { name = "gadget_state_change", config_id = 8000001, event = EventType.EVENT_GADGET_STATE_CHANGE, source = "", condition = "", action = "action_gadget_state_change", trigger_count = 0 },
[2] = { name = "platform_reach_point", config_id = 8000002, event = EventType.EVENT_PLATFORM_REACH_POINT, source = "", condition = "", action = "action_platform_reach_point", trigger_count = 0 },
[3] = { name = "group_load", config_id = 8000003, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
[4] = { name = "group_refresh", config_id = 8000004, event = EventType.EVENT_GROUP_REFRESH, source = "", condition = "", action = "action_group_refresh", trigger_count = 0 },
[5] = { name = "variable_change", config_id = 8000005, event = EventType.EVENT_VARIABLE_CHANGE, source = "", condition = "", action = "action_variable_change", trigger_count = 0 }
}
local Var = {
[1] = { config_id=50000001,name = "Water_Level", value = 0, no_refresh = true },
[2] = { config_id=50000002,name = "tune", value = 0, no_refresh = true },
[3] = { config_id=50000003,name = "first_play", value = 1, no_refresh = true },
}
function Initialize()
for k,v in pairs(Tri) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
for k,v in pairs(Var) do
table.insert(variables, v)
end
end
--------------------------------------
function action_gadget_state_change(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : State_Change : "..evt.param2.." | "..evt.param3.." -> "..evt.param1)
if evt.param1 == 201 and evt.param3 == 0 then
local water = ScriptLib.GetGroupVariableValue(context, "Water_Level")
if evt.param2 == defs.gadget_up then
if water < #defs.point_list and 0 == ScriptLib.GetGroupTempValue(context, "motion", {}) then
LF_Modify_Water(context, water, 1)
end
elseif evt.param2 == defs.gadget_down and 0 == ScriptLib.GetGroupTempValue(context, "motion", {}) then
if water > 1 then
LF_Modify_Water(context, water, -1)
end
end
--elseif evt.param1 == 0 and evt.param3 == 201 then
-- if evt.param2 == defs.gadget_up or evt.param2 == defs.gadget_down then
-- LF_Check_Water_To_Motion(context, evt)
-- end
end
return 0
end
function action_platform_reach_point(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : Reach_Point | "..evt.param1.." | "..evt.param2)
local water = ScriptLib.GetGroupVariableValue(context, "Water_Level")
ScriptLib.ScenePlaySound(context, {play_pos = defs.audio_xyz, sound_name = defs.audio_list[water], play_type=1, is_broadcast=true})
ScriptLib.SetGroupTempValue(context, "motion", 0, {})
--if evt.param1 == defs.gadget_water then
-- LF_Check_Water_To_Motion(context, evt)
--end
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_list[water], 201)
ScriptLib.SetGroupVariableValue(context, "tune", water)
return 0
end
function action_group_load(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : Group_Load")
LF_Init_Water(context, evt)
return 0
end
function action_group_refresh(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : Group_Refresh")
LF_Init_Water(context, evt)
return 0
end
function action_variable_change(context, evt)
if evt.param1 == evt.param2 then
return -1
end
ScriptLib.PrintContextLog(context, "## TuneStone : Variable : "..evt.source_name.." : "..evt.param2.." -> "..evt.param1)
return 0
end
function LF_Init_Water(context, evt)
ScriptLib.PrintContextLog(context, "## TuneStone : LF_Init_Water")
--根据存档还原水位
local water = ScriptLib.GetGroupVariableValue(context, "Water_Level")
local pos = defs.point_xz
if defs.is_abnormal == 1 and 1 == ScriptLib.GetGroupVariableValue(context, "first_play") then
pos.y = defs.abnormal_height
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.gadget_water, pos, {x=0,y=0,z=0})
ScriptLib.SetGroupTempValue(context, "motion", 1, {})
ScriptLib.SetPlatformPointArray(context, defs.gadget_water, defs.point_array, {defs.point_list[defs.start_level]}, {route_type = 0, turn_mode = false})
ScriptLib.SetGroupVariableValue(context, "first_play", 0)
ScriptLib.SetGroupVariableValue(context, "Water_Level", defs.start_level)
return 0
end
if water == 0 then
water = defs.start_level
end
ScriptLib.SetGroupVariableValue(context, "Water_Level", water)
ScriptLib.SetGroupVariableValue(context, "tune", water)
pos.y = defs.point_y[water]
ScriptLib.CreateGadgetByConfigIdByPos(context, defs.gadget_water, pos, {x=0,y=0,z=0})
ScriptLib.SetGroupTempValue(context, "motion", 0, {})
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_list[water], 201)
return 0
end
function LF_Modify_Water(context, water, delta)
ScriptLib.PrintContextLog(context, "## TuneStone : LF_Modify_Water : level = "..water.." | delta = "..delta)
ScriptLib.SetGroupTempValue(context, "motion", 1, {})
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_list[water], 0)
--ScriptLib.ScenePlaySound(context, {play_pos = defs.audio_xyz, sound_name = defs.audio_list[water], play_type=2, is_broadcast=true})
local _water = water + delta
ScriptLib.SetGroupVariableValue(context, "Water_Level", _water)
ScriptLib.SetPlatformPointArray(context, defs.gadget_water, defs.point_array, {defs.point_list[_water]}, {route_type = 0, turn_mode = false})
end
function LF_Check_Water_To_Motion(context, evt)
local up_state = ScriptLib.GetGadgetStateByConfigId(context, 0, defs.gadget_up)
local down_state = ScriptLib.GetGadgetStateByConfigId(context, 0, defs.gadget_down)
local water = ScriptLib.GetGroupVariableValue(context, "Water_Level")
if up_state == 201 and down_state == 201 then
--跳过
elseif up_state == 201 and water < #defs.point_list then
LF_Modify_Water(context, water, 1)
water = water + 1
elseif down_state == 201 and water > 1 then
LF_Modify_Water(context, water, -1)
water = water - 1
end
ScriptLib.SetGadgetStateByConfigId(context, defs.gadget_list[water], 201)
ScriptLib.SetGroupVariableValue(context, "tune", water)
end
--------------------------------------
Initialize()

View File

@@ -0,0 +1,105 @@
--[[
local defs = {
group_id = xxx ,
monster_shaman = 1,
gadget_barrier = {1,2,3,4,5},
TowerBridges = {{3,4},{3,5}}
}
--]]
local Tri = {
[1] = { name = "any_monster_die", config_id = 8000001, event = EventType.EVENT_ANY_MONSTER_DIE, source = "", condition = "", action = "action_any_monster_die", trigger_count = 0 },
--[2] = { name = "blossom_progress_finish", config_id = 8000002, event = EventType.EVENT_BLOSSOM_PROGRESS_FINISH, source = "", condition= "", action = "action_blossom_progress_finish", trigger_count = 0 },
[3] = { name = "any_gadget_die", config_id = 8000003, event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "", action = "action_any_gadget_die", trigger_count = 0 },
[4] = { name = "group_load", config_id = 8000004, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "action_group_load", trigger_count = 0 },
[5] = { name = "group_refresh", config_id = 8000005, event = EventType.EVENT_GROUP_REFRESH, source = "", condition = "", action = "action_group_refresh", trigger_count = 0 }
}
local Var = {
{ config_id=50000001,name = "in_battle", value = 0, no_refresh = true },
{ config_id=50000002,name = "wave", value = 0, no_refresh = true }
}
function Initialize()
for k,v in pairs(Tri) do
table.insert(triggers, v)
table.insert(suites[1].triggers, v.name)
end
for k,v in pairs(Var) do
table.insert(variables, v)
end
end
----------------------------------
function action_any_monster_die(context, evt)
ScriptLib.AddBlossomScheduleProgressByGroupId(context, defs.group_id)
if evt.param1 == defs.monster_shaman then
for i,v in ipairs(defs.gadget_barrier) do
ScriptLib.KillEntityByConfigId(context, { config_id = v, entity_type = EntityType.GADGET})
end
end
if ScriptLib.GetGroupMonsterCountByGroupId(context, 0) ~= 0 then
return -1
end
local wave = ScriptLib.GetGroupVariableValue(context, "wave")
ScriptLib.PrintContextLog(context, "## VehicleBattle : wave = "..wave)
if wave == #suites - 1 then
ScriptLib.PrintContextLog(context, "## VehicleBattle : this is final wave ")
ScriptLib.SetBlossomScheduleStateByGroupId(context, defs.group_id, 3)
ScriptLib.RefreshBlossomGroup(context, { group_id = 0, suite = 1, exclude_prev = true, is_delay_unload = true})
ScriptLib.SetGroupVariableValue(context, "in_battle", 0)
else
ScriptLib.PrintContextLog(context, "## VehicleBattle : this is suite "..wave+2)
ScriptLib.AddExtraGroupSuite(context, 0, wave + 2)
ScriptLib.SetGroupVariableValue(context, "wave", wave + 1)
end
if #suites == 4 then
if wave == 1 then
ScriptLib.ShowReminderRadius(context, 400002, defs.point, 80)
elseif wave == 2 then
ScriptLib.ShowReminderRadius(context, 400003, defs.point, 80)
end
elseif #suites == 3 and wave == 1 then
ScriptLib.ShowReminderRadius(context, 400004, defs.point, 80)
end
return 0
end
function action_group_load(context, evt)
if 1 ~= ScriptLib.GetGroupVariableValue(context, "in_battle") then
ScriptLib.RefreshBlossomGroup(context, { group_id = 0, suite = 1, exclude_prev = true, is_delay_unload = true })
end
--LF_Init_Blossom_Group(context)
return 0
end
function action_group_refresh(context, evt)
LF_Init_Blossom_Group(context)
--ScriptLib.RefreshBlossomGroup(context, { group_id = 0, suite = 1, exclude_prev = true })
return 0
end
function action_any_gadget_die(context, evt)
if #defs.TowerBridges == 0 then
return -1
end
for i,v in ipairs(defs.TowerBridges) do
if evt.param1 == v[1] then
ScriptLib.KillEntityByConfigId(context, { config_id = v[2], entity_type = EntityType.GADGET})
end
end
return 0
end
function LF_Init_Blossom_Group(context)
ScriptLib.SetGroupVariableValue(context, "in_battle", 1)
ScriptLib.SetBlossomScheduleStateByGroupId(context, defs.group_id, 2)
for i=2,#suites do
ScriptLib.RemoveExtraGroupSuite(context, 0, i)
end
local ret = ScriptLib.SetGroupVariableValue(context, "wave", 1)
ScriptLib.PrintContextLog(context, "## VehicleBattle : set wave 1 ret = "..ret)
ScriptLib.AddExtraGroupSuite(context, 0, 2)
end
----------------------------------
Initialize()