|  |  | 
 |  |  | import IpyGameDataPY
 | 
 |  |  | import ChPyNetSendPack
 | 
 |  |  | import CrossRealmPlayer
 | 
 |  |  | import DataRecordPack
 | 
 |  |  | import PlayerControl
 | 
 |  |  | import NetPackCommon
 | 
 |  |  | import CrossRealmMsg
 | 
 |  |  | 
 |  |  |         refreshTime = GetRecRefreshTime(bossRecData)
 | 
 |  |  |         killedRecord = GetRecKilledRecord(bossRecData)
 | 
 |  |  |         isAlive = __GetCrossBossIsAlive(zoneID, bossID)
 | 
 |  |  |         bossInfoList.append([zoneID, bossID, killedTime, refreshTime, killedRecord, isAlive])
 | 
 |  |  |         killerExInfo = [] # 重连成功的信息同步不发送击杀者信息
 | 
 |  |  |         bossInfoList.append([zoneID, bossID, killedTime, refreshTime, killedRecord, isAlive, killerExInfo])
 | 
 |  |  |         
 | 
 |  |  |     if bossInfoList:
 | 
 |  |  |         bossInfoDict = {"BossInfoType":"InitOK", "BossInfoList":bossInfoList}
 | 
 |  |  | 
 |  |  |         
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def DoCrossBossOnKilled(bossID, killPlayerName, realMapID, dataMapID, copyMapID):
 | 
 |  |  | def DoCrossBossOnKilled(bossID, killPlayerName, realMapID, dataMapID, copyMapID, killerIDList):
 | 
 |  |  |     ## 跨服boss被杀
 | 
 |  |  |     zoneIpyData = GetCrossBossZoneIpyData(realMapID, dataMapID, copyMapID)
 | 
 |  |  |     zoneID = 0 if not zoneIpyData else zoneIpyData.GetZoneID()
 | 
 |  |  |     GameWorld.Log("击杀跨服boss: zoneID=%s,bossID=%s,realMapID=%s,dataMapID=%s,copyMapID=%s"  | 
 |  |  |                   % (zoneID, bossID, realMapID, dataMapID, copyMapID))
 | 
 |  |  |     GameWorld.Log("击杀跨服boss: zoneID=%s,bossID=%s,realMapID=%s,dataMapID=%s,copyMapID=%s,killerIDList=%s"  | 
 |  |  |                   % (zoneID, bossID, realMapID, dataMapID, copyMapID, killerIDList))
 | 
 |  |  |     if not zoneID:
 | 
 |  |  |         return
 | 
 |  |  |     
 | 
 |  |  | 
 |  |  |     # 广播子服跨服boss被击杀
 | 
 |  |  |     serverGroupIDList = zoneIpyData.GetServerGroupIDList()
 | 
 |  |  |     killedRecord = GetRecKilledRecord(bossRecData)
 | 
 |  |  |     bossInfoList = [[zoneID, bossID, killedTime, refreshTime, killedRecord, isAlive]]
 | 
 |  |  |     killerExInfo = [killerIDList, dataMapID]
 | 
 |  |  |     bossInfoList = [[zoneID, bossID, killedTime, refreshTime, killedRecord, isAlive, killerExInfo]]
 | 
 |  |  |     bossInfoDict = {"BossInfoType":"OnKilled", "BossInfoList":bossInfoList}
 | 
 |  |  |     CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossBossInfo, bossInfoDict, serverGroupIDList)
 | 
 |  |  |     return
 | 
 |  |  | 
 |  |  |         
 | 
 |  |  |     syncBOSSIDList = []
 | 
 |  |  |     for bossInfo in bossInfoList:
 | 
 |  |  |         zoneID, bossID, killedTime, refreshTime, killedRecord, isAlive = bossInfo
 | 
 |  |  |         zoneID, bossID, killedTime, refreshTime, killedRecord, isAlive, killerExInfo = bossInfo
 | 
 |  |  |         bossRecData = __GetCrossBossRecData(zoneID, bossID)
 | 
 |  |  |         SetRecKilledTime(bossRecData, killedTime)
 | 
 |  |  |         SetRecRefreshTime(bossRecData, refreshTime)
 | 
 |  |  | 
 |  |  |         __SetCrossBossIsAlive(zoneID, bossID, isAlive)
 | 
 |  |  |         syncBOSSIDList.append(bossID)
 | 
 |  |  |         
 | 
 |  |  |         if not killerExInfo:
 | 
 |  |  |             continue
 | 
 |  |  |          | 
 |  |  |         killerIDList, dataMapID = killerExInfo
 | 
 |  |  |         for playerID in killerIDList:
 | 
 |  |  |             killer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
 | 
 |  |  |             if not killer:
 | 
 |  |  |                 GameWorld.ErrLog("击杀跨服boss时主服玩家不在线, playerID=%s,dataMapID=%s,bossID=%s" % (playerID, dataMapID, bossID))
 | 
 |  |  |                 DataRecordPack.SendEventPack("CrossBoss_Error", {"PlayerID":playerID, "Error":"MainServerOffline"})
 | 
 |  |  |                 continue
 | 
 |  |  |             msgInfo = str([dataMapID, bossID])
 | 
 |  |  |             killer.MapServer_QueryPlayerResult(0, 0, "CrossKillBoss", msgInfo, len(msgInfo))
 | 
 |  |  |              | 
 |  |  |     Sync_CrossBossInfo(None, syncBOSSIDList)
 | 
 |  |  |     return
 | 
 |  |  | 
 |