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

148 lines
5.2 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("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")