ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_CrossFamilyFlagwar.py
@@ -146,13 +146,12 @@
        return
    
    def popPlayerFlag(self, playerID):
        self.playerFlagDict.pop(playerID, None)
        flagNPC = self.playerFlagDict.pop(playerID, None)
        if not flagNPC:
            return
        npcID = flagNPC.GetNPCID()
        flagOwner = self.worldHelpDict.get("flagOwner", {})
        for npcIDStr, playerInfo in flagOwner.items():
            if playerID == playerInfo[0]:
                flagOwner[npcIDStr] = [0, "", "", 0]
                break
        flagOwner[str(npcID)] = [0, "", "", 0]
        self.worldHelpDict["flagOwner"] = flagOwner
        return
    
@@ -279,6 +278,8 @@
        self.outsideFlagTick = 0 # 超出战旗范围计算tick
        self.outsideFlagNotifySecond = 0 # 通知超出范围秒
        
        self.leaveState = 0 # 1-主动离开;2-掉线
        self.playerHelpDict = {} # 未通知的玩家变更信息
        return
    
@@ -396,7 +397,9 @@
    batPlayer.doPlayerEnter(curPlayer, tick)
    
    batFamily.addJoinPlayer(playerID)
    batFamily.setPlayerToRebornPoint(curPlayer)
    if batPlayer.leaveState != 2: # 掉线的不打回出生点
        batFamily.setPlayerToRebornPoint(curPlayer)
    batPlayer.leaveState = 0
    
    if fbStep == FB_Step_Prepare:
        notify_tick = GetBFStepTime()[Time_Prepare] * 1000 - (tick - GameWorld.GetGameFB().GetFBStepTick())
@@ -471,14 +474,27 @@
        
    mgr = GetBattleMgr()
    playerID = curPlayer.GetPlayerID()
    GameWorld.Log("DoExitFB... playerID=%s,fbStep=%s" % (playerID, fbStep), mgr.zoneID)
    
    batPlayer = mgr.getBattlePlayer(playerID)
    batPlayer.onlineCalcTick = 0
    if batPlayer.leaveState != 1:
        batPlayer.leaveState = 2
    GameWorld.Log("DoExitFB... playerID=%s,fbStep=%s,leaveState=%s" % (playerID, fbStep, batPlayer.leaveState), mgr.zoneID)
    return
##玩家主动离开副本.
def DoPlayerLeaveFB(curPlayer, tick):
    gameFB = GameWorld.GetGameFB()
    fbStep = gameFB.GetFBStep()
    if fbStep != FB_Step_Fighting:
        return
    mgr = GetBattleMgr()
    playerID = curPlayer.GetPlayerID()
    batPlayer = mgr.getBattlePlayer(playerID)
    batPlayer.leaveState = 1
    GameWorld.Log("DoPlayerLeaveFB... playerID=%s,fbStep=%s" % (playerID, fbStep), mgr.zoneID)
    return
##副本总逻辑计时器
@@ -606,6 +622,7 @@
    if not mgr.playerFlagDict:
        return
    
    isUpd = False
    outsideR, protectSeconds = IpyGameDataPY.GetFuncEvalCfg("CrossFamilyFlagwarFlag", 4)
    
    copyMapMgr = GameWorld.GetMapCopyPlayerManager()
@@ -614,6 +631,7 @@
        if not curPlayer:
            # 找不到玩家,直接归还战旗
            setFlagOwner(flagNPC, None, tick)
            isUpd = True
            continue
        
        flagPosX, flagPosY = flagNPC.GetPosX(), flagNPC.GetPosY()
@@ -633,6 +651,10 @@
                    PlayerControl.NotifyCode(curPlayer, "CrossFamilyFlagwarOutsideflag", [flagNPC.GetNPCID(), remainSecond])
                continue
            setFlagOwner(flagNPC, None, tick)
            isUpd = True
    if isUpd:
        NotifyCrossFamilyFlagHelp()
    return
def setFlagOwner(flagNPC, newOwner, tick):
@@ -822,6 +844,7 @@
    
    if flagType:
        setFlagOwner(curNPC, curPlayer, tick)
        NotifyCrossFamilyFlagHelp()
        
    return
@@ -854,6 +877,7 @@
    # 获得对方战旗归属
    if defPlayerID in mgr.playerFlagDict:
        setFlagOwner(mgr.playerFlagDict[defPlayerID], curPlayer, tick)
        NotifyCrossFamilyFlagHelp()
    return True
def OnCanFBReborn(curPlayer, rebornType):