148 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
| 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")
 |