From 3b45b8cfa4cb24ad084c4fadf5d31430d0de5d21 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期五, 22 三月 2019 16:54:07 +0800 Subject: [PATCH] 6341 【后端】【2.0】境界改版开发单(修为池通知) --- ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py | 62 ++++++------------------------- 1 files changed, 12 insertions(+), 50 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py index 36086f0..867a071 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldBoss.py @@ -39,6 +39,7 @@ import PlayerCompensation import IpyGameDataPY import PyGameDataStruct +import CrossRealmPlayer import PyDataManager import PlayerControl import CrossRealmMsg @@ -49,8 +50,6 @@ import CrossBoss import time - - ''' ShareDefine.Def_UniversalGameRecType_BossInfo @@ -103,9 +102,9 @@ if bossID <= 0: return - bossID, killPlayerName, hurtValue, isNotify, realMapID, dataMapID, copyMapID = msgList + bossID, killPlayerName, hurtValue, isNotify, realMapID, dataMapID, copyMapID, killerIDList = msgList if GameWorld.IsCrossServer(): - CrossBoss.DoCrossBossOnKilled(bossID, killPlayerName, realMapID, dataMapID, copyMapID) + CrossBoss.DoCrossBossOnKilled(bossID, killPlayerName, realMapID, dataMapID, copyMapID, killerIDList) return mapID = dataMapID @@ -484,7 +483,7 @@ if not isAlive: continue mapID = ipyData.GetMapID() - if mapID != ChConfig.Def_FBMapID_SealDemon: + if mapID not in ChConfig.WorldBossFBMapIDList: GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_GameWorldBossReborn % bossID, 1) return @@ -502,7 +501,6 @@ state = gameWorld.GetDictByKey(ChConfig.Def_WorldKey_OperationActionState % ShareDefine.OperationActionName_BossReborn) if state: Sync_BossRebornPoint(curPlayer) - Sync_DogzNPCRefreshTime(curPlayer) return ## 地图启动ok通知 @@ -517,10 +515,6 @@ if IsMapNeedBossShunt(0): GameWorld.SendCommMapServerMsg(ShareDefine.Def_Notify_WorldKey_BossShuntPlayer, PyGameData.g_bossShuntPlayerInfo) GameWorld.SendCommMapServerMsg(ShareDefine.Def_Notify_WorldKey_BossShuntLineState, PyGameData.g_bossShuntLineState) - #通知一个参数 - bossID = IpyGameDataPY.GetFuncCfg('DogzFBRefreshCfg', 2) - onlineCnt = __GetBossOnlineHeroCnt(bossID)[0] - GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_BossOnlineHeroCnt % bossID, onlineCnt) #仙盟击杀骑宠boss数 if PyGameData.g_familyKillHorsePetRobBossCntDict: @@ -554,7 +548,11 @@ # 同步到玩家对应子服 if not serverGroupID: return - CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_DropGoodItem, msgList, [serverGroupID]) + zoneIpyData = CrossRealmPlayer.GetCrossCommZoneIpyDataByServerGroupID(serverGroupID) + if not zoneIpyData: + return + serverGroupIDList = zoneIpyData.GetServerGroupIDList() + CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_DropGoodItem, msgList, serverGroupIDList) return recType = ShareDefine.Def_UniversalGameRecType_BossDropGoodItemInfo @@ -655,8 +653,6 @@ newNum = newOnlieCnt * 100 + unUpdataCnt PlayerDBGSEvent.SetDBGSTrig_ByKey(ShareDefine.Def_Notify_WorldKey_GameWorldBossOnlineCnt % bossid, newNum) - if bossid == IpyGameDataPY.GetFuncCfg('DogzFBRefreshCfg', 2): - GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_BossOnlineHeroCnt % bossid, newOnlieCnt) GameWorld.DebugLog("设置计算boss刷新时间用的在线人数 Change:bossid=%s, beforeOnlineCnt = %s, newOnlieCnt = %s, unUpdataCnt=%s" % (bossid, beforeOnlineCnt, newOnlieCnt, unUpdataCnt)) return @@ -719,6 +715,7 @@ def GetBossAttentionDict(self): return self.bossAttentionDict + # RecordData改json记录 bossid存为字符串 def UpdateBossAttention(self, playerid, bossid, isAdd): if playerid in self.bossAttentionDict: bossAttentionData = self.bossAttentionDict[playerid] @@ -760,7 +757,7 @@ packData.BossList = [] for bossid, addState in bttentionDict.items(): bossInfo = ChPyNetSendPack.tagGCBossAttention() - bossInfo.BossID=bossid + bossInfo.BossID=int(bossid) bossInfo.AddState=addState packData.BossList.append(bossInfo) @@ -792,10 +789,7 @@ data.clear() pos += data.readData(datas, pos, dataslen) playerID = data.PlayerID - if type(eval(data.RecordData)) != list: - self.bossAttentionDict[playerID] = data - else: - data.clear() + self.bossAttentionDict[playerID] = data return pos @@ -1080,38 +1074,6 @@ packData.RebornCnt = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_BossRebornCnt) playerManager = GameWorld.GetPlayerManager() if not curPlayer: - for i in xrange(playerManager.GetActivePlayerCount()): - curPlayer = playerManager.GetActivePlayerAt(i) - if curPlayer == None or not curPlayer.GetInitOK(): - continue - if PlayerControl.GetIsTJG(curPlayer): - continue - NetPackCommon.SendFakePack(curPlayer, packData) - else: - if PlayerControl.GetIsTJG(curPlayer): - return - NetPackCommon.SendFakePack(curPlayer, packData) - return - -def Sync_DogzNPCRefreshTime(curPlayer=None): - #同步神兽副本NPC刷新时间 - refreshTimeDict = PyGameData.g_dogzNPCRefreshTimeDict - - if not refreshTimeDict: - return - curTime = int(time.time()) - packData = ChPyNetSendPack.tagGCDogzNPCRefreshTime() - packData.InfoList=[] - for npcid, timeinfo in refreshTimeDict.items(): - lastRefreshTime, nextNeedTime = timeinfo - remainTime = max(0, nextNeedTime - curTime + lastRefreshTime) - timeInfo = ChPyNetSendPack.tagDogzTimeInfoObj() - timeInfo.NPCID = npcid - timeInfo.RefreshSecond = remainTime - packData.InfoList.append(timeInfo) - packData.Cnt = len(packData.InfoList) - if not curPlayer: - playerManager = GameWorld.GetPlayerManager() for i in xrange(playerManager.GetActivePlayerCount()): curPlayer = playerManager.GetActivePlayerAt(i) if curPlayer == None or not curPlayer.GetInitOK(): -- Gitblit v1.8.0