From 0db0ef37cd5e9be802c4f920ed69f018f253aea5 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 12 九月 2024 17:01:42 +0800
Subject: [PATCH] 10050 【后端】角色(Face相关处理)

---
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py                      |   30 +++++++++++++--
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py                         |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py      |    3 +
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py                      |    3 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py        |   22 +++++++++--
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py |    9 ++--
 ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py                             |    7 ++-
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py                         |   10 ++++
 ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py                           |    3 +
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                             |   22 +++++++++--
 10 files changed, 89 insertions(+), 22 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 4a01742..48d2430 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -10461,6 +10461,7 @@
     OnlineType = 0    #(BYTE OnlineType)//在线状态, 0 不在线 1在线
     IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
     ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
+    Face = 0    #(DWORD Face)//基本脸型
     data = None
 
     def __init__(self):
@@ -10480,6 +10481,7 @@
         self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -10495,6 +10497,7 @@
         self.OnlineType = 0
         self.IsInTeam = 0
         self.ServerGroupID = 0
+        self.Face = 0
         return
 
     def GetLength(self):
@@ -10507,6 +10510,7 @@
         length += 2
         length += 1
         length += 1
+        length += 4
         length += 4
 
         return length
@@ -10522,6 +10526,7 @@
         data = CommFunc.WriteBYTE(data, self.OnlineType)
         data = CommFunc.WriteBYTE(data, self.IsInTeam)
         data = CommFunc.WriteDWORD(data, self.ServerGroupID)
+        data = CommFunc.WriteDWORD(data, self.Face)
         return data
 
     def OutputString(self):
@@ -10534,7 +10539,8 @@
                                 RealmLV:%d,
                                 OnlineType:%d,
                                 IsInTeam:%d,
-                                ServerGroupID:%d
+                                ServerGroupID:%d,
+                                Face:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -10545,7 +10551,8 @@
                                 self.RealmLV,
                                 self.OnlineType,
                                 self.IsInTeam,
-                                self.ServerGroupID
+                                self.ServerGroupID,
+                                self.Face
                                 )
         return DumpString
 
@@ -10620,6 +10627,7 @@
     LV = 0    #(WORD LV)//等级
     RealmLV = 0    #(WORD RealmLV)//境界
     OnlineType = 0    #(BYTE OnlineType)//0不在线 1在线 2脱机在线
+    Face = 0    #(DWORD Face)//基本脸型
     data = None
 
     def __init__(self):
@@ -10634,6 +10642,7 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -10643,6 +10652,7 @@
         self.LV = 0
         self.RealmLV = 0
         self.OnlineType = 0
+        self.Face = 0
         return
 
     def GetLength(self):
@@ -10653,6 +10663,7 @@
         length += 2
         length += 2
         length += 1
+        length += 4
 
         return length
 
@@ -10664,6 +10675,7 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteBYTE(data, self.OnlineType)
+        data = CommFunc.WriteDWORD(data, self.Face)
         return data
 
     def OutputString(self):
@@ -10673,7 +10685,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
-                                OnlineType:%d
+                                OnlineType:%d,
+                                Face:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -10681,7 +10694,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
-                                self.OnlineType
+                                self.OnlineType,
+                                self.Face
                                 )
         return DumpString
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
index 1c6f7dc..f6e7b9f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -880,7 +880,6 @@
         
     elif packType == IPY_GameServer.CDBPlayerRefresh_LV:
         curPlayer.SetLV(packValue)
-        PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
         #玩家等级记录
         playerID = curPlayer.GetID()
         if playerID in PyGameData.g_todayPlayerLVDict:
@@ -930,10 +929,14 @@
     
     elif packType == IPY_GameServer.CDBPlayerRefresh_OfficialRank:
         curPlayer.SetOfficialRank(packValue)
-        PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
         #更新排行榜的境界
         PlayerBillboard.UpdateBillboardRealm(curPlayer)
+    elif packType == IPY_GameServer.CDBPlayerRefresh_Face:
+        curPlayer.SetFace(packValue)
+        PlayerBillboard.UpdateBillboardFace(curPlayer)
         
+    #社交信息
+    PlayerSocial.UpdateSocialInfo(curPlayer.GetID(), packType, packValue)
     #组队成员刷新
     PlayerTeam.PlayerTeamMemberRefresh(curPlayer, packType, packValue, tick)
     #家族刷新
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
index 9b015b2..58dc777 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
@@ -642,10 +642,11 @@
 
 def GetBillboardOperateInfo(curPlayer):
     # 排行榜中所保存的运营商相关信息
-    platform = curPlayer.GetAccID()
-    if platform in ["tencent"]:
-        return curPlayer.GetOperateInfo()
-    return platform
+    return curPlayer.GetFace()
+#    platform = curPlayer.GetAccID()
+#    if platform in ["tencent"]:
+#        return curPlayer.GetOperateInfo()
+#    return platform
 
 def UpdateFamilyBillboard(bType, familyBillInfo, cmpValue, cmpValue2=0):
     ## 更新仙盟排行榜
@@ -966,3 +967,24 @@
         
     return
 
+def UpdateBillboardFace(curPlayer):
+    ## 更新排行榜中的玩家头像
+    
+    curPlayerID = curPlayer.GetID()
+    curFace = curPlayer.GetFace()
+    
+    billboardMgr = GameWorld.GetBillboard()
+    for billboardIndex in ShareDefine.BillboardTypeList:
+        billBoard = billboardMgr.FindBillboard(billboardIndex)
+        if not billBoard:
+            #找不到这类型排行榜
+            continue
+        
+        playerBillBoardData = billBoard.FindByID(curPlayerID)
+        if not playerBillBoardData:
+            #该玩家没有在排行榜上
+            continue
+        
+        playerBillBoardData.SetName2(str(curFace))
+        
+    return
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
index 8b22ad5..b30be55 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFamily.py
@@ -2153,7 +2153,7 @@
     curMember.SetLV(curPlayer.GetLV())
     curMember.SetReincarnationLv(curPlayer.GetReincarnationLv())
     curMember.SetJob(curPlayer.GetJob())
-    curMember.SetOperateInfo(curPlayer.GetOperateInfo())
+    curMember.SetOperateInfo(curPlayer.GetFace()) #curPlayer.GetOperateInfo()
     curMember.SetOfficialRank(curPlayer.GetOfficialRank())
     return
 #---------------------------------------------------------------------
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py
index 0ad02c8..24c92d0 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py
@@ -841,6 +841,7 @@
         self.playerInfo.LV = curPlayer.GetLV()
         self.playerInfo.RealmLV = curPlayer.GetOfficialRank()
         self.playerInfo.OnlineType = 1      # 0 不在线  1 在线 2 脱机在线  
+        self.playerInfo.Face = curPlayer.GetFace()
         if not self.playerInfo.RefCount:
             self.playerInfo.RefCount = 1
         return
@@ -853,6 +854,7 @@
         packStruct.LV = self.playerInfo.LV
         packStruct.RealmLV = self.playerInfo.RealmLV
         packStruct.OnlineType = self.playerInfo.OnlineType
+        packStruct.Face = self.playerInfo.Face
         return packStruct
     
     # 更新玩家数据引用, 根据需求是否更新玩家数据
@@ -900,6 +902,7 @@
             playerSocial.LV = 1
             playerSocial.RealmLV = 1
             playerSocial.OnlineType = ChConfig.Def_Offline
+            playerSocial.Face = 0
         else:
             cacheDict = PlayerViewCache.GetCachePropDataDict(curCache)
     
@@ -910,6 +913,7 @@
             playerSocial.LV = cacheDict["LV"]
             playerSocial.RealmLV = cacheDict["RealmLV"]
             playerSocial.OnlineType = ChConfig.Def_Offline
+            playerSocial.Face = cacheDict.get("Face", 0)
             
         self.SocialInfo[playerID] = SocialPlayerData(playerSocial)
         socialPlayer = self.SocialInfo[playerID]
@@ -1081,7 +1085,11 @@
         socialPlayer.playerInfo.RealmLV = value
     elif notifyType == IPY_PlayerDefine.CDBPlayerRefresh_PlayerName:
         socialPlayer.playerInfo.PlayerName = value
-        
+    elif notifyType == IPY_PlayerDefine.CDBPlayerRefresh_Face:
+        socialPlayer.playerInfo.Face = value
+    else:
+        return
+    
     Notify_All(playerID, notifyType, value)
     return
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
index 110ce43..c6f24d8 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
@@ -467,7 +467,8 @@
         coupleName = couple.GetCoupleName(playerID)
         coupleJob = couple.GetCoupleJob(playerID)
         bridePriceMaxID = couple.BridePriceMaxID
-    extraValueStr = "%s|%s|%s|%s" % (extraValueStr, coupleName, coupleJob, bridePriceMaxID)
+    face = player.GetFace()
+    extraValueStr = "%s|%s|%s|%s|%s" % (extraValueStr, coupleName, coupleJob, bridePriceMaxID, face)
     return extraValueStr
 
 
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
index 9e35962..9f40e7c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
@@ -406,6 +406,7 @@
             answerPack.RealmLV = 1
             answerPack.OnlineType = ChConfig.Def_Offline
             answerPack.ServerGroupID = 0
+            answerPack.Face = 0
         else:
             cacheDict = GetCachePropDataDict(curCache)
             answerPack.PlayerID = clientPack.PlayerID
@@ -414,6 +415,7 @@
             answerPack.LV = cacheDict["LV"]
             answerPack.RealmLV = cacheDict["RealmLV"]
             answerPack.OnlineType = ChConfig.Def_Offline
+            answerPack.Face = cacheDict.get("Face", 0)
             
             if GameWorld.IsCrossServer():
                 answerPack.ServerGroupID = cacheDict.get("ServerGroupID", 0)
@@ -428,6 +430,7 @@
         answerPack.OnlineType = ChConfig.Def_Online
         answerPack.IsInTeam = tagPlayer.GetTeamID() > 0
         answerPack.ServerGroupID = PlayerControl.GetPlayerServerGroupID(tagPlayer)
+        answerPack.Face = tagPlayer.GetFace()
 
     curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
     NetPackCommon.SendFakePack(curPlayer, answerPack)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 4a01742..48d2430 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -10461,6 +10461,7 @@
     OnlineType = 0    #(BYTE OnlineType)//在线状态, 0 不在线 1在线
     IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
     ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
+    Face = 0    #(DWORD Face)//基本脸型
     data = None
 
     def __init__(self):
@@ -10480,6 +10481,7 @@
         self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -10495,6 +10497,7 @@
         self.OnlineType = 0
         self.IsInTeam = 0
         self.ServerGroupID = 0
+        self.Face = 0
         return
 
     def GetLength(self):
@@ -10507,6 +10510,7 @@
         length += 2
         length += 1
         length += 1
+        length += 4
         length += 4
 
         return length
@@ -10522,6 +10526,7 @@
         data = CommFunc.WriteBYTE(data, self.OnlineType)
         data = CommFunc.WriteBYTE(data, self.IsInTeam)
         data = CommFunc.WriteDWORD(data, self.ServerGroupID)
+        data = CommFunc.WriteDWORD(data, self.Face)
         return data
 
     def OutputString(self):
@@ -10534,7 +10539,8 @@
                                 RealmLV:%d,
                                 OnlineType:%d,
                                 IsInTeam:%d,
-                                ServerGroupID:%d
+                                ServerGroupID:%d,
+                                Face:%d
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -10545,7 +10551,8 @@
                                 self.RealmLV,
                                 self.OnlineType,
                                 self.IsInTeam,
-                                self.ServerGroupID
+                                self.ServerGroupID,
+                                self.Face
                                 )
         return DumpString
 
@@ -10620,6 +10627,7 @@
     LV = 0    #(WORD LV)//等级
     RealmLV = 0    #(WORD RealmLV)//境界
     OnlineType = 0    #(BYTE OnlineType)//0不在线 1在线 2脱机在线
+    Face = 0    #(DWORD Face)//基本脸型
     data = None
 
     def __init__(self):
@@ -10634,6 +10642,7 @@
         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         return _pos
 
     def Clear(self):
@@ -10643,6 +10652,7 @@
         self.LV = 0
         self.RealmLV = 0
         self.OnlineType = 0
+        self.Face = 0
         return
 
     def GetLength(self):
@@ -10653,6 +10663,7 @@
         length += 2
         length += 2
         length += 1
+        length += 4
 
         return length
 
@@ -10664,6 +10675,7 @@
         data = CommFunc.WriteWORD(data, self.LV)
         data = CommFunc.WriteWORD(data, self.RealmLV)
         data = CommFunc.WriteBYTE(data, self.OnlineType)
+        data = CommFunc.WriteDWORD(data, self.Face)
         return data
 
     def OutputString(self):
@@ -10673,7 +10685,8 @@
                                 Job:%d,
                                 LV:%d,
                                 RealmLV:%d,
-                                OnlineType:%d
+                                OnlineType:%d,
+                                Face:%d
                                 '''\
                                 %(
                                 self.PlayerID,
@@ -10681,7 +10694,8 @@
                                 self.Job,
                                 self.LV,
                                 self.RealmLV,
-                                self.OnlineType
+                                self.OnlineType,
+                                self.Face
                                 )
         return DumpString
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
index 36ed795..2925c43 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBillboard.py
@@ -32,10 +32,11 @@
 
 def GetBillboardOperateInfo(curPlayer):
     # 排行榜中所保存的运营商相关信息
-    platform = curPlayer.GetAccID()
-    if platform in ["tencent"]:
-        return curPlayer.GetOperateInfo()
-    return platform
+    return curPlayer.GetFace()
+#    platform = curPlayer.GetAccID()
+#    if platform in ["tencent"]:
+#        return curPlayer.GetOperateInfo()
+#    return platform
 
 def GetBillboardJob(curPlayer): return curPlayer.GetJob()
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
index fe1d4b5..b97d8eb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
@@ -399,7 +399,8 @@
     coupleName = PlayerControl.GetCoupleName(objTalk)
     coupleJob = PlayerControl.GetCoupleJob(objTalk)
     bridePriceMaxID = PlayerControl.GetBridePriceMaxID(objTalk)
-    extraValueStr = "%s|%s|%s|%s" % (extraValueStr, coupleName, coupleJob, bridePriceMaxID)
+    face = objTalk.GetFace()
+    extraValueStr = "%s|%s|%s|%s|%s" % (extraValueStr, coupleName, coupleJob, bridePriceMaxID, face)
     return extraValueStr
 
 

--
Gitblit v1.8.0