ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossRealmPK.py
@@ -193,6 +193,26 @@
            
    return
##玩家主动离开副本.
def DoPlayerLeaveFB(curPlayer, tick):
    gameFB = GameWorld.GetGameFB()
    fbStep = gameFB.GetFBStep()
    if fbStep <= FB_State_Waiting and fbStep >= FB_State_Leave:
        return
    leavePlayerID = curPlayer.GetPlayerID()
    roomID = GameWorld.GetGameWorld().GetPropertyID()
    playerIDA = gameFB.GetGameFBDictByKey(GameFBDict_FBPlayerID % 1)
    playerIDB = gameFB.GetGameFBDictByKey(GameFBDict_FBPlayerID % 2)
    loser, loserID = curPlayer, leavePlayerID
    winnerID = playerIDA if playerIDB == loserID else playerIDB
    winner = GameWorld.GetMapCopyPlayerManager().FindPlayerByID(winnerID)
    GameWorld.Log("玩家主动退出,直接算输! roomID=%s,leavePlayerID=%s,loserID=%s,winnerID=%s" % (roomID, leavePlayerID, loserID, winnerID))
    __DoFBPKAllOver(winner, winnerID, loser, loserID, Def_OverType_PlayerExit, tick)
    return
## 获得副本帮助信息
def DoFBHelp(curPlayer, tick):
    return
@@ -260,6 +280,7 @@
                    其他情况则在线玩家获胜,如果没有玩家在线,则最迟离线的获胜
    '''
    winner, winnerID, loser, loserID = None, 0, None, 0
    roomID = GameWorld.GetGameWorld().GetPropertyID()
    gameFB = GameWorld.GetGameFB()
    fbStep = gameFB.GetFBStep()
    copyMapPlayerManager = GameWorld.GetMapCopyPlayerManager()
@@ -271,6 +292,7 @@
        # 时间到还没分出胜负, 根据以下规则决定胜负,这里用玩家ID处理,防止结算时都掉线了导致没有结果
        # 伤害输出 > 优先到达时间 > 剩余HP > 最大HP > playerID
        
        GameWorld.Log("两个人都在线,根据超时规则判断胜负玩家! roomID=%s" % (roomID))
        playerInfoList = []
        for playerID in [playerIDA, playerIDB]:
            player = copyMapPlayerManager.FindPlayerByID(playerID)
@@ -298,11 +320,13 @@
            continue
        winner = player
        winnerID = player.GetPlayerID()
        GameWorld.Log("超时结算,玩家在线,直接获胜: roomID=%s,winnerID=%s" % (roomID, winnerID))
        break
    
    if not winner:
        playerLeaveTickA = gameFB.GetGameFBDictByKey(GameFBDict_PlayerLeaveTick % playerIDA)
        playerLeaveTickB = gameFB.GetGameFBDictByKey(GameFBDict_PlayerLeaveTick % playerIDB)
        GameWorld.Log("超时结算,没有玩家在线,后离线的获胜: playerLeaveTickA=%s,playerLeaveTickB=%s" % (playerLeaveTickA, playerLeaveTickB))
        # 离线tick较大的就是比较晚离线的
        if playerLeaveTickA > playerLeaveTickB:
            winnerID = playerIDA
@@ -474,7 +498,7 @@
    SkillCommon.ResetAllSkillCD(player)
    return
## 跨服PK结束处理
## 跨服PK结束处理,注意 winner、loser 参数可能为None
def __DoFBPKAllOver(winner, winnerID, loser, loserID, overType, tick):
    gameFB = GameWorld.GetGameFB()