Files
chuanqi-server-instance/LogicServer/data/functions/Common/ActivityDispatcher.lua
2024-12-16 20:45:03 +08:00

666 lines
25 KiB
Lua
Executable File
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.

module("ActivityDispatcher", package.seeall)
--[[
个人数据ActorData[AtvId]
{
openTimes, 该全局活动的参与标记
}
全局数据GlobalData[AtvId]
{
openTimes, 该全局活动的开启次数
}
缓存数据CacheData[atvId]
{
fbHandle, 当前活动的副本句柄
}
]]--
local dispatcher = { }
_G.ActivityEvent =
{
OnLoad = 1, --活动加载 [活动id] 注意:若为个人活动,传入 '玩家指针'
OnInit = 2, --活动初始化 [活动id玩家指针] 注意用于处理再次开启的全局活动同一活动id重置初始化旧数据
OnStart = 3, --活动开始 [活动id] 注意:若为个人活动,传入 '玩家指针'
OnEnd = 4, --活动结束 [活动id] 注意:若为个人活动,传入 '玩家指针'
OnUpdate = 5, --活动帧更新 [活动id当前时间] 注意:若为个人活动,传入 '玩家指针'
OnReqData = 6, --请求活动数据 [活动id, 玩家指针, outPack]
OnOperator = 7, --通用操作 [活动id玩家指针inPack]
OnEnterArea = 8, --进入活动区域 [活动id, 玩家指针]
OnExitArea = 9, --离开活动区域 [活动id, 玩家指针]
OnEnterFuben = 10, --玩家进入活动副本[活动id玩家指针副本指针, pOwner]
OnExitFuben = 11, --玩家离开活动副本[活动id玩家指针副本指针, pOwner]
OnEntityDeath = 12, --副本实体死亡 [活动id, 被杀者指针,击杀者指针,副本指针, pOwner]
OnEntityAttacked= 13, --活动副本实体受击[活动id, 副本指针,受击者,攻击者, pOwner]
OnFubenFinish = 14, --活动副本结束 [活动id, 副本指针,结果, pOwner] 1为完成0为失败nil则结果未知需要对应副本设置结果
OnReqFubenAward = 15, --请求副本结算 [活动id, 副本指针pActor, pOwner]
OnGetRedPoint = 16, --请求红点数据 [活动id, 玩家指针] 返回值为红点值
OnLoginGame = 17, --登录游戏 [活动id玩家指针] 活动登录事件 //登陆时活动如果开启会触发
OnUpdateActivity= 18, --更新数据 [活动id玩家指针] 注意:若为个人活动,传入 '玩家指针'
OnAtvAreaDeath = 19, --普通场景活动区域死亡 [活动id玩家指针]
OnCombineSrv = 20, --合服后首次登陆 [活动id合服后的开服天数差值玩家指针] 个人活动
OnGPStart = 21, --全局个人活动的玩家Start [活动id玩家指针] Global_Person_Activity
OnGPEnd = 22, --全局个人活动的玩家End [活动id玩家指针] Global_Person_Activity
OnAtvGG = 23, --活动复活结束 [活动id玩家指针]
OnAtvAreaAtk = 24, --普通场景活动区域实体受击 [活动id受击者攻击者]
OnOnAtvRank = 25, --活动排行榜 [活动id当前时间]
Count = 26,
}
--通用操作协议枚举
_G.ActivityOperate = {
cEnterFuben = 1, --请求进入副本
cGetPhaseAward = 2, --请求领取阶段奖励
cWorship = 3, --请求膜拜操作
cAppraisal = 4, --请求鉴定操作
cGetPersonBox = 5, --请求个人奖励 --npc活动
cGetTreasure = 6, --送宝、排名奖励 --npc活动
cGetBonusNum = 7, --npc请求剩余奖励数量 --独闯天涯
cInspire = 8, --鼓舞 --boss
cGetMonsterNum = 9, --npc请求当前杀怪数 --独闯天涯
cReqAtvQianDao = 10, --打卡活动,请求打卡
cReqLeijichongzhiGift = 11, --请求领取累计充值奖励 --累计充值活动
cReqPurchaseGiftbag = 12, --请求购买特惠礼包/领取首冲奖励/七天登录领奖/打卡活动领奖
cReqPurchaseJiJin = 13, --请求购买基金
cReqGetJiJinAward = 14, --请求领取基金奖励
cReqGetAchieveAward = 15, --请求达标类对应奖励
cReqSaoDang = 16, --扫荡
cReqXunBao = 17, --寻宝 抽奖活动(开服特定寻宝)
cActiveOrderWar = 18, --激活战令
cBuyOrderWarLv = 19, --购买战令等级
cDeleteItem = 20, --删除道具
cGetAllAward = 21, --战令一键领取
cGetZLAward = 22, --战令领取
cGetQuestAward = 23, --任务领取
cDonateRank = 24, --捐献
cReqExchange = 25, --兑换
cZLShopInfo = 26, --战令商店
cBuyZLShop = 27, --购买战令数据
cCheckCSActivity = 28, --跨服入口支持
sSendRankData = 1, --广播排行数据 -- 竞技大乱斗
sSendMyRankData = 2, --发送自己的排行数据 -- 竞技大乱斗
sSendPhaseAward = 3, --发送奖励内容
sEnterFubenResult = 4,--进入活动副本的结果回复
sWorship = 5, --回复膜拜操作
sAppraisal = 6, --回复鉴定操作
sNextAwardIndex = 7, --下一个奖励的索引
sSendPersonBox = 8, --回复个人奖励请求 --npc活动
sSendBigTreasure = 9, --回复送宝、排名奖励 --NPC活动
sSendTime = 10, --发送时间
sSendBonusNum = 11, --回复剩余奖励数量 --独闯天涯
sInspire = 12, --返回鼓舞id --boss
sSendMonsterNum = 13, --回复npc请求当前杀怪数 --独闯天涯
sSendAssignCampTime =14, --发送阵营调整时间 --沃玛三
sSendActorDataTimes = 15, --回复玩家数据 --累计充值活动灰按钮/特惠礼包活动回复玩家参与次数
sSendChouJiangResult = 16, --回复寻宝/抽奖结果 --寻宝活动
sSendzhushoustatus = 17, --回复驻守开始
sSendWorldBossTime = 18, --世界boss 剩余时间
sDuoBaoPickLeftTime = 19, --夺宝 剩余时间
sZLShopInfo = 20, --战令商店
sZLBuyShop = 21, --购买战令商品
sZLShopChange = 22, --战令商品发生变化
sCSSBKGuildRank = 23, --前四名跨服沙巴克排行
sCSSBKMyGuildRank = 24, --个人工会排名
sCSSBKMyRank = 25, --个人排名
sCheckCSActivity = 28, --跨服入口支持
}
--------------------------------------------------------------------
-- Lua接口
--------------------------------------------------------------------
-- @brief 注册事件分发器
-- @param evId 事件id
-- @param atvType 活动类型
-- @param func 回调
function Reg(evId, atvType, func, file)
--参数检查
if atvType == nil or evId == nil or func == nil or file == nil then
print( debug.traceback() )
assert(false)
end
--事件范围检查
if evId <= 0 or evId >= ActivityEvent.Count then
assert(false)
end
--回调表初始化
if dispatcher[evId] == nil then
dispatcher[evId] = {}
end
if dispatcher[evId][atvType] ~= nil then
assert(false) -- 重复注册了
end
--注册
dispatcher[evId][atvType] = func
print("[TIP][ActivityDispatcher] Add Activity(Type:"..atvType..") Event("..evId..") In File("..file.."), And Index="..table.maxn(dispatcher[evId]))
end
-- @brief 获取某个活动的全局数据(这个数据,是存文件的)
-- @param atvId 活动id
function GetGlobalData(atvId)
if atvId == nil then
assert(false)
end
local var = System.getStaticVar();
if var.Activity == nil then
var.Activity = {}
end
if var.Activity[atvId] == nil then
var.Activity[atvId] = {}
end
return var.Activity[atvId]
end
-- @brief 清空某个活动的全局数据(这个数据,是存文件的)
-- @param atvId 活动id
function ClearGlobalData(atvId)
if atvId == nil then
assert(false)
end
local var = System.getStaticVar();
if var.Activity == nil then
var.Activity = {}
end
if var.Activity[atvId] then
var.Activity[atvId] = nil
end
end
-- @brief 获取某个活动的缓存数据(这个数据,不存储仅缓存)
-- @param fbId 活动id
function GetCacheData(atvId)
if atvId == nil then
assert(false)
end
local var = System.getDyanmicVar();
if var.Activity == nil then
var.Activity = {}
end
if var.Activity[atvId] == nil then
var.Activity[atvId] = {}
end
return var.Activity[atvId]
end
-- @brief 清空某个活动的缓存数据(这个数据,不存储仅缓存)
-- @param fbId 活动id
function ClearCacheData(atvId)
if atvId == nil then
assert(false)
end
local var = System.getDyanmicVar();
if var.Activity == nil then
var.Activity = {}
end
if var.Activity[atvId] then
var.Activity[atvId] = nil
end
end
-- @brief 获取某个活动的个人数据(这个数据,是存数据库的)
-- @param atvId 活动id
function GetActorData(pActor, atvId)
if atvId == nil or Actor.getEntityType(pActor) ~= enActor then
assert(false)
end
local var = Actor.getStaticVar(pActor);
if var.Activity == nil then
var.Activity = {}
end
if var.Activity[atvId] == nil then
var.Activity[atvId] = {}
end
return var.Activity[atvId]
end
-- @brief 清空某个活动的个人数据(这个数据,是存数据库的)
-- @param atvId 活动id
function ClearActorData(pActor, atvId)
if atvId == nil or Actor.getEntityType(pActor) ~= enActor then
assert(false)
end
local var = Actor.getStaticVar(pActor);
if var.Activity == nil then
var.Activity = {}
end
if var.Activity[atvId] then
local openTimes = var.Activity[atvId].openTimes
var.Activity[atvId] = {}
var.Activity[atvId].openTimes = openTimes
end
end
-- @brief 分配一个通用旗帜结果包需要外部自己调用flush方法
-- @note result 0失败 1成功
function AllocResultPack(pActor, atvId, result)
local npack = DataPack.allocPacket(pActor, enActivityID, SActivityResult)
if npack then
DataPack.writeUInt(npack, atvId)
DataPack.writeByte(npack, (result or 0))
end
return npack
end
-- @brief 分配一个通用旗帜结果包注意这是广播包需要外部自己调用FreePacketEx释放包
function AllocResultPackEx(atvId, result)
local npack = DataPack.allocPacketEx()
if npack then
DataPack.writeUInt(npack, atvId)
DataPack.writeByte(npack, (result or 0))
end
return npack
end
-- @brief 分配一个通用回复包需要外部自己调用flush方法
function AllocOperReturn(pActor, atvId, operaCode)
local npack = DataPack.allocPacket(pActor, enActivityID, sActivityOperator)
if npack then
DataPack.writeUInt(npack, atvId)
DataPack.writeByte(npack, operaCode)
end
return npack
end
-- @brief 分配一个通用回复包注意这是广播包需要外部自己调用FreePacketEx释放包
function AllocOperReturnEx(atvId, operaCode)
local npack = DataPack.allocPacketEx()
if npack then
DataPack.writeByte(npack,enActivityID)
DataPack.writeByte(npack,sActivityOperator)
DataPack.writeUInt(npack,atvId)
DataPack.writeByte(npack,operaCode)
end
return npack
end
-- @brief 释放一个通用回复(注意:这是广播包)
function FreePacketEx(npack)
if npack then
DataPack.freePacketEx(npack)
end
end
-- @brief 进入活动副本
function EnterFuben(atvId,pActor,fbId)
local result = Actor.reqEnterFuben(pActor, fbId)
if result then
-- 回复活动id与副本句柄的关联
local npack = AllocOperReturn(pActor, atvId, ActivityOperate.sEnterFubenResult)
if npack then
DataPack.flush(npack)
end
-- 建立副本类型跟活动类型的对应关系
local fbHandle = Actor.getFubenHandle(pActor)
local pFuben = Fuben.getFubenPtrByHandle(fbHandle)
local atvType = 0
if (ActivitiesConf[atvId] and ActivitiesConf[atvId].ActivityType) then
atvType = ActivitiesConf[atvId].ActivityType
elseif (PActivitiesConf[atvId] and PActivitiesConf[atvId].ActivityType) then
atvType = PActivitiesConf[atvId].ActivityType
end
FubenDispatcher.MapToActivity(pFuben, atvType, atvId)
return fbHandle
end
return nil
end
-- @brief 通过活动id获取对应副本
-- @param atvId 活动id
-- @return 副本指针
function GetFuben(atvId)
local atvCacheData = GetCacheData(atvId)
local fbHandle = atvCacheData.fbHandle
if fbHandle then
local pFuben = Fuben.getFubenPtrByHandle(fbHandle)
if pFuben then
local nAtvId = FubenDispatcher.GetActivityId(pFuben)
if nAtvId == atvId then
return pFuben
end
end
end
end
-- @brief 发送活动弹框
-- @param pActor 玩家指针
-- @param atvId 活动id
function SendPopup(pActor, atvId)
local npack = DataPack.allocPacket(pActor, enActivityID, SActivityPopup)
if npack then
DataPack.writeUInt(npack, atvId)
DataPack.flush(npack)
end
end
-- @brief 广播活动弹框
-- @param atvId 活动id
-- @param fbHandle 副本句柄
-- @param sceneId 场景id
function BroadPopup(atvId)
--等级 转生限制
local lv = 0;
local zsLv = 0;
local Cfg = ActivitiesConf[atvId];
if Cfg then
if Cfg.TipsLevelLimit then
lv = Cfg.TipsLevelLimit.level
zsLv = Cfg.TipsLevelLimit.zsLevel
end
end
local npack = DataPack.allocPacketEx()
if npack then
DataPack.writeByte(npack,enActivityID)
DataPack.writeByte(npack,SActivityPopup)
DataPack.writeUInt(npack,atvId)
DataPack.broadcasetWorld(npack, lv, zsLv)
DataPack.freePacketEx(npack)
end
end
--------------------------------------------------------------------
-- CPP回调
--------------------------------------------------------------------
function CheckInitActivity(atvType, atvId, pActor)
local globalData = GetGlobalData(atvId)
local actorData = GetActorData(pActor, atvId)
if globalData.openTimes ~= actorData.openTimes then
local callbacks = dispatcher[ActivityEvent.OnInit]
if callbacks[atvType] then
local func = callbacks[atvType]
func(atvId, pActor)
end
actorData.openTimes = globalData.openTimes
print("[全局活动id"..atvId.."初始化] 重置开启次数:"..(globalData.openTimes or 0).." 玩家:"..Actor.getName(pActor))
end
end
function CheckReqData(func, atvType, atvId, pActor, outPack)
--print("[Activity"..atvType.."."..atvId.."] "..Actor.getName(pActor).." 请求活动数据!")
-- 红点值
local val = 0
local callbacks = dispatcher[ActivityEvent.OnGetRedPoint]
if callbacks and (callbacks[atvType] ~= nil) then
local result = callbacks[atvType](atvId, pActor)
val = result or 0
end
DataPack.writeByte(outPack, val)
-- 活动详细数据
if func then
func(atvId, pActor, outPack)
end
end
function OnEvent(evId, atvType, atvId, ...)
--获取回调
local callbacks = dispatcher[evId]
--回调调用
if evId == ActivityEvent.OnLoad then --活动加载(数据库来的)
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnStart then --活动开启
-- 周循环活动,需要记录开启次数
if ActivitiesConf[atvId] then
local globalData = GetGlobalData(atvId)
if globalData.openTimes == nil then
local currentId = System.getCurrMiniTime();
globalData.openTimes = currentId
else
globalData.openTimes = globalData.openTimes + 1
end
print("[全局活动id"..atvId.."开始] 记录开启次数:"..globalData.openTimes)
end
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnEnd then --活动结束
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnUpdate then --活动帧更新
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnReqData then --请求活动数据
if ActivitiesConf[atvId] then
CheckInitActivity(atvType, atvId, ...)
end
local func = nil
if callbacks and (callbacks[atvType] ~= nil) then
func = callbacks[atvType];
end
CheckReqData(func, atvType, atvId, ...)
elseif evId == ActivityEvent.OnOperator then --通用操作
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnEnterFuben then --玩家进入活动副本
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnExitFuben then --玩家退出活动副本
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnEntityDeath then --副本实体死亡
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnEnterArea then --进入活动区域
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnExitArea then --离开活动区域
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnEntityAttacked then --活动副本实体受击
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnFubenFinish then --活动副本结束
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnAtvAreaDeath then --普通场景活动区域死亡
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnAtvAreaAtk then --普通场景活动区域死亡
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnLoginGame then --登录相关
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnUpdateActivity then --更新
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnCombineSrv then --合服
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnGPStart then --全局个人的开始
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnGPEnd then --全局个人的结束
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnOnAtvRank then --全局个人的结束
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
elseif evId == ActivityEvent.OnAtvGG then --全局个人的结束
if callbacks and (callbacks[atvType] ~= nil) then
local func = callbacks[atvType];
func(atvId, ...)
end
end
return true
end
--------------------------------------------------------------------
-- 活动副本回调
--------------------------------------------------------------------
function CheckEnterFuben(atvType, atvId, pFuben, pEntity, pOwner)
-- 玩家指针(个人活动判断需要一个玩家指针)
local pActor = nil
if Actor.getEntityType(pOwner) == enActor then
pActor = pOwner
elseif Actor.getEntityType(pEntity) == enActor then
pActor = pEntity
elseif Actor.getEntityType(pEntity) == enPet then
pActor = Actor.getMaster(pEntity)
else
return
end
-- 触发玩家进入活动副本事件
if Actor.isActivityRunning(pActor,atvId) then
if Actor.getEntityType(pEntity) == enActor then
print("[Activity"..atvType.."."..atvId.."] [FbId="..Fuben.getFubenIdByPtr(pFuben).."]"..Actor.getName(pEntity).." 进入活动副本!")
OnEvent(ActivityEvent.OnEnterFuben, atvType, atvId, pEntity, pFuben, pOwner)
end
end
end
function CheckExitFuben(atvType, atvId, pFuben, pEntity, pOwner)
-- 玩家指针(个人活动判断需要一个玩家指针)
local pActor = nil
if Actor.getEntityType(pOwner) == enActor then
pActor = pOwner
elseif Actor.getEntityType(pEntity) == enActor then
pActor = pEntity
elseif Actor.getEntityType(pEntity) == enPet then
pActor = Actor.getMaster(pEntity)
else
return
end
-- 触发玩家退出活动副本事件
if Actor.isActivityRunning(pActor,atvId) then
if Actor.getEntityType(pEntity) == enActor then
print("[Activity"..atvType.."."..atvId.."] [FbId="..Fuben.getFubenIdByPtr(pFuben).."]"..Actor.getName(pEntity).." 退出活动副本!")
OnEvent(ActivityEvent.OnExitFuben, atvType, atvId, pEntity, pFuben, pOwner)
end
end
end
function CheckFubenEntityDeath(atvType, atvId, pFuben, pEntity, pKiller, pOwner)
-- 玩家指针(个人活动判断需要一个玩家指针)
local pActor = nil
if Actor.getEntityType(pOwner) == enActor then
pActor = pOwner
elseif Actor.getEntityType(pEntity) == enActor then
pActor = pEntity
elseif Actor.getEntityType(pKiller) == enActor then
pActor = pKiller
elseif Actor.getEntityType(pEntity) == enPet then
pActor = Actor.getMaster(pEntity)
elseif Actor.getEntityType(pKiller) == enPet then
pActor = Actor.getMaster(pKiller)
else
return
end
-- 触发活动副本实体死亡事件
if Actor.isActivityRunning(pActor,atvId) then
-- if pFuben and pEntity and pKiller then
-- print("[Activity"..atvType.."."..atvId.."] [FbId="..Fuben.getFubenIdByPtr(pFuben).."]"..Actor.getName(pEntity).." 被 "..Actor.getName(pKiller).." 杀死!")
-- end
OnEvent(ActivityEvent.OnEntityDeath, atvType, atvId, pEntity, pKiller, pFuben, pOwner)
end
end
function CheckFubenEntityAttacked(atvType, atvId, pFuben, pEntity, pAttacker, pOwner)
-- 玩家指针(个人活动判断需要一个玩家指针)
local pActor = nil
if Actor.getEntityType(pOwner) == enActor then
pActor = pOwner
elseif Actor.getEntityType(pEntity) == enActor then
pActor = pEntity
elseif Actor.getEntityType(pAttacker) == enActor then
pActor = pAttacker
elseif Actor.getEntityType(pEntity) == enPet then
pActor = Actor.getMaster(pEntity)
elseif Actor.getEntityType(pAttacker) == enPet then
pActor = Actor.getMaster(pAttacker)
else
return
end
-- 触发活动副本实体受击事件
if Actor.isActivityRunning(pActor,atvId) then
--print("[Activity"..atvType.."."..atvId.."] [FbId="..Fuben.getFubenIdByPtr(pFuben).."]"..Actor.getName(pEntity).." 受到 "..Actor.getName(pAttacker).." 攻击!")
OnEvent(ActivityEvent.OnEntityAttacked, atvType, atvId, pEntity, pAttacker, pFuben, pOwner)
end
end
function CheckFubenFinish(atvType, atvId, pFuben, result, pOwner)
-- 玩家指针(个人活动判断需要一个玩家指针)
local pActor = nil
if Actor.getEntityType(pOwner) == enActor then
pActor = pOwner
end
-- 触发活动副本结束事件
if Actor.isActivityRunning(pActor,atvId) then
print("[Activity"..atvType.."."..atvId.."] [FbId="..Fuben.getFubenIdByPtr(pFuben).."]"..(Actor.getName(pOwner) or "").." 活动副本结束,结果为("..(result or 0)..")")
OnEvent(ActivityEvent.OnFubenFinish, atvType, atvId, pFuben, result, pOwner)
end
end
function CheckFubenAward(atvType, atvId, pFuben, pActor, pOwner)
-- 触发活动副本结算事件
if Actor.isActivityRunning(pActor,atvId) then
print("[Activity"..atvType.."."..atvId.."] [FbId="..Fuben.getFubenIdByPtr(pFuben).."]"..Actor.getName(pActor).." 请求副本结算!")
OnEvent(ActivityEvent.OnReqFubenAward, atvType, atvId, pFuben, result, pOwner)
end
end