0
0
mirror of https://gitlab.com/YuukiPS/GC-Resources.git synced 2025-04-28 09:05:26 +00:00
GC-Resources/Resources/Scripts/Common/V2_3/WinterCampGacha.lua
2023-10-22 15:27:31 +08:00

261 lines
8.8 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

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

--[[
2.3雪山活动 盲盒雪堆
]]
--[[
defs = {
--挑战ID
challenge_id = ,
--挑战的region configID
region_id = ,
--挖雪堆目标数
target_count = 10,
}
]]
local extraTriggers={
{ config_id = 8000001,name = "Enter_Region", event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_region", trigger_count = 0 },
--挑战计数trigger
{ config_id = 8000002, name = "Variable_Change", event = EventType.EVENT_VARIABLE_CHANGE, source = "saved_progress", condition = "", action = "", trigger_count = 0 ,tag = "1000"},
{ config_id = 8000003,name = "Leave_Region", event = EventType.EVENT_LEAVE_REGION, source = "", condition = "", action = "action_leave_region", trigger_count = 0 },
{ config_id = 8000009, name = "Group_Will_Unload", event = EventType.EVENT_GROUP_WILL_UNLOAD, source = "", condition = "", action = "action_Group_Will_Unload", trigger_count = 0 },
{ config_id = 8000004,name = "Challenge_Success", event = EventType.EVENT_CHALLENGE_SUCCESS, source = "", condition = "", action = "action_challenge_success", trigger_count = 0 },
--处理意外Fail的情况,重置标志
{ config_id = 8000005,name = "Challenge_Fail", event = EventType.EVENT_CHALLENGE_FAIL, source = "", condition = "", action = "action_challenge_fail", trigger_count = 0 },
{ config_id = 8000006,name = "Challenge_Pause", event = EventType.EVENT_CHALLENGE_PAUSE, source = "", condition = "", action = "action_challenge_pause", trigger_count = 0 },
--{ config_id = 8000007, name = "TimeAxis_Event", event= EventType.EVENT_TIME_AXIS_PASS, source = "", condition = "", action = "action_time_axis_pass", trigger_count = 0 },
{ config_id = 8000008, name = "Enter_Tutorial_Region", event = EventType.EVENT_ENTER_REGION, source = "", condition = "", action = "action_enter_TutorialRegion", trigger_count = 0}
}
function LF_Initialize_Group(triggers, suites)
for i=1,#extraTriggers do
table.insert(triggers, extraTriggers[i])
table.insert(suites[init_config.suite].triggers,extraTriggers[i].name)
end
--进度保存
table.insert(variables,{ config_id=50000001,name = "saved_progress", value = 0, no_refresh =true})
-- 0-未完成 1-进行中 2-已完成
table.insert(variables,{ config_id=50000002,name = "challenge_state", value = 0, no_refresh =true})
end
function action_enter_TutorialRegion(context, evt)
if defs.guide_regionID == nil then
return 0
elseif evt.param1 == defs.guide_regionID then
LF_Try_StartTutorial(context)
end
return 0
end
function LF_Try_StartTutorial(context)
local UidList = ScriptLib.GetSceneUidList(context)
local ownerUid = UidList[1]
local havePlayed = ScriptLib.GetExhibitionAccumulableData(context, ownerUid, 10901103)
if 0 == havePlayed then
ScriptLib.ShowClientTutorial(context, 835, {ownerUid})
ScriptLib.AddExhibitionAccumulableData(context,ownerUid, "WinterCamp_Gacha_HavePlayed", 1)
end
return 0
end
function action_Group_Will_Unload(context, evt)
if ScriptLib.GetGroupVariableValue(context, "challenge_state") == 1 then
ScriptLib.SetGroupVariableValue(context, "challenge_state", 0)
ScriptLib.SetGroupTempValue(context, "temp_start", 0, {})
end
return 0
end
function action_enter_region(context, evt)
if evt.param1 ~= defs.region_id then
return 0
end
LF_TryStartChallenge(context)
return 0
end
function action_challenge_pause(context, evt)
ScriptLib.PrintContextLog(context,"[WinterCampGacha] Challenge Paused.")
ScriptLib.SetGroupVariableValue(context, "challenge_state", 0)
ScriptLib.SetGroupTempValue(context, "temp_start", 0, {})
return 0
end
function action_challenge_fail(context, evt)
if ScriptLib.GetGroupVariableValue(context, "challenge_state") == 1 then
ScriptLib.PrintContextLog(context,"[WinterCampGacha] #WARN# Challenge Failed, not really expected in this activiy.")
ScriptLib.SetGroupVariableValue(context, "challenge_state", 0)
ScriptLib.SetGroupTempValue(context, "temp_start", 0, {})
end
return 0
end
function action_leave_region (context, evt)
if evt.param1 ~= defs.region_id then
return 0
end
if ScriptLib.GetGroupVariableValue(context, "challenge_state") == 1 then
ScriptLib.PrintContextLog(context,"[WinterCampGacha] Leave Region, Pause Challenge.")
ScriptLib.SetGroupVariableValue(context, "challenge_state", 0)
ScriptLib.SetGroupTempValue(context, "temp_start", 0, {})
ScriptLib.PauseChallenge(context, 1)
end
return 0
end
function action_challenge_success(context, evt)
ScriptLib.PrintContextLog(context,"[WinterCampGacha] Challenge Done.")
ScriptLib.SetGroupVariableValue(context, "challenge_state", 2)
ScriptLib.SetGroupTempValue(context, "temp_start", 3, {})
return 0
end
--圈外打雪堆 直接拉起挑战tempStart 5秒没进圈、没接着打雪堆->挑战暂离(9.22迭代:出圈挑战不退出,不调用这个了)
function StartChallengeOutOfRegion(context)
local temp_start = ScriptLib.GetGroupTempValue(context, "temp_start",{})
ScriptLib.PrintContextLog(context,"[WinterCampGacha] Start Challenge OutOfRegion: temp_start@".. temp_start)
if temp_start == 0 then
local start_process = ScriptLib.GetGroupVariableValue(context, "saved_progress")
--参数1 event_type所在枚举序号 参数2 trigger_tag参数3 次数参数4Bool次数达成是否计为成功参数5初始次数值
ScriptLib.StartChallenge(context, 1, defs.challenge_id, {3, 1000, defs.target_count, 1 , start_process})
ScriptLib.SetGroupVariableValue(context, "challenge_state", 1)
--tempStart的状态标记
-- 0-圈外可触发tempStart。 1-触发了tempStart但未进圈 2-在圈里不触发tempStart 3- 挑战已完成不触发tempStart
ScriptLib.SetGroupTempValue(context, "temp_start", 1, {})
--起时间轴
ScriptLib.InitTimeAxis(context, "temp_start_life", {6}, false)
elseif temp_start == 1 then
--续命
ScriptLib.InitTimeAxis(context, "temp_start_life", {6}, false)
end
return 0
end
function LF_TryStartChallenge(context)
ScriptLib.SetGroupTempValue(context, "temp_start", 2, {})
if ScriptLib.GetGroupVariableValue(context, "challenge_state") == 0 then
local start_process = ScriptLib.GetGroupVariableValue(context, "saved_progress")
--参数1 event_type所在枚举序号 参数2 trigger_tag参数3 次数参数4Bool次数达成是否计为成功参数5初始次数值
ScriptLib.StartChallenge(context, 1, defs.challenge_id, {3, 1000, defs.target_count, 1 , start_process})
ScriptLib.SetGroupVariableValue(context, "challenge_state", 1)
end
return 0
end
--[[function action_time_axis_pass(context, evt)
if ScriptLib.GetGroupTempValue(context, "temp_start",{}) == 1 then
ScriptLib.PauseChallenge(context, 1)
ScriptLib.SetGroupVariableValue(context, "challenge_state", 0)
ScriptLib.SetGroupTempValue(context, "temp_start", 0, {})
end
return 0
end
]]
function GadgetCall_SnowPile_Interact(context)
--StartChallengeOutOfRegion(context)
LF_TryStartChallenge(context)
local configId = ScriptLib.GetGadgetConfigId(context, {gadget_eid = context.source_entity_id})
--向服务器请求本次雪堆结果 1 刷怪0掉落-1有错误
local result = ScriptLib.WinterCampSnowDriftInteract(context, configId)
ScriptLib.PrintContextLog(context,"[WinterCampGacha] Get result form server: result@".. result)
if result == 1 then
local tmp = GetMonsterSuit(context,configId)
ScriptLib.ChangeGroupVariableValue(context, "saved_progress", 1)
ScriptLib.AddExtraGroupSuite(context, defs.group_id,tmp)
--杀死雪堆
ScriptLib.KillGroupEntity(context, { group_id = defs.group_id, gadgets = {configId} })
ScriptLib.PrintContextLog(context,"[WinterCampGacha] Add Monster suitID@".. tmp.." GroupID@"..defs.group_id)
return 0
elseif result == 0 then
ScriptLib.ChangeGroupVariableValue(context, "saved_progress", 1)
--杀死雪堆
ScriptLib.KillGroupEntity(context, { group_id = defs.group_id, gadgets = {configId} })
ScriptLib.PrintContextLog(context,"[WinterCampGacha] Get a Reward.")
return 0
elseif result == -1 then
ScriptLib.PrintContextLog(context,"[WinterCampGacha] #WRONG# SnowDrift Result Get -1 . Please Check Activity State!")
--如果活动状态异常把雪堆物件状态设回0去
ScriptLib.SetGadgetStateByConfigId(context, configId, 0)
return 0
else
ScriptLib.PrintContextLog(context,"[WinterCampGacha] #WRONG# SnowDrift Interact Get Unkown Result!!!!")
--如果活动状态异常把雪堆物件状态设回0去
ScriptLib.SetGadgetStateByConfigId(context, configId, 0)
return 0
end
return -1
end
--当雪堆该刷怪时刷哪个Suit
--雪堆1 对应suite2 雪堆2 对应suite3 以此类推
function GetMonsterSuit(context, cfg_id)
local tmp = 0
for k,v in ipairs(suites[1].gadgets) do
if cfg_id == v then
tmp = k+1
return tmp
end
end
return 0
end
LF_Initialize_Group(triggers, suites)