From bc5f3f1c88d225109fa39a85b209ef13f5fb52a9 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 06 二月 2026 21:28:13 +0800
Subject: [PATCH] 66 【公会】基础主体-服务端(跨服公会所有基本功能支持、跨服砍价支持;修改查看目标公会、查看目标玩家方式;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyEmblem.py |   56 +++++++++++++++++++++++++++++---------------------------
 1 files changed, 29 insertions(+), 27 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyEmblem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyEmblem.py
index b94f27e..d32beed 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFamilyEmblem.py
+++ b/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

--
Gitblit v1.8.0