ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldFamilyWar.py
@@ -223,7 +223,7 @@
        
    if familyWarRank:
        GameWorld.Log("解散仙盟,触发更新仙盟联赛排名: delFamilyID=%s,familyWarRank=%s" % (familyID, familyWarRank))
        PlayerFamily.UpdFamilyWarRank()
        UpdFamilyWarRank()
        
    # 补发未分配的连胜奖励
    AllotWinRewardBySystem(GetFamilyWarChampionRecData(), True)
@@ -294,7 +294,9 @@
    
    # 下周分组定级
    elif stateValue == FamilyWarState_NextWeekGroupRank:
        DoLogicFamilyWar_NextWeekGroupRank()
        pass
        #废弃该阶段逻辑,因为不再支持单次活动周期跨天,所以改为过天时触发检查一下即可
        #DoLogicFamilyWar_NextWeekGroupRank()
        
    else:
        GameWorld.ErrLog("不存在该仙盟联赛状态!stateValue=%s" % stateValue)
@@ -727,6 +729,10 @@
        
    return
def DoOnDay():
    DoLogicFamilyWar_NextWeekGroupRank()
    return
def DoLogicFamilyWar_NextWeekGroupRank():
    ''' 下周分组定级
        最低级别组: 不设置联赛级别, 下周最低级别组名单由其他无联赛级别仙盟总战力排行得到
@@ -735,7 +741,35 @@
    # 这里补触发一次,防止总结算的时候服务器异常没有成功结算
    #     或 次轮没有比赛导致没有结算(次轮的仙盟都解散了才可能出现,一般不可能出现,可不考虑,如果真出现了,会在周六凌晨结算)
    __DoLogicFamilyWarAllOver()
    PlayerFamily.UpdFamilyWarRank()
    #UpdFamilyWarRank()
    return
def UpdFamilyWarRank():
    '''更新仙盟联赛排名
    注意:该逻辑在仙盟联赛周期中不可执行,仅在下周分组定级状态下可更新,由程序控制,在活动结束后结算调用
    仙盟联赛新一周期开始时、仙盟解散时 会触发该逻辑
    '''
    #gameWorld = GameWorld.GetGameWorld()
    #state = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_FBFuncState % ChConfig.Def_FBMapID_FamilyWar)
    #if state != GameWorldFamilyWar.FamilyWarState_NextWeekGroupRank:
    #    GameWorld.DebugLog("非下周分组定级阶段不可更新仙盟联赛排名!")
    #    return
    GameWorld.Log("=== 更新仙盟联赛排名 ===")
    familyMgr = GameWorld.GetFamilyManager()
    sortFamilyIDList = PlayerFamily.GetSortFamilyIDList()
    for rank, familyID in enumerate(sortFamilyIDList, 1):
        family = familyMgr.FindFamily(familyID)
        if not family:
            continue
        curRank = PlayerFamily.GetFamilyWarRank(family)
        if not curRank:
            break
        if curRank != rank:
            PlayerFamily.SetFamilyWarRank(family, rank)
            GameWorld.Log("    更新仙盟联赛仙盟排名: familyID=%s,curRank=%s,updRank=%s" % (family.GetID(), curRank, rank))
    return
def __DoLogicFamilyWarAllOver():
@@ -760,6 +794,10 @@
    warBatRecList = universalRecMgr.GetTypeList(ShareDefine.Def_UniversalGameRecType_FamilyWarBattle)
    if not warBatRecList.Count():
        GameWorld.Log("没有仙盟联赛比赛记录,不需要结算!")
        curRoundNum = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_Round)
        PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_Round, 0) # 重置对战轮次
        PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_AllOver, 1) # 设置已经处理过总结算
        GameWorld.Log("重置轮次信息,设置已结算!curRoundNum=%s" % curRoundNum)
        return
    for i in xrange(warBatRecList.Count()):
        recData = warBatRecList.At(i)
@@ -864,6 +902,8 @@
    
    PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_Round, 0) # 重置对战轮次
    PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FamilyWar_AllOver, 1) # 设置已经处理过总结算
    UpdFamilyWarRank() # 改为比赛结束后默认更新联赛排名
    return
def UpdFamilyWarChampion(championFamilyID):