From 9bdcc6b36e432272bd79d43b643e3614e73ef0f3 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 14 一月 2019 16:12:44 +0800
Subject: [PATCH] 5722 【后端】【1.5】跨服BOSS开发(本服异兽之地Boss、跨服蓬莱仙境Boss 次数共享支持)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBoss.py |   28 ++++++++++++++++++++++------
 1 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBoss.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBoss.py
index af21a5e..f2dec64 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBoss.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBoss.py
@@ -20,6 +20,7 @@
 import IpyGameDataPY
 import ChPyNetSendPack
 import CrossRealmPlayer
+import DataRecordPack
 import PlayerControl
 import NetPackCommon
 import CrossRealmMsg
@@ -116,7 +117,8 @@
         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}
@@ -124,12 +126,12 @@
         
     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
     
@@ -146,7 +148,8 @@
     # 广播子服跨服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
@@ -304,7 +307,7 @@
         
     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)
@@ -312,6 +315,19 @@
         __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
 

--
Gitblit v1.8.0