From e74b2fdd8a052d7c40adfeab9b881d7cb2cc8369 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 18 十二月 2024 15:41:47 +0800
Subject: [PATCH] 10297 【越南】【英语】【砍树】【tqxbqy】轮回殿-服务端(增加GM命令: Lunhui)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 50 insertions(+), 2 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py
index 6b70901..778d090 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerSocial.py
@@ -38,6 +38,9 @@
# 添加社交对象
def Add(self, tagID, isNotify=True):
+ if not PlayerControl.GetDBPlayerAccIDByID(tagID):
+ GameWorld.ErrLog("试图添加非本服玩家社交对象: tagID=%s,GroupType=%s" % (tagID, self.GroupType))
+ return False
GameWorld.DebugLog("SocialPlayers----Add %s-%s-%s"%(self.GroupType, self.PlayerID, tagID))
if tagID in self.SocialDict:
GameWorld.DebugLog("SocialPlayers----Add 重复")
@@ -329,6 +332,8 @@
if not curPlayer:
return nowIntimacy
+ self.__SyncMapServerCoupleIntimacy(curPlayer, tagID)
+
tagName = ""
socialPlayer = PyDataManager.GetPersonalSocialManager().GetSocialPlayer(tagID)
if socialPlayer:
@@ -349,8 +354,31 @@
return 0
intimacyObj.Intimacy = setValue
if curPlayer:
+ self.__SyncMapServerCoupleIntimacy(curPlayer, tagID)
self.Sync_SocialsInfo(curPlayer, [tagID])
return intimacyObj.Intimacy
+
+ def __SyncMapServerCoupleIntimacy(self, curPlayer, tagID):
+ ## 同步地图玩家伴侣亲密度
+ playerID = curPlayer.GetPlayerID()
+ couple = PyDataManager.GetDBPyCoupleManager().GetCouple(playerID)
+ if not couple:
+ return
+ if couple.GetCoupleID(playerID) != tagID:
+ return
+ self.SyncMapServerIntimacy(curPlayer, tagID)
+ return
+
+ def SyncMapServerIntimacy(self, curPlayer, tagID):
+ ## 同步地图玩家伴侣亲密度
+ playerID = curPlayer.GetPlayerID()
+ intimacyValue = 0
+ intimacyObj = self.GetIntimacyObj(tagID)
+ if intimacyObj:
+ intimacyValue = intimacyObj.Intimacy
+ cmdInfo = ["SyncMapServerIntimacy", [tagID, intimacyValue]]
+ PlayerControl.MapServer_QueryPlayer_DoLogic(curPlayer, "Love", cmdInfo, playerID)
+ return
# 整个游戏的亲密管理
class IntimacyManager(object):
@@ -399,6 +427,9 @@
# 获取亲密组
def GetIntimacys(self, playerID):
+ if not PlayerControl.GetDBPlayerAccIDByID(playerID):
+ GameWorld.ErrLog("试图获取非本服玩家亲密组: playerID=%s" % playerID)
+ return
if playerID not in self.PlayerIntimacys:
self.PlayerIntimacys[playerID] = Intimacys(playerID)
return self.PlayerIntimacys[playerID]
@@ -810,6 +841,8 @@
self.playerInfo.LV = curPlayer.GetLV()
self.playerInfo.RealmLV = curPlayer.GetOfficialRank()
self.playerInfo.OnlineType = 1 # 0 不在线 1 在线 2 脱机在线
+ self.playerInfo.Face = curPlayer.GetFace()
+ self.playerInfo.FacePic = curPlayer.GetFacePic()
if not self.playerInfo.RefCount:
self.playerInfo.RefCount = 1
return
@@ -822,6 +855,8 @@
packStruct.LV = self.playerInfo.LV
packStruct.RealmLV = self.playerInfo.RealmLV
packStruct.OnlineType = self.playerInfo.OnlineType
+ packStruct.Face = self.playerInfo.Face
+ packStruct.FacePic = self.playerInfo.FacePic
return packStruct
# 更新玩家数据引用, 根据需求是否更新玩家数据
@@ -869,6 +904,8 @@
playerSocial.LV = 1
playerSocial.RealmLV = 1
playerSocial.OnlineType = ChConfig.Def_Offline
+ playerSocial.Face = 0
+ playerSocial.FacePic = 0
else:
cacheDict = PlayerViewCache.GetCachePropDataDict(curCache)
@@ -879,6 +916,8 @@
playerSocial.LV = cacheDict["LV"]
playerSocial.RealmLV = cacheDict["RealmLV"]
playerSocial.OnlineType = ChConfig.Def_Offline
+ playerSocial.Face = cacheDict.get("Face", 0)
+ playerSocial.FacePic = cacheDict.get("FacePic", 0)
self.SocialInfo[playerID] = SocialPlayerData(playerSocial)
socialPlayer = self.SocialInfo[playerID]
@@ -925,7 +964,10 @@
savaData = ""
cntData = ""
cnt = 0
- for socialPlayer in self.SocialInfo.values():
+ for playerID, socialPlayer in self.SocialInfo.items():
+ if PyGameData.g_dbPlayerIDMap and not PlayerControl.GetDBPlayerAccIDByID(playerID):
+ GameWorld.ErrLog("非本服社交玩家,不存档! playerID=%s" % playerID)
+ continue
cnt += 1
savaData += socialPlayer.playerInfo.getBuffer()
@@ -1047,7 +1089,13 @@
socialPlayer.playerInfo.RealmLV = value
elif notifyType == IPY_PlayerDefine.CDBPlayerRefresh_PlayerName:
socialPlayer.playerInfo.PlayerName = value
-
+ elif notifyType == IPY_PlayerDefine.CDBPlayerRefresh_Face:
+ socialPlayer.playerInfo.Face = value
+ elif notifyType == IPY_PlayerDefine.CDBPlayerRefresh_HairColor:
+ socialPlayer.playerInfo.FacePic = value
+ else:
+ return
+
Notify_All(playerID, notifyType, value)
return
--
Gitblit v1.8.0