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/PlayerViewCache.py | 40 +++++++++++++++++++++++-----------------
1 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py
index 216ce3e..1ba03a5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCache.py
@@ -32,6 +32,7 @@
import ShareDefine
import TurnAttack
import DBDataMgr
+import CrossMsg
import random
import time
@@ -267,9 +268,8 @@
#curCache.SetFamilyEmblemWord(familyBase.GetEmblemWord())
curCache.SetFightPowerTotal(PlayerControl.GetFightPower(curPlayer))
curCache.SetServerID(GameWorld.GetPlayerServerID(curPlayer))
- if isOffline:
- curCache.SetOffTime(int(time.time()))
-
+ curCache.SetOffTime(int(time.time()) if isOffline else 0)
+
# 装备
equipDict = {}
equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
@@ -369,7 +369,7 @@
return curCache
def UpdPlayerViewFamilyInfo(playerID, familyID, familyName, emblemID, emblemWord):
- ## 玩家公会刷新时更新,兼容本服或跨服回传回来更新
+ ## 玩家公会刷新时更新,兼容本服或跨服回传回来更新,跨服自己也更新,本服也更新
curCache = DBDataMgr.GetPlayerViewCacheMgr().GetPlayerViewCache(playerID)
if not curCache:
return
@@ -393,6 +393,7 @@
"Face":curPlayer.GetFace(),
"FacePic":curPlayer.GetFacePic(),
"TitleID":PlayerControl.GetTitleID(curPlayer),
+ "FamilyID":curPlayer.GetFamilyID(),
"ServerID":GameWorld.GetPlayerServerID(curPlayer),
"FightPower":PlayerControl.GetFightPower(curPlayer),
}
@@ -407,6 +408,7 @@
"Face":viewCache.GetFace(),
"FacePic":viewCache.GetFacePic(),
"TitleID":viewCache.GetTitleID(),
+ "FamilyID":viewCache.GetFamilyID(),
"ServerID":viewCache.GetServerID(),
"FightPower":viewCache.GetFightPowerTotal(),
}
@@ -425,10 +427,10 @@
curCache.SetFace(baseInfo.get("Face", curCache.GetFace()))
curCache.SetFacePic(baseInfo.get("FacePic", curCache.GetFacePic()))
curCache.SetTitleID(baseInfo.get("TitleID", curCache.GetTitleID()))
+ curCache.SetFamilyID(baseInfo.get("FamilyID", curCache.GetFamilyID()))
curCache.SetServerID(baseInfo.get("ServerID", curCache.GetServerID()))
curCache.SetFightPowerTotal(baseInfo.get("FightPower", curCache.GetFightPowerTotal()))
- if isOffline:
- curCache.SetOffTime(int(time.time()))
+ curCache.SetOffTime(int(time.time()) if isOffline else 0)
return curCache
def GetRobotByViewCache(curCache):
@@ -520,30 +522,34 @@
#{
# tagHead Head;
# DWORD PlayerID;
-# BYTE EquipClassLV; //大于0为查看指定境界阶装备信息, 0为查看默认信息
+# DWORD ServerID; //玩家服务器ID,发0默认本服玩家
#};
def OnCMViewPlayerInfo(index, clientPack, tick):
curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
+ playerID = curPlayer.GetPlayerID()
- findPlayerID = clientPack.PlayerID
- #equipClassLV = clientPack.EquipClassLV
+ tagPlayerID = clientPack.PlayerID
+ tagServerID = clientPack.ServerID
- clientPack = GetPack_ViewCache(findPlayerID)
- if clientPack:
- NetPackCommon.SendFakePack(curPlayer, clientPack)
- return
- if GameWorld.GetDBPlayerAccIDByID(findPlayerID):
- PlayerControl.NotifyCode(curPlayer, "ViewPlayer_OffLine")
+ # 本服或主服是本服
+ if not tagServerID or tagServerID == GameWorld.GetGameWorld().GetServerID():
+ NetPackCommon.SendFakePack(curPlayer, GetPack_ViewCache(tagPlayerID))
return
- # 跨服玩家发送跨服查询,待扩展...
-
+ # 直接去目标服务器查询
+ CrossMsg.SendToServer(ShareDefine.S2S_ViewTagPlayer, {"tagPlayerID":tagPlayerID}, [tagServerID], ShareDefine.dirType_All, playerID)
+ return
+
+def S2S_ViewTagPlayer(dataMsg, fromServerID, playerID):
+ tagPlayerID = dataMsg["tagPlayerID"]
+ CrossPlayer.SendFakePackByID(playerID, GetPack_ViewCache(tagPlayerID), fromServerID)
return
def GetPack_ViewCache(playerID):
## 获取同步封包 - 玩家查看缓存
curCache = FindViewCache(playerID)
if not curCache:
+ GameWorld.ErrLog("查看玩家找不到目标! playerID=%s" % playerID)
return
clientPack = ChPyNetSendPack.tagSCQueryPlayerCacheResult()
clientPack.PlayerID = curCache.GetPlayerID()
--
Gitblit v1.8.0