mirror of
https://gitlab.com/YuukiPS/GC-Resources.git
synced 2025-04-28 09:05:26 +00:00
561 lines
27 KiB
Lua
561 lines
27 KiB
Lua
--ServerUploadTool Save to [/root/env/data/lua/common/V2_2]
|
||
--[[
|
||
local defs = {
|
||
region_Enter = 191004,
|
||
region_Leave = 191006
|
||
Boss = 222,
|
||
}
|
||
|
||
-- DEFS_MISCS
|
||
local Pursina = {
|
||
{191001,191008},
|
||
{191002,191009},
|
||
{191003,191007},
|
||
}
|
||
]]
|
||
--[[ 陈列室的key
|
||
2.2挖矿活动__完成boss挑战 Activity_PursinaChallenge_watcher_1
|
||
2.2挖矿活动__完成且保持桩子血量 Activity_PursinaChallenge_watcher_2
|
||
2.2挖矿活动__n分钟内完成挑战 Activity_PursinaChallenge_watcher_3
|
||
2.2挖矿活动__完成且中断特殊技能n次 Activity_PursinaChallenge_watcher_4
|
||
2.2挖矿活动__完成且击倒少于n次 Activity_PursinaChallenge_watcher_5
|
||
2.2挖矿活动__累计击破弱点n次 Activity_PursinaChallenge_watcher_6
|
||
]]
|
||
local RMD_HP_LOW = {600077,600090,600091}
|
||
local LOWPOWER_SPEED = 0 --低电量充能速度(千分比)
|
||
local MEDIUMPOWER_SPEED = 5 --中电量充能速度(千分比)
|
||
local HIGHPOWER_SPEED = 10 --高电量充能速度(千分比)
|
||
local GALLERY_ID = defs.gallery_id
|
||
local CHALLENGEID = 2002007
|
||
local CHALLENGEID_CHILD = 2001007
|
||
local Operator_Config_id = 0
|
||
local Watcher_Condition = { --watcher的条件,检测用
|
||
[1] = 1, --完成boss挑战【无用】
|
||
[2] = 50, --完成且保持所有桩子血量 填0~100
|
||
[3] = 180, --n秒内完成挑战 填秒数
|
||
[4] = 2, --完成且中断特殊技能n次 填次数
|
||
[5] = 2, --完成且击倒少于n次 填次数
|
||
[6] = 6, --已废弃
|
||
}
|
||
local temp_Variables = {
|
||
{ config_id=50000001,name = "IsFinished", value = 2, no_refresh = false }, --用于标识是否已完成,未开始为2,战斗中为0,完成后变1.
|
||
{ config_id=50000002,name = "Boss_Enhance", value = 0, no_refresh = false }, --用于标识是否狂暴,挑战开始时初始化为0,其他时候由ServerLuaCall控制
|
||
{ config_id=50000003,name = "Active_Count", value = 0, no_refresh = false }, --用于表示当前运行中挖掘器数量。(0~3)
|
||
{ config_id=50000004,name = "test_quickFinish", value = 0, no_refresh = false }, --快速完成
|
||
{ config_id=50000005,name = "Boss_SetBattle", value = 0, no_refresh = false }, --快速完成
|
||
}
|
||
local Tirgger_Start = {
|
||
{ name = "1", config_id = 9000001, event = EventType.EVENT_SELECT_OPTION, source = "", condition = "", action = "Finteract",trigger_count = 0},
|
||
{ name = "2", config_id = 9000002, event = EventType.EVENT_TIME_AXIS_PASS, source = "tick", condition = "", action = "tick",trigger_count = 0},
|
||
{ name = "3", config_id = 9000003, event = EventType.EVENT_GALLERY_STOP, source = "", condition = "", action = "gallerytimeout",trigger_count = 0},
|
||
{ name = "4", config_id = 9000004, event = EventType.EVENT_GROUP_LOAD, source = "", condition = "", action = "groupLoad",trigger_count = 0},
|
||
{ name = "5", config_id = 9000005, event = EventType.EVENT_GROUP_REFRESH, source = "", condition = "", action = "groupRefresh",trigger_count = 0},
|
||
{ name = "6", config_id = 9000006, event = EventType.EVENT_GADGET_CREATE, source = "", condition = "", action = "SetOptionToOperator",trigger_count = 0},
|
||
{ name = "7", config_id = 9000007, event = EventType.EVENT_LEAVE_REGION, source = "1", condition = "", action = "leaveRegion",trigger_count = 0},
|
||
{ name = "8", config_id = 9000008, event = EventType.EVENT_ANY_GADGET_DIE, source = "", condition = "", action = "gadgetDie",trigger_count = 0},
|
||
{ name = "9", config_id = 9000009, event = EventType.EVENT_TIME_AXIS_PASS, source = "watcher3", condition = "", action = "action_watcher3",trigger_count = 0},
|
||
{ name = "10", config_id = 9000010, event = EventType.EVENT_TIME_AXIS_PASS, source = "refreshgroup", condition = "", action = "action_refreshgroup",trigger_count = 0},
|
||
{ name = "11", config_id = 9000011, event = EventType.EVENT_VARIABLE_CHANGE, source = "IsFinished", condition = "condition_EndGameCheck", action = "action_EndGame",tag = "1000",trigger_count = 0},
|
||
{ name = "12", config_id = 9000012, event = EventType.EVENT_VARIABLE_CHANGE, source = "test_quickFinish", condition = "", action = "test_quickFinish",trigger_count = 0},
|
||
{ name = "13", config_id = 9000013, event = EventType.EVENT_VARIABLE_CHANGE, source = "Boss_SetBattle", condition = "", action = "action_Boss_SetBattle",trigger_count = 1},
|
||
{ name = "14", config_id = 9000014, event = EventType.EVENT_VARIABLE_CHANGE, source = "Active_Count", condition = "", action = "action_Active_Count",trigger_count = 0},
|
||
{ name = "15", config_id = 9000015, event = EventType.EVENT_ENTER_REGION, source = "1", condition = "", action = "enterRegion",trigger_count = 0},
|
||
{ name = "16", config_id = 9000016, event = EventType.EVENT_SCENE_MP_PLAY_ALL_AVATAR_DIE, source = "", condition = "", action = "action_ALL_AVATAR_DIE",trigger_count = 0},
|
||
{ name = "17", config_id = 9000017, event = EventType.EVENT_TIME_AXIS_PASS, source = "reminder", condition = "", action = "action_showReminder",trigger_count = 0},
|
||
{ name = "18", config_id = 9000018, event = EventType.EVENT_TIME_AXIS_PASS, source = "CreateBoss", condition = "", action = "action_CreateBoss",trigger_count = 0},
|
||
|
||
}
|
||
function action_CreateBoss(context,evt)
|
||
ScriptLib.PrintContextLog(context,"【[action_CreateBoss]】evt.param1 = ".. evt.param1)
|
||
local result = ScriptLib.CreateMonster(context, {config_id = defs.Boss, delay_time = 0})
|
||
ScriptLib.SetGadgetStateByConfigId(context, Pursina[1][1], GadgetState.Default)
|
||
ScriptLib.SetGadgetStateByConfigId(context, Pursina[2][1], GadgetState.Default)
|
||
ScriptLib.SetGadgetStateByConfigId(context, Pursina[3][1], GadgetState.Default)
|
||
if evt.param1 == 1 then
|
||
for k,v in pairs(gadgets) do
|
||
if v.gadget_id == 70800055 then
|
||
ScriptLib.CreateGadget(context,{config_id = v.config_id})
|
||
end
|
||
if v.gadget_id == 70800054 then
|
||
ScriptLib.SetWorktopOptionsByGroupId(context, ScriptLib.GetContextGroupId(context), v.config_id,{175})
|
||
ScriptLib.SetGroupTempValue(context,"Operator_Config_id",v.config_id,{})
|
||
end
|
||
end
|
||
end
|
||
ScriptLib.PrintContextLog(context,"【[action_CreateBoss]】result = " .. result)
|
||
return 0
|
||
end
|
||
function action_showReminder(context,evt)
|
||
ScriptLib.PrintContextLog(context,"【[action_showReminder]】")
|
||
ScriptLib.ShowReminder(context,600073)
|
||
return 0
|
||
end
|
||
function log_ActivityDig_2(context,result) --胜负结果 & 失败原因 埋点
|
||
ScriptLib.PrintContextLog(context,"【[log_ActivityDig_2]】"..result)
|
||
--埋点
|
||
local hp1=ScriptLib.GetGroupTempValue(context, "HP_1",{})
|
||
local hp2=ScriptLib.GetGroupTempValue(context, "HP_2",{})
|
||
local hp3=ScriptLib.GetGroupTempValue(context, "HP_3",{})
|
||
ScriptLib.MarkGroupLuaAction(context, "ActivityDig_2",ScriptLib.GetGalleryTransaction(context, GALLERY_ID) , {["result"] = result,["left_hp1"]=hp1,["left_hp2"]=hp2,["left_hp3"]=hp3})
|
||
return 0
|
||
end
|
||
function action_ALL_AVATAR_DIE(context,evt)
|
||
ScriptLib.PrintContextLog(context,"【[action_ALL_AVATAR_DIE]】")
|
||
log_ActivityDig_2(context,3)
|
||
return 0
|
||
end
|
||
function enterRegion(context,evt)
|
||
ScriptLib.PrintContextLog(context,"【[enterRegion]】")
|
||
if evt.param1 == defs.region_Enter then
|
||
ScriptLib.ForbidPlayerRegionVision(context, context.uid)
|
||
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, {0})
|
||
end
|
||
return 0
|
||
end
|
||
function action_Active_Count(context,evt) --纯reminder 用 无逻辑
|
||
if defs.Boss ~= nil then
|
||
if evt.param1 == 2 and evt.param1 > evt.param2 then ScriptLib.ShowReminder(context,600081) end
|
||
if evt.param1 == 3 and evt.param1 > evt.param2 then ScriptLib.ShowReminder(context,600080) end
|
||
end
|
||
return 0
|
||
end
|
||
function action_Boss_SetBattle(context,evt)
|
||
local groupID = ScriptLib.GetContextGroupId(context)
|
||
--if defs.Boss ~= nil then ScriptLib.SetMonsterBattleByGroup(context, defs.Boss, groupID) end --LD负责通知进战
|
||
if defs.Boss ~= nil then
|
||
--给血量物件增加血量modifier
|
||
ScriptLib.PrintContextLog(context, "【[find3digger]】defs.Boss ~= nil")
|
||
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {Pursina[1][2]}, "Upgrade_HP", 1)
|
||
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {Pursina[2][2]}, "Upgrade_HP", 1)
|
||
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {Pursina[3][2]}, "Upgrade_HP", 1)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function test_quickFinish(context,evt)
|
||
finishPlay(context)
|
||
return 0
|
||
end
|
||
function condition_EndGameCheck(context,evt)
|
||
ScriptLib.PrintContextLog(context,"【onEndGameCheck】")
|
||
if evt.param1 == 1 then return true end
|
||
return false
|
||
end
|
||
function action_EndGame(context,evt)--只用来触发挑战,同时关gallery
|
||
ScriptLib.PrintContextLog(context,"【EndGame】")
|
||
ScriptLib.StopGallery(context,GALLERY_ID,true)
|
||
return 0
|
||
end
|
||
function action_refreshgroup(context,evt)
|
||
local groupID = ScriptLib.GetContextGroupId(context)
|
||
ScriptLib.RefreshGroup(context, { group_id = groupID, suite = init_config.suite})
|
||
return 0
|
||
end
|
||
|
||
function action_watcher3(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[action_watcher3]】")
|
||
ScriptLib.SetGroupTempValue(context,"watcher3",1,{})
|
||
return 0
|
||
end
|
||
|
||
function gadgetDie(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[gadgetDie]】")
|
||
for i = 1 , #Pursina do
|
||
if evt.param1 == Pursina[i][2] then
|
||
log_ActivityDig_2(context,1)
|
||
fail(context)
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
function leaveRegion(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[leaveRegion]】")
|
||
if evt.param1 == defs.region_Leave then
|
||
ScriptLib.PrintContextLog(context, "【[leaveRegion]】2")
|
||
ScriptLib.RevertPlayerRegionVision(context, context.uid)
|
||
ScriptLib.SetPlayerGroupVisionType(context, {context.uid}, {1})
|
||
if ScriptLib.GetGroupVariableValue(context,"IsFinished") == 0 then --该then内为 未完成玩法时离开region时执行的操作
|
||
log_ActivityDig_2(context,4)
|
||
fail(context)
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
function fail(context) --离场、超时后执行。关tick、关gallery、标记玩法结束、refresh
|
||
ScriptLib.PrintContextLog(context, "【[fail]】")
|
||
ScriptLib.EndTimeAxis(context, "tick")
|
||
--标识回到未开始状态
|
||
ScriptLib.SetGroupVariableValue(context, "IsFinished", 2)
|
||
local groupID = ScriptLib.GetContextGroupId(context)
|
||
-- 停止标识为"looptime"的时间轴【LD需求】
|
||
ScriptLib.EndTimeAxis(context, "looptime")
|
||
ScriptLib.StopGallery(context,GALLERY_ID,false)
|
||
ScriptLib.EndFatherChallenge(context, CHALLENGEID)
|
||
--让他清理残留gadget
|
||
ScriptLib.SetEntityServerGlobalValueByConfigId(context, Operator_Config_id, "SGV_Try_Clean_Gadgets", 1.0)
|
||
ScriptLib.RefreshGroup(context, { group_id = groupID, suite = init_config.suite})
|
||
end
|
||
--gadget创建时,如果是挑战操作台,增加挑战选项。
|
||
function SetOptionToOperator(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[SetOptionToOperator]】")
|
||
if evt.param2 == 70350082 or evt.param2 == 70800055 then
|
||
ScriptLib.SetWorktopOptions(context, {175})
|
||
ScriptLib.SetGroupTempValue(context,"Operator_Config_id",evt.param1,{})
|
||
end
|
||
return 0
|
||
end
|
||
--设置挖掘桩的state为201、给他们创建血量物件、给他们创建billboard
|
||
function find3digger(context)
|
||
ScriptLib.PrintContextLog(context, "【[find3digger]】")
|
||
if Pursina == nil then ScriptLib.PrintContextLog(context, "【LD请注意:】未在DEFS_MISCS中找到table:Pursina") end
|
||
for i = 1 , #Pursina do
|
||
ScriptLib.SetGadgetStateByConfigId(context, Pursina[i][1], GadgetState.GearStart)
|
||
ScriptLib.CreateGadget(context, {config_id = Pursina[i][2]})
|
||
ScriptLib.CreateGadget(context, {config_id = 888880 + i})
|
||
ScriptLib.InitGalleryProgressScore(context, "digProgress".. i - 1, GALLERY_ID, {0,100}, GalleryProgressScoreUIType.GALLERY_PROGRESS_SCORE_UI_TYPE_DIG,GalleryProgressScoreType.GALLERY_PROGRESS_SCORE_NONE)
|
||
ScriptLib.SetGroupTempValue(context, "FinishPursina_"..i,0,{})
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function groupLoad(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[groupLoad]】")
|
||
ScriptLib.InitTimeAxis(context,"CreateBoss",{1},false)
|
||
return 0
|
||
end
|
||
function groupRefresh(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[groupRefresh]】[2021_7_29_171549]")
|
||
ScriptLib.EndTimeAxis(context, "refreshgroup")
|
||
ScriptLib.StopGallery(context,GALLERY_ID,false)
|
||
ScriptLib.EndFatherChallenge(context, CHALLENGEID)
|
||
ScriptLib.InitTimeAxis(context,"CreateBoss",{1},false)
|
||
return 0
|
||
end
|
||
|
||
function Finteract(context, evt)
|
||
if evt.param2 == 175 then
|
||
local groupID = ScriptLib.GetContextGroupId(context)
|
||
--boss专用:设置进战、初始化watcher
|
||
if defs.Boss ~= nil then
|
||
ScriptLib.PrintContextLog(context, "【[bOSS]1】")
|
||
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {defs.Boss}, "isFinalChallenge", 1)
|
||
ScriptLib.SetGroupTempValue(context,"watcher2",0,{})
|
||
ScriptLib.SetGroupTempValue(context,"watcher3",0,{}) --代表耗时是否能完成watcher
|
||
ScriptLib.InitTimeAxis(context, "watcher3", {Watcher_Condition[3]}, false) --限时watcher用
|
||
ScriptLib.SetGroupTempValue(context,"watcher4",0,{}) --代表中断特殊技能多少次
|
||
ScriptLib.SetGroupTempValue(context,"watcher5",0,{}) --代表boss被击倒多少次
|
||
ScriptLib.SetGroupTempValue(context,"watcher6",0,{}) --代表boss被击破弱点多少次
|
||
ScriptLib.SetEntityServerGlobalValueByConfigId(context, Pursina[1][1], "SGV_NeedCollider", 1.0)--打开ScenePropCollider(激光用)
|
||
ScriptLib.SetEntityServerGlobalValueByConfigId(context, Pursina[2][1], "SGV_NeedCollider", 1.0)--打开ScenePropCollider(激光用)
|
||
ScriptLib.SetEntityServerGlobalValueByConfigId(context, Pursina[3][1], "SGV_NeedCollider", 1.0)--打开ScenePropCollider(激光用)
|
||
end
|
||
--初始化LD用变量
|
||
ScriptLib.SetGroupVariableValue(context, "IsFinished", 0)
|
||
ScriptLib.SetGroupVariableValue(context, "Boss_Enhance", 0)
|
||
ScriptLib.SetGroupVariableValue(context, "Active_Count", 0)
|
||
--初始化TD用变量
|
||
ScriptLib.SetGroupTempValue(context,"FinishPursinaCount",0,{}) --已经挖完多少个
|
||
ScriptLib.SetGroupTempValue(context,"HP_1",100,{}) --初始血量1
|
||
ScriptLib.SetGroupTempValue(context,"HP_2",100,{}) --初始血量2
|
||
ScriptLib.SetGroupTempValue(context,"HP_3",100,{}) --初始血量3
|
||
ScriptLib.SetGroupTempValue(context,"Progress_To_Add_1",0,{}) --挖掘进度中转变量
|
||
ScriptLib.SetGroupTempValue(context,"Progress_To_Add_2",0,{}) --挖掘进度中转变量
|
||
ScriptLib.SetGroupTempValue(context,"Progress_To_Add_3",0,{}) --挖掘进度中转变量
|
||
|
||
-- 卸载操作台
|
||
if defs.Boss == nil then ScriptLib.SetGadgetStateByConfigId(context, evt.param1, GadgetState.GearStart) end
|
||
ScriptLib.DelWorktopOptionByGroupId(context, groupID, evt.param1, 175)
|
||
--gallery+challenge同开同关
|
||
local uid = ScriptLib.GetSceneUidList(context)
|
||
ScriptLib.SetPlayerStartGallery(context, GALLERY_ID, {uid[1]})
|
||
ScriptLib.CreateFatherChallenge(context,CHALLENGEID,CHALLENGEID,99999999, {success=1, fail=1,fail_on_wipe=false})
|
||
ScriptLib.StartFatherChallenge(context, CHALLENGEID)
|
||
ScriptLib.AttachChildChallenge(context,CHALLENGEID,CHALLENGEID_CHILD,CHALLENGEID_CHILD,{3,1000,1},{uid[1]},{success=1, fail=1})
|
||
--标记挖掘桩,设置为201
|
||
find3digger(context)
|
||
-- 创建标识为"tick",时间节点为{1}的时间轴,true用于控制该时间轴是否循环
|
||
ScriptLib.InitTimeAxis(context, "tick", {1}, true)
|
||
--5秒后显示reminder
|
||
ScriptLib.InitTimeAxis(context, "reminder", {6}, false)
|
||
end
|
||
return 0
|
||
end
|
||
function tick(context,evt)--每tick计算进度 "Progress_To_Add_"..i
|
||
local FinishPursina = {}
|
||
for i = 1, #Pursina do
|
||
FinishPursina[i] = ScriptLib.GetGroupTempValue(context,"FinishPursina_"..i,{})
|
||
if FinishPursina[i] ~= 1 then
|
||
local Progress_wait_for_Add = ScriptLib.GetGroupTempValue(context, "Progress_To_Add_"..i,{}) --取当前待增加进度
|
||
if Progress_wait_for_Add >= 10 then
|
||
local real_add = math.floor(Progress_wait_for_Add/10)
|
||
ScriptLib.AddGalleryProgressScore(context, "digProgress"..i-1, GALLERY_ID, real_add)
|
||
ScriptLib.SetGroupTempValue(context,"Progress_To_Add_"..i,Progress_wait_for_Add - real_add*10,{})
|
||
|
||
local nowProgress = ScriptLib.GetGalleryProgressScore(context,"digProgress".. i-1,GALLERY_ID)
|
||
if nowProgress >= 100 then
|
||
local groupID = ScriptLib.GetContextGroupId(context)
|
||
ScriptLib.SetGadgetStateByConfigId(context,Pursina[i][1], GadgetState.GearAction1)
|
||
ScriptLib.RemoveEntityByConfigId(context, groupID, EntityType.GADGET, Pursina[i][2])
|
||
ScriptLib.RemoveEntityByConfigId(context, groupID, EntityType.GADGET, 888880+i)
|
||
ScriptLib.SetGroupTempValue(context, "FinishPursina_"..i,1,{})
|
||
end
|
||
end
|
||
end
|
||
end
|
||
if FinishPursina[1] == 1 and FinishPursina[2] == 1 and FinishPursina[3] == 1 then
|
||
finishPlay(context)
|
||
end
|
||
return 0
|
||
end
|
||
function finishPlay(context)
|
||
ScriptLib.PrintContextLog(context, "【[finishPlay]】")
|
||
ScriptLib.EndTimeAxis(context, "tick")
|
||
local groupID = ScriptLib.GetContextGroupId(context)
|
||
--标识设为1
|
||
ScriptLib.SetGroupVariableValue(context, "IsFinished", 1)
|
||
-- 停止标识为"looptime"的时间轴【LD需求】
|
||
ScriptLib.EndTimeAxis(context, "looptime")
|
||
--让他清理残留gadget
|
||
if Operator_Config_id ~= 0 then
|
||
ScriptLib.SetEntityServerGlobalValueByConfigId(context, Operator_Config_id, "SGV_Try_Clean_Gadgets", 1.0)
|
||
end
|
||
--中间操作台特效关掉
|
||
ScriptLib.SetGadgetStateByConfigId(context, ScriptLib.GetGroupTempValue(context,"Operator_Config_id",{}), GadgetState.GearStop)
|
||
--处理watcher
|
||
local uid = ScriptLib.GetSceneUidList(context)
|
||
local groupID = ScriptLib.GetContextGroupId(context)
|
||
if defs.Boss ~= nil then
|
||
--杀死boss
|
||
ScriptLib.AddEntityGlobalFloatValueByConfigId(context, {defs.Boss}, "Monster_Konungmathr_None_RealDie_Label", 1)
|
||
--2.2挖矿活动__完成
|
||
ScriptLib.AddExhibitionAccumulableData(context, uid[1], "Activity_PursinaChallenge_watcher_1",1)
|
||
--2.2挖矿活动__完成且所有光钉血量高于xx
|
||
if ScriptLib.GetGroupTempValue(context,"watcher2",{}) == 0 then
|
||
ScriptLib.AddExhibitionAccumulableData(context, uid[1], "Activity_PursinaChallenge_watcher_2", 1)
|
||
end
|
||
--2.2挖矿活动__特定时间内完成
|
||
local temp_result = ScriptLib.GetGroupTempValue(context,"watcher3",{})
|
||
if temp_result ~= 1 then
|
||
ScriptLib.AddExhibitionAccumulableData(context, uid[1], "Activity_PursinaChallenge_watcher_3", 1)
|
||
ScriptLib.PrintContextLog(context, "[通关成就]特定时间内完成")
|
||
end
|
||
--[[ --2.2挖矿活动__完成且中断特殊技能n次
|
||
local temp_result = ScriptLib.GetGroupTempValue(context,"watcher4",{})
|
||
ScriptLib.PrintContextLog(context, "[通关计数]中断特殊技能".. temp_result.. "次")
|
||
if temp_result >= Watcher_Condition[4] then
|
||
ScriptLib.AddExhibitionAccumulableData(context, uid[1], "Activity_PursinaChallenge_watcher_4", 1)
|
||
end ]]
|
||
--2.2挖矿活动__完成且击倒boss不少于n次
|
||
local temp_result = ScriptLib.GetGroupTempValue(context,"watcher5",{})
|
||
ScriptLib.PrintContextLog(context, "[通关计数]击倒boss".. temp_result.. "次")
|
||
if temp_result >= Watcher_Condition[5] then
|
||
ScriptLib.AddExhibitionAccumulableData(context, uid[1], "Activity_PursinaChallenge_watcher_5", 1)
|
||
end
|
||
--2.2挖矿活动__完成且未击倒boss
|
||
if temp_result == 0 then
|
||
ScriptLib.AddExhibitionAccumulableData(context, uid[1], "Activity_PursinaChallenge_watcher_4", 1)
|
||
end
|
||
--完成后,等待一段时间refreshgroup
|
||
ScriptLib.InitTimeAxis(context, "refreshgroup", {15}, false)
|
||
else
|
||
ScriptLib.AddExhibitionAccumulableData(context, uid[1], "Activity_Pursina_Group_".. groupID,1)
|
||
ScriptLib.FinishGroupLinkBundle(context, groupID)
|
||
end
|
||
|
||
log_ActivityDig_2(context,0)
|
||
return 0
|
||
end
|
||
function gallerytimeout(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[gallerytimeout]】")
|
||
ScriptLib.PrintContextLog(context, "【[gallerytimeout]】evt.param1="..evt.param1)
|
||
ScriptLib.PrintContextLog(context, "【[gallerytimeout]】evt.param2="..evt.param2)
|
||
ScriptLib.PrintContextLog(context, "【[gallerytimeout]】GALLERY_ID="..GALLERY_ID)
|
||
if evt.param1 == GALLERY_ID and evt.param2 == 0 then
|
||
if evt.param3 == 1 then
|
||
ScriptLib.PrintContextLog(context, "【[gallerytimeout]】evt.param3="..evt.param3)
|
||
--埋点
|
||
log_ActivityDig_2(context,2)
|
||
end
|
||
fail(context)
|
||
end
|
||
return 0
|
||
end
|
||
function action_HPChange_1(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[action_HPChange_1]】")
|
||
ScriptLib.SetGroupTempValue(context,"HP_1",evt.param3,{})
|
||
if evt.param3 < 20 then ScriptLib.ShowReminder(context,RMD_HP_LOW[1]) end
|
||
if evt.param3 < Watcher_Condition[2] then ScriptLib.SetGroupTempValue(context,"watcher2",1,{}) end
|
||
return 0
|
||
end
|
||
function action_HPChange_2(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[action_HPChange_2]】")
|
||
ScriptLib.SetGroupTempValue(context,"HP_2",evt.param3,{})
|
||
if evt.param3 < 20 then ScriptLib.ShowReminder(context,RMD_HP_LOW[2]) end
|
||
if evt.param3 < Watcher_Condition[2] then ScriptLib.SetGroupTempValue(context,"watcher2",1,{}) end
|
||
return 0
|
||
end
|
||
function action_HPChange_3(context,evt)
|
||
ScriptLib.PrintContextLog(context, "【[action_HPChange_3]】")
|
||
ScriptLib.SetGroupTempValue(context,"HP_3",evt.param3,{})
|
||
if evt.param3 < 20 then ScriptLib.ShowReminder(context,RMD_HP_LOW[3]) end
|
||
if evt.param3 < Watcher_Condition[2] then ScriptLib.SetGroupTempValue(context,"watcher2",1,{}) end
|
||
return 0
|
||
end
|
||
--以下为ServerLuaCall函数。
|
||
function AddProgress_LowPower(context)
|
||
local configID = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
|
||
for i = 1 , #Pursina do
|
||
if configID ==Pursina[i][1] then
|
||
ScriptLib.ChangeGroupTempValue(context,"Progress_To_Add_"..i, LOWPOWER_SPEED,{})
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
function AddProgress_MediumPower(context)
|
||
local configID = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
|
||
for i = 1 , #Pursina do
|
||
if configID ==Pursina[i][1] then
|
||
ScriptLib.ChangeGroupTempValue(context,"Progress_To_Add_"..i, MEDIUMPOWER_SPEED,{})
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
function AddProgress_HighPower(context)
|
||
local configID = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
|
||
for i = 1 , #Pursina do
|
||
if configID ==Pursina[i][1] then
|
||
ScriptLib.ChangeGroupTempValue(context,"Progress_To_Add_"..i, HIGHPOWER_SPEED,{})
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
function LowPower(context)
|
||
ScriptLib.PrintContextLog(context, "【[LowPower]】")
|
||
local configID = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
|
||
ScriptLib.MarkGroupLuaAction(context, "ActivityDig_3",ScriptLib.GetGalleryTransaction(context, GALLERY_ID), {["Pursina_ID"] = configID,["change_type"]=4})
|
||
return 0
|
||
end
|
||
function MediumPower(context)
|
||
ScriptLib.PrintContextLog(context, "【[MediumPower]】")
|
||
local configID = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
|
||
ScriptLib.MarkGroupLuaAction(context, "ActivityDig_3",ScriptLib.GetGalleryTransaction(context, GALLERY_ID) , {["Pursina_ID"] = configID,["change_type"]=3})
|
||
return 0
|
||
end
|
||
function HighPower(context)
|
||
ScriptLib.PrintContextLog(context, "【[HighPower]】")
|
||
local configID = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
|
||
if defs.Boss ~= nil then ScriptLib.SetGroupVariableValue(context, "Boss_SetBattle", 1) end
|
||
ScriptLib.MarkGroupLuaAction(context, "ActivityDig_3",ScriptLib.GetGalleryTransaction(context, GALLERY_ID), {["Pursina_ID"] = configID,["change_type"]=2})
|
||
return 0
|
||
end
|
||
|
||
function SLC_ShowUI(context)
|
||
ScriptLib.PrintContextLog(context, "【[SLC_ShowUI]】")
|
||
local configID = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
|
||
for i = 1, #Pursina do
|
||
if Pursina[i][2] == configID then ScriptLib.CreateGadget(context, {config_id = 888880 + i}) end
|
||
end
|
||
return 0
|
||
end
|
||
function SLC_HideUI(context)
|
||
ScriptLib.PrintContextLog(context, "【[SLC_HideUI]】")
|
||
local configID = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
|
||
local groupID = ScriptLib.GetContextGroupId(context)
|
||
for i = 1, #Pursina do
|
||
if Pursina[i][2] == configID then ScriptLib.RemoveEntityByConfigId(context, groupID, EntityType.GADGET, 888880+i) end
|
||
end
|
||
return 0
|
||
end
|
||
function ServerLuaCall_Pursina_Start(context)--桩子物件用,用于当前激活桩子的计数,顺便埋个点
|
||
ScriptLib.ChangeGroupVariableValue(context, "Active_Count", 1)
|
||
ScriptLib.MarkGroupLuaAction(context, "ActivityDig_3",ScriptLib.GetGalleryTransaction(context, GALLERY_ID), {["Pursina_ID"] = configID,["change_type"]=1})
|
||
return 0
|
||
end
|
||
function ServerLuaCall_Pursina_End(context)--桩子物件用,用于当前激活桩子的计数
|
||
ScriptLib.ChangeGroupVariableValue(context, "Active_Count", -1)
|
||
return 0
|
||
end
|
||
function ServerLuaCall_Enhance_Start(context)--事件[Boss狂暴开始]供战斗组的ServerLuaCall调用
|
||
ScriptLib.SetGroupVariableValue(context, "Boss_Enhance", 1)
|
||
ScriptLib.ShowReminder(context,600083)
|
||
return 0
|
||
end
|
||
function ServerLuaCall_Enhance_End(context)--事件[Boss狂暴结束]供战斗组的ServerLuaCall调用
|
||
ScriptLib.SetGroupVariableValue(context, "Boss_Enhance", 0)
|
||
return 0
|
||
end
|
||
function watcher4_count(context)--事件[中断特殊技能]供战斗组的ServerLuaCall调用
|
||
ScriptLib.PrintContextLog(context, "【[watcher4_count]】")
|
||
ScriptLib.ChangeGroupTempValue(context, "watcher4", 1, {})
|
||
return 0
|
||
end
|
||
function watcher5_count(context)--事件[击倒]供战斗组的ServerLuaCall调用
|
||
ScriptLib.PrintContextLog(context, "【[watcher5_count]】")
|
||
ScriptLib.ChangeGroupTempValue(context, "watcher5", 1, {})
|
||
ScriptLib.ShowReminder(context,600078)
|
||
return 0
|
||
end
|
||
function watcher6_count(context)--事件[击破弱点]供战斗组的ServerLuaCall调用 【直接add陈列室,因为不用局内计算 而是累计值】
|
||
ScriptLib.PrintContextLog(context, "【[watcher6_count]】")
|
||
local uid = ScriptLib.GetSceneUidList(context)
|
||
ScriptLib.AddExhibitionAccumulableData(context, uid[1], "Activity_PursinaChallenge_watcher_6", 1)
|
||
return 0
|
||
end
|
||
function ChargeBarChange(context)
|
||
ScriptLib.PrintContextLog(context, "【[ChargeBarChange]】")
|
||
|
||
return 0
|
||
end
|
||
|
||
function Initialize()
|
||
--加触发器
|
||
for k,v in pairs(Tirgger_Start) do
|
||
table.insert(triggers, v)
|
||
table.insert(suites[1].triggers, v.name)
|
||
end
|
||
for k,v in pairs(Pursina) do --根据桩子数量创建监控桩子血量的触发器
|
||
table.insert(triggers,{ name = "HP"..k, config_id = 8000000+k, event = EventType.EVENT_SPECIFIC_GADGET_HP_CHANGE, source = tostring(Pursina[k][2]), condition = "", action = "action_HPChange_"..k,trigger_count = 0})
|
||
table.insert(suites[1].triggers, "HP"..k)
|
||
end
|
||
--加变量
|
||
for k,v in pairs(temp_Variables) do
|
||
table.insert(variables,v)
|
||
end
|
||
--调整血量物件位置
|
||
for k,v in pairs(gadgets) do
|
||
for k2,v2 in pairs(Pursina) do
|
||
if v.config_id == v2[2] then
|
||
for k3,v3 in pairs(gadgets) do
|
||
if v3.config_id == v2[1] then v.pos = v3.pos end
|
||
end
|
||
end
|
||
end
|
||
if v.config_id == 70800055 then
|
||
v.server_global_value_config = {["SGV_Try_Clean_Gadgets"]= 0}
|
||
Operator_Config_id = 70800055
|
||
end
|
||
end
|
||
--加物件(隐形billboard挂点)
|
||
for k,v in pairs(gadgets) do
|
||
if v.gadget_id == 70800047 then
|
||
table.insert(gadgets , {config_id = 888881 , gadget_id = 70800050, pos = v.pos, rot = v.rot, level = v.level, area_id = v.area_id })
|
||
break
|
||
end
|
||
end
|
||
for k,v in pairs(gadgets) do
|
||
if v.gadget_id == 70800048 then
|
||
table.insert(gadgets , {config_id = 888882 , gadget_id = 70800051, pos = v.pos, rot = v.rot, level = v.level, area_id = v.area_id })
|
||
break
|
||
end
|
||
end
|
||
for k,v in pairs(gadgets) do
|
||
if v.gadget_id == 70800049 then
|
||
table.insert(gadgets , {config_id = 888883 , gadget_id = 70800052, pos = v.pos, rot = v.rot, level = v.level, area_id = v.area_id })
|
||
break
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
Initialize()
|
||
|