From cb45ad934671c0c54c1024f834e630109dfa5c73 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 14 四月 2025 15:01:13 +0800
Subject: [PATCH] 10367 【越南】【英语】【BT】【砍树】仙盟攻城战-服务端(增加查看其他指定仙盟/跨服仙盟支持;增加领取点赞奖励;修改仙盟轮次伤害计算规则受当前城池剩余生命影响;)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index ff60117..d190580 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -919,6 +919,63 @@
     PlayerFamilyEmblem.OnChangeFamilyEmblem(curPlayer, changeEmblemID)
     return
 
+#// A4 14 查看目标仙盟 #tagCGViewTagFamily
+#
+#struct    tagCGViewTagFamily
+#{
+#    tagHead        Head;
+#    DWORD        TagFamilyID;    // 目标仙盟ID,支持查看跨服仙盟
+#};
+def OnViewTagFamily(index, clientData, tick):
+    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+    playerID = curPlayer.GetPlayerID()
+    tagFamilyID = clientData.TagFamilyID
+    clientPack = __GetTagFamilyInfoPack(tagFamilyID)
+    if not clientPack:
+        # 发送跨服服务器查询,可能是跨服仙盟
+        dataMsg = {"playerID":playerID, "tagFamilyID":tagFamilyID}
+        CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_QueryCrossFamily, dataMsg)
+        return
+    NetPackCommon.SendFakePack(curPlayer, clientPack)
+    return
+
+def __GetTagFamilyInfoPack(tagFamilyID):
+    ## 获取查看目标仙盟同步封包
+    familyManager = GameWorld.GetFamilyManager()
+    family = familyManager.FindFamily(tagFamilyID)
+    if not family:
+        return
+    clientPack = ChPyNetSendPack.tagGCTagFamilyInfo()
+    clientPack.FamilyID = tagFamilyID
+    clientPack.FamilyName = family.GetName()
+    clientPack.FamilyLV = family.GetLV()
+    clientPack.Broadcast = family.GetBroadcast()
+    clientPack.BroadcastLen = len(clientPack.Broadcast)
+    clientPack.Member = []
+    for index in range(family.GetCount()):
+        curMember = family.GetAt(index)
+        mem = ChPyNetSendPack.tagGCTagFamilyMember()
+        mem.PlayerID = curMember.GetPlayerID()
+        mem.Name = curMember.GetName()
+        mem.NameLen = len(mem.Name)
+        mem.FamilyLV = curMember.GetFamilyLV()
+        mem.LV = curMember.GetLV()
+        mem.Job = curMember.GetJob()
+        mem.Face = curMember.GetFace()
+        mem.FacePic = curMember.GetFacePic()
+        mem.OfficialRank = curMember.GetOfficialRank()
+        fightPower = GetMemberFightPower(curMember)
+        mem.FightPower = fightPower % ChConfig.Def_PerPointValue
+        mem.FightPowerEx = fightPower / ChConfig.Def_PerPointValue
+        clientPack.Member.append(mem)
+    clientPack.MemberCount = len(clientPack.Member)
+    familyFightPower = GetFamilyTotalFightPower(family)
+    clientPack.FightPower = familyFightPower % ChConfig.Def_PerPointValue
+    clientPack.FightPowerEx = familyFightPower / ChConfig.Def_PerPointValue
+    clientPack.EmblemID = GetFamilyEmblemID(family)
+    clientPack.ServerID = family.GetServerID()
+    return clientPack
+
 #class   IPY_CFamilyChangeBroadcast
 #{
 #public:
@@ -4193,3 +4250,18 @@
         
     return
 
+def ClientServerMsg_QueryCrossFamily(serverGroupID, msgData):
+    ## 子服查询跨服仙盟
+    playerID = msgData["playerID"]
+    tagFamilyID = msgData.get("tagFamilyID", 0)
+    if tagFamilyID:
+        clientPack = __GetTagFamilyInfoPack(tagFamilyID)
+        if clientPack:
+            NetPackCommon.SendFakePackByCross({playerID:serverGroupID}, clientPack)
+        else:
+            PlayerControl.NotifyCodeCross(serverGroupID, playerID, "TagFamilyNotExist")
+        return
+    
+    # 可扩展查看跨服仙盟列表信息...
+    
+    return

--
Gitblit v1.8.0