From b7bb8308d9b16d2802ccc3c259c871c2b6e58002 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 15 十一月 2022 19:16:05 +0800 Subject: [PATCH] 9748 【BT7】跨服BOSS定时活动(跨服妖魔boss;增加跨服日常活动时间控制;Boss刷新增加支持关联跨服日常活动;优化跨服boss复活剩余时间计算使用跨服时间;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 51 insertions(+), 4 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py index cd6a3b0..f4fe1c0 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCustomRefresh.py @@ -315,6 +315,16 @@ def NPCRefresh_218(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) def NPCRefresh_219(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) def NPCRefresh_220(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_221(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_222(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_223(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_224(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_225(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_226(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_227(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_228(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_229(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) +def NPCRefresh_230(npcRefresh, tick):__DoRefreshWorldBoss(npcRefresh, tick) ## 世界boss刷怪 # @param npcRefresh 刷新实例 @@ -526,6 +536,7 @@ lineID = GameWorld.GetGameWorld().GetLineID() realMapID = GameWorld.GetGameWorld().GetRealMapID() copyMapID = GameWorld.GetGameWorld().GetCopyMapID() + relatedType, relatedID = 0, "" if mapID == ChConfig.Def_FBMapID_CrossDemonKing: bossID = GameLogic_CrossDemonKing.GetCurFBLineBOSSID() @@ -539,7 +550,9 @@ stoneNPCID = bossIpyData.GetStoneNPCID() bossID = bossIpyData.GetNPCID() - + relatedType = bossIpyData.GetRelatedType() + relatedID = bossIpyData.GetRelatedID() + if mapID not in ChConfig.Def_CrossZoneMapTableName: return tableName = ChConfig.Def_CrossZoneMapTableName[mapID] @@ -554,8 +567,34 @@ return gameFB = GameWorld.GetGameFB() - bosskey = ShareDefine.Def_Notify_WorldKey_GameWorldBossRebornCross % (zoneID, bossID) - rebornBossState = GameWorld.GetGameWorld().GetGameWorldDictByKey(bosskey) + gameWorldMgr = GameWorld.GetGameWorld() + forceReborn = False # 强制重生 + actBossRebornSign = 0 + mapActBossRebornSign = 0 + + # 关联日常活动 + if relatedType == 1: + relatedID = int(relatedID) + actionKey = ShareDefine.Def_Notify_WorldKey_CrossDailyActionState % relatedID + rebornBossState = 1 if gameWorldMgr.GetGameWorldDictByKey(actionKey) else 0 + + # 关联运营活动,待扩展 + elif relatedType == 2: + pass + + else: + bosskey = ShareDefine.Def_Notify_WorldKey_GameWorldBossRebornCross % (zoneID, bossID) + rebornBossState = GameWorld.GetGameWorld().GetGameWorldDictByKey(bosskey) + + # 关联活动boss + if relatedType: + # 关联活动boss只要复活标记与上次不同,则强制重生 + actBossRebornSign = gameWorldMgr.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ActionBossRebornSign % relatedID) + mapActBossRebornSign = gameFB.GetGameFBDictByKey(ChConfig.Map_NPC_ActBossLastRebornSign % refreshMark) + rebornBossState = rebornBossState and actBossRebornSign + if rebornBossState and actBossRebornSign != mapActBossRebornSign: + forceReborn = True + curNPC = None if npcRefresh.GetCount() > 0: curNPC = npcRefresh.GetAt(0) @@ -563,11 +602,16 @@ # 复活状态 if rebornBossState: if curNPC: - if curNPC.GetNPCID() == bossID: + if not forceReborn and curNPC.GetNPCID() == bossID: return #去掉非bossNPC NPCCommon.SetDeadEx(curNPC) + if mapActBossRebornSign and actBossRebornSign == mapActBossRebornSign: + #GameWorld.DebugLog("活动线已经刷过不再刷活动boss: lineID=%s,refreshMark=%s,bossID=%s,actBossRebornSign=%s" + # % (lineID, refreshMark, bossID, actBossRebornSign)) + return + # 死亡状态 else: if curNPC: @@ -598,6 +642,9 @@ __InitNewBornNPC(npcRefresh, tick) gameFB.SetGameFBDict(rebornTickKey, tick) + if actBossRebornSign and rebornBossState: + gameFB.SetGameFBDict(ChConfig.Map_NPC_ActBossLastRebornSign % refreshMark, actBossRebornSign) + GameWorld.DebugLog("CrossBossRefresh mapID=%s,realMapID=%s,copyMapID=%s,refreshMark=%s,rebornNPCID=%s,OK!" % (mapID, realMapID, copyMapID, refreshMark, rebornNPCID), lineID) return -- Gitblit v1.8.0