148 lines
5.2 KiB
Lua
148 lines
5.2 KiB
Lua
|
|
module("PersonalBoss", package.seeall)
|
|||
|
|
BossConfig = BossConfig
|
|||
|
|
--[[
|
|||
|
|
个人数据:ActorData[]
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
全局数据:GlobalData
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
]]--
|
|||
|
|
MonTabType = 9; --
|
|||
|
|
--对应的活动配置
|
|||
|
|
if BossConfig == nil then
|
|||
|
|
assert(false)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--退出副本
|
|||
|
|
function OnExitFuben(nFdId,pFuben, nSceneId, pActor)
|
|||
|
|
-- 通关后才消耗门票跟次数
|
|||
|
|
if FubenDispatcher.GetReault(pFuben) == 1 then
|
|||
|
|
local fbcache = FubenDispatcher.GetCacheData(pFuben)
|
|||
|
|
-- local Cfg = ShenZhuangBossConfig
|
|||
|
|
-- if Cfg then
|
|||
|
|
-- 补充退出结算
|
|||
|
|
OnReqFubenAward(pFuben, pActor, pActor)
|
|||
|
|
if fbCacheData then
|
|||
|
|
fbCacheData.ownerId = 0
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- 消耗次数
|
|||
|
|
-- Actor.addStaticCount(pActor, Cfg.pid,-1);
|
|||
|
|
-- end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--活动请求结算
|
|||
|
|
function OnReqFubenAward(pFuben, pActor, pOwner)
|
|||
|
|
-- 单人副本活动,所有者必须为自己
|
|||
|
|
if pOwner == pActor then
|
|||
|
|
if FubenDispatcher.GetReault(pFuben) == 1 then
|
|||
|
|
local fbcache = FubenDispatcher.GetCacheData(pFuben)
|
|||
|
|
local cfg = getRealCfg((fbcache.nSerial or 0))
|
|||
|
|
if not fbcache.hasGetAward then
|
|||
|
|
--邮件发送奖励
|
|||
|
|
local data = MonDispatcher.GetActorData(pActor,cfg.fbid)
|
|||
|
|
if cfg and cfg.firstprize and data.isFirst == nil then
|
|||
|
|
local actorId = Actor.getIntProperty( pOwner, PROP_ENTITY_ID )
|
|||
|
|
local monsterName = System.getMonsterNameById(cfg.entityid);
|
|||
|
|
local title = string.format("%s首杀奖励!", monsterName)
|
|||
|
|
local content = string.format("恭喜您首杀%s,以下是给您的奖励,请接收!", monsterName)
|
|||
|
|
SendMail(actorId, title, content, cfg.firstprize)
|
|||
|
|
data.isFirst = 1;
|
|||
|
|
-- Actor.addStaticCount(pActor, cfg.pid,-1);
|
|||
|
|
end
|
|||
|
|
fbcache.hasGetAward = 1
|
|||
|
|
if cfg then
|
|||
|
|
Actor.addStaticCount(pActor, cfg.staticType,-1);
|
|||
|
|
Actor.SendSzBossTimes(pActor);
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--活动副本结束
|
|||
|
|
function OnFubenFinish(pFuben, result, pOwner)
|
|||
|
|
--发送成功失败的旗帜
|
|||
|
|
if pOwner then
|
|||
|
|
if FubenDispatcher.GetReault(pFuben) == 1 then
|
|||
|
|
local fbcache = FubenDispatcher.GetCacheData(pFuben)
|
|||
|
|
local Cfg = getRealCfg((fbcache.nSerial or 0))
|
|||
|
|
if not fbcache.hasGetAward then
|
|||
|
|
--邮件发送奖励
|
|||
|
|
if Cfg then
|
|||
|
|
local data = MonDispatcher.GetActorData(pOwner,Cfg.fbid)
|
|||
|
|
if Cfg.firstprize and data.isFirst == nil then
|
|||
|
|
local actorId = Actor.getIntProperty( pOwner, PROP_ENTITY_ID )
|
|||
|
|
local monsterName = System.getMonsterNameById(Cfg.entityid);
|
|||
|
|
local title = string.format("%s首杀奖励!", monsterName)
|
|||
|
|
local content = string.format("恭喜您首杀%s,以下是给您的奖励,请接收!", monsterName)
|
|||
|
|
SendMail(actorId, title, content, Cfg.firstprize)
|
|||
|
|
data.isFirst = 1;
|
|||
|
|
end
|
|||
|
|
Actor.addStaticCount(pOwner, Cfg.staticType,-1);
|
|||
|
|
Actor.SendSzBossTimes(pOwner);
|
|||
|
|
---处理超时
|
|||
|
|
FubenDispatcher.SetFubenTimeout(Cfg.fbid, pFuben);
|
|||
|
|
Actor.sendTipmsgWithId(pOwner, tmChallengBossSucess, tstUI)
|
|||
|
|
end
|
|||
|
|
fbcache.hasGetAward = 1
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
function getRealCfg(nSerial)
|
|||
|
|
local data = nil
|
|||
|
|
for _, cfg in pairs(BossConfig) do
|
|||
|
|
if cfg.Serial == nSerial then
|
|||
|
|
data = cfg
|
|||
|
|
break
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
return data
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--记录参与奖的玩家
|
|||
|
|
function OnReqEnterFuben(pActor, nFubenId, nSerial)
|
|||
|
|
--进入副本
|
|||
|
|
return MonDispatcher.EnterMonFuben(MonTabType, pActor, nFubenId, nSerial)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
MonDispatcher.Reg(MonEvent.OnExitFuben, MonTabType, OnExitFuben, "PersonalBoss.lua")
|
|||
|
|
MonDispatcher.Reg(MonEvent.OnFubenFinish, MonTabType, OnFubenFinish, "PersonalBoss.lua")
|
|||
|
|
MonDispatcher.Reg(MonEvent.OnReqEnterFuben, MonTabType, OnReqEnterFuben, "PersonalBoss.lua")
|
|||
|
|
--------------------------------------------------------------------
|
|||
|
|
-- 玩家 回调注册
|
|||
|
|
--------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
-- 跨天,次数清零
|
|||
|
|
function OnNewDayArrive(pActor, ndiffday)
|
|||
|
|
local openday = System.getDaysSinceOpenServer()
|
|||
|
|
local Cfg = ShenZhuangBossConfig
|
|||
|
|
if Cfg then
|
|||
|
|
local times = 0;
|
|||
|
|
if openday >= Cfg.popenday then
|
|||
|
|
local day = Actor.getStaticCount(pActor, Cfg.pid+1);
|
|||
|
|
|
|||
|
|
if day == 0 then
|
|||
|
|
day = Cfg.popenday-1;
|
|||
|
|
end
|
|||
|
|
ndiffday = openday - day
|
|||
|
|
if ndiffday > 0 then
|
|||
|
|
times = Cfg.ptimes * ndiffday;
|
|||
|
|
-- print("times.."..times)
|
|||
|
|
Actor.addStaticCount(pActor, Cfg.pid, times)
|
|||
|
|
Actor.setStaticCount(pActor, Cfg.pid+1, openday)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
ActorEventDispatcher.Reg(aeNewDayArrive, OnNewDayArrive, "PersonalBoss.lua")
|