ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyEmblem.py
@@ -46,29 +46,32 @@
    defaultEmblemIDList = []
    curTime = int(time.time())
    actionType = ShareDefine.Def_ActionType_FamilyEmblem
    familyManager = DBDataMgr.GetFamilyMgr()
    for i in xrange(familyManager.GetCount()):
        family = familyManager.GetAt(i)
        if not family:
            continue
        familyID = family.GetID()
        familyAction = familyManager.GetFamilyActionMgr().GetFamilyAction(familyID, actionType)
        for index in range(familyAction.Count())[::-1]: # 可能触发删除,倒序遍历
            emblemActionObj = familyAction.At(index)
            emblemID = GetActionEmblemID(emblemActionObj)
            endTime = GetActionEmblemEndTime(emblemActionObj)
            if not endTime or endTime > curTime:
                #GameWorld.Log("检查仙盟徽章未过期! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
    familyMgr = DBDataMgr.GetFamilyMgr()
    # 每分钟刷新下仙盟战力排序
    for zoneID in familyMgr.GetZoneIDListThisServer():
        zoneMgr = familyMgr.GetZoneFamilyMgr(zoneID)
        for index in range(zoneMgr.GetCount()):
            family = zoneMgr.GetAt(index)
            if not family:
                continue
            familyAction.DelAction(index)
            GameWorld.Log("删除过期仙盟徽章! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
            if family.GetEmblemID() == emblemID:
                if not defaultEmblemIDList:
                    defaultEmblemIDList = GetDefaultFamilyEmblemIDList()
                updEmblemID = random.choice(defaultEmblemIDList) if defaultEmblemIDList else 0
                GameWorld.Log("仙盟佩戴徽章过期恢复随机默认徽章! familyID=%s,emblemID=%s,endTime=%s,updEmblemID=%s" % (familyID, emblemID, endTime, updEmblemID))
                family.SetEmblemID(updEmblemID)
                PlayerFamily.Broadcast_FamilyChange(familyID, PlayerFamily.FamilyChangeType_EChange)
            familyID = family.GetID()
            familyAction = familyMgr.GetFamilyActionMgr().GetFamilyAction(familyID, actionType)
            for index in range(familyAction.Count())[::-1]: # 可能触发删除,倒序遍历
                emblemActionObj = familyAction.At(index)
                emblemID = GetActionEmblemID(emblemActionObj)
                endTime = GetActionEmblemEndTime(emblemActionObj)
                if not endTime or endTime > curTime:
                    #GameWorld.Log("检查仙盟徽章未过期! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
                    continue
                familyAction.DelAction(index)
                GameWorld.Log("删除过期仙盟徽章! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
                if family.GetEmblemID() == emblemID:
                    if not defaultEmblemIDList:
                        defaultEmblemIDList = GetDefaultFamilyEmblemIDList()
                    updEmblemID = random.choice(defaultEmblemIDList) if defaultEmblemIDList else 0
                    GameWorld.Log("仙盟佩戴徽章过期恢复随机默认徽章! familyID=%s,emblemID=%s,endTime=%s,updEmblemID=%s" % (familyID, emblemID, endTime, updEmblemID))
                    family.SetEmblemID(updEmblemID)
                    PlayerFamily.Broadcast_FamilyInfo(familyID, isSyncMem=False)
    return
def GetFamilyEmblemActionData(familyID, emblemID):
@@ -134,10 +137,10 @@
    PlayerFamily.SendFamilyAction(emblemActionObj)
    return emblemActionObj
def OnChangeFamilyEmblem(curPlayer, emblemID, emblemWord=""):
def OnChangeFamilyEmblem(crossPlayer, emblemID, emblemWord=""):
    ## 修改仙盟徽章
    playerID = curPlayer.GetPlayerID()
    familyID = curPlayer.GetFamilyID()
    playerID = crossPlayer.GetPlayerID()
    familyID = crossPlayer.GetFamilyID()
    if familyID <= 0:
        return
    familyMgr = DBDataMgr.GetFamilyMgr()
@@ -179,6 +182,5 @@
    curFamily.SetEmblemID(emblemID)
    if emblemWord:
        curFamily.SetEmblemWord(emblemWord)
    PlayerFamily.Sync_FamilyInfo(curPlayer)
    PlayerFamily.Broadcast_FamilyChange(familyID, PlayerFamily.FamilyChangeType_EChange, excludeIDList=[playerID])
    PlayerFamily.Broadcast_FamilyInfo(familyID, isSyncMem=False)
    return True