ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -137,6 +137,22 @@
        return []
    return fakeIDList
def GetFamilyNameFakeIndex(familyName):
    ## 获取仙盟名是否是系统随机出来的假仙盟名
    # @return: 0-不是, >0 对应的 fakeIndex
    fakeFamilyNameList = IpyGameDataPY.GetFuncEvalCfg('FakeFamilyName')
    randomCnt = IpyGameDataPY.GetFuncCfg('FakeFamilyName', 2)
    for i in xrange(randomCnt):
        fakeID = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FakeFamilyIndex % i)
        if not fakeID:
            continue
        nameIndex = fakeID - 1
        if nameIndex >=0 and nameIndex < len(fakeFamilyNameList):
            fakeName = GameWorld.GbkToCode(fakeFamilyNameList[nameIndex])
            if familyName == fakeName:
                return fakeID
    return 0
def SyncFakeFamilyInfo(curPlayer=None):
    '''通知假仙盟信息'''
    fakeIDList = RandomFakeFamily()
@@ -269,6 +285,10 @@
    #-设置家族成员属性
    DoPlayerJionFamily(curFamily, curPlayer, IPY_GameServer.fmlLeader)
    creatFamilyTimes = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerCreatFamilyTimes)
    # 如果是手动指定仙盟名创建的,判断是否在系统随机的假仙盟里,如果是的话就当做创建系统分配的假仙盟处理
    if familyName and not fakeIndex:
        fakeIndex = GetFamilyNameFakeIndex(familyName)
        GameWorld.DebugLog("    玩家手动输入创建仙盟名与系统随机的假仙盟名相同,默认当做创建假仙盟!fakeIndexID=%s" % (fakeIndex))
    #扣道具(前N个战盟并且假编号在随机编号里不要钱)
    if fakeIndex and fakeIndex in fakeIndexList:
        PlayerDBGSEvent.SetDBGSTrig_ByKey(PlayerDBGSEvent.Def_FakeFamilyIndex % fakeIndexList.index(fakeIndex), 0)
@@ -1716,8 +1736,10 @@
                                          addFamilyMoney, curFamily.GetFamilyActiveValue(), addFamilyActiveValue)
    
    #通知客户端
    #curFamily.Broadcast_FamilyChange()
    curPlayer.Sync_FamilyInfo()
    if addFamilyHornor:
        curFamily.Broadcast_FamilyChange()
    else:
        curPlayer.Sync_FamilyInfo()
    
    #金钱变更时才通知
    if addFamilyMoney != 0:
@@ -1962,8 +1984,10 @@
    
    if not PlayerControl.GetIsTJG(curPlayer):
        #上线重置离线时间为0, 非脱机挂才设置
        curMember.SetExattr2(0)
        curMember.SetExattr2(0) # 在线0,脱机1,>1离线时间
        curPlayer.Sync_FamilyInfo()
    else:
        curMember.SetExattr2(1) # 脱机1
    
    curPlayer.MapServer_FamilyRefresh()
    curMember = GetPlayerFamilyMember(curPlayer)
@@ -2891,7 +2915,7 @@
        GameWorld.Log("GetLeaderOfflineTime->FindMember, None;%s" % leaderID)
        return 0
    offLineTimeNum = curMember.GetExattr2()
    if not offLineTimeNum:
    if not offLineTimeNum or offLineTimeNum == 1:
        return 0
    offLineTime = GameWorld.ChangeTimeNumToStr(offLineTimeNum)
    return GameWorld.GetPastHour(offLineTime)
@@ -2902,7 +2926,7 @@
    for i in range(0, family.GetCount()):
        member = family.GetAt(i) 
        offLineTimeNum = member.GetExattr2()
        if not offLineTimeNum:
        if not offLineTimeNum or offLineTimeNum == 1:
            #有人在线直接返回
            return 0
        if not offLineTime:
@@ -2937,7 +2961,7 @@
        elif toMember2.GetExattr1() < member.GetExattr1():
            toMember2 = member
        offLineHour = GameWorld.GetPastHour(GameWorld.ChangeTimeNumToStr(member.GetExattr2())) if member.GetExattr2() else 0
        offLineHour = GameWorld.GetPastHour(GameWorld.ChangeTimeNumToStr(member.GetExattr2())) if member.GetExattr2() > 1 else 0
        #GameWorld.DebugLog('memberID=%s 离线%s小时,历史贡献度%s'%(member.GetPlayerID(), offLineHour, member.GetExattr1()))
        if offLineHour < 48:
            if not toMember1: