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