| | |
| | | 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)
|
| | | family.Broadcast_FamilyChange()
|
| | | 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):
|
| | |
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, actionType)
|
| | | for index in range(familyAction.Count()):
|
| | | familyActionObj = familyAction.At(index)
|
| | | if emblemID == familyActionObj.GetValue1():
|
| | | if emblemID == GetActionEmblemID(familyActionObj):
|
| | | return familyActionObj
|
| | | return
|
| | |
|
| | |
| | | actionType = ShareDefine.Def_ActionType_FamilyEmblem
|
| | | familyAction = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, actionType)
|
| | | emblemActionObj = familyAction.AddAction()
|
| | | emblemActionObj.SetTime(curTime)
|
| | | emblemActionObj.SetFamilyId(familyID)
|
| | | emblemActionObj.SetActionType(actionType)
|
| | |
|
| | | if not emblemActionObj:
|
| | | return
|
| | |
| | | SetActionEmblemEndTime(emblemActionObj, updEndTime)
|
| | |
|
| | | # ֪ͨ
|
| | | #PlayerFamilyAction.SendFamilyAction(emblemActionObj)
|
| | | PlayerFamily.SendFamilyAction(emblemActionObj)
|
| | | return emblemActionObj
|
| | |
|
| | | def OnChangeFamilyEmblem(curPlayer, emblemID):
|
| | | def OnChangeFamilyEmblem(crossPlayer, emblemID, emblemWord=""):
|
| | | ## 修改仙盟徽章
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | familyManager = PlayerFamily.GetFamilyMgr()
|
| | | curFamily = familyManager.FindFamily(familyID)
|
| | | playerID = crossPlayer.GetPlayerID()
|
| | | familyID = crossPlayer.GetFamilyID()
|
| | | if familyID <= 0:
|
| | | return
|
| | | familyMgr = DBDataMgr.GetFamilyMgr()
|
| | | curFamily = familyMgr.FindFamily(familyID)
|
| | | if not curFamily:
|
| | | return
|
| | | familyID = curFamily.GetID()
|
| | | |
| | | if curFamily.GetLeaderID() != playerID:
|
| | | GameWorld.DebugLog("只有盟主可以修改徽章!", playerID)
|
| | | return
|
| | |
| | | GameWorld.Log("该徽章已过期! familyID=%s,emblemID=%s,endTime=%s" % (familyID, emblemID, endTime))
|
| | | return
|
| | |
|
| | | GameWorld.DebugLog("更换仙盟徽章! familyID=%s,emblemID=%s" % (familyID, emblemID), playerID)
|
| | | GameWorld.DebugLog("更换仙盟徽章! familyID=%s,emblemID=%s,emblemWord=%s" % (familyID, emblemID, GameWorld.CodeToGbk(emblemWord)), playerID)
|
| | | curFamily.SetEmblemID(emblemID)
|
| | | #PlayerFamily.SendPack_MapServer_PlayerFamilyRefresh(curFamily)
|
| | | curFamily.Broadcast_FamilyChange()
|
| | | return
|
| | | if emblemWord:
|
| | | curFamily.SetEmblemWord(emblemWord)
|
| | | PlayerFamily.Broadcast_FamilyInfo(familyID, isSyncMem=False) # 徽章修改
|
| | | return True
|