From 2fca4ba3abab2ea232d64ef084be1991506d57a2 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 27 六月 2024 16:32:51 +0800 Subject: [PATCH] 10178 【越南】【香港】【主干】挂机奖励(屏蔽跨服上线通知:古宝、神通、战令、福地、挂机) --- ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFriend.py | 63 ++++++++++++++++++++++++++----- 1 files changed, 53 insertions(+), 10 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFriend.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFriend.py index 7507d08..fd8589d 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFriend.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerFriend.py @@ -27,6 +27,7 @@ import PlayerSocial import copy import PlayerViewCache +import PlayerTeam #--------------------------------------------------------------------- @@ -75,13 +76,12 @@ return if not tagPlayer: - curCache = PlayerViewCache.ViewCacheMgr.FindCache(curTagPlayerID) + curCache = PlayerViewCache.FindViewCache(curTagPlayerID) if not curCache: #玩家的数据没有缓存过 PlayerControl.NotifyCode(curPlayer, 'Friend_OffLine') return - cacheDict = eval(curCache.GetPropData()) - tagLV = cacheDict["LV"] + tagLV = curCache.LV else: tagLV = tagPlayer.GetLV() @@ -147,6 +147,13 @@ return PyDataManager.GetFriendManager().AddFriends(playerID) +def IsFriend(playerID, tagPlayerID): + ## 判断双方是否好友 + curFriends = PyDataManager.GetFriendManager().GetFriends(playerID) + if not curFriends: + return False + return curFriends.Find(tagPlayerID) != None + #--------------------------------------------------------------------- ##好友检查 # @param curPlayer 申请好友的玩家 @@ -207,6 +214,12 @@ GameWorld.Log('DeleteFriend -> 封包异常 ->没有这个玩家', playerID) return + couple = PyDataManager.GetDBPyCoupleManager().GetCouple(playerID) + if couple and couple.GetCoupleID(playerID) == friendID: + #GameWorld.Log('DeleteFriend -> 封包异常 ->伴侣不能删除好友.friendID=%s' % friendID, playerID) + PlayerControl.NotifyCode(curPlayer, "DelFriendCoupleLimit") + return + #离线好友同时删除记录 PyDataManager.GetFriendManager().DelFriendBoth(playerID, friendID) @@ -216,6 +229,13 @@ tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(friendID) if tagPlayer != None: PlayerControl.NotifyCode(tagPlayer, 'Friend_DeleteFriend2', [curPlayer.GetName()]) + PlayerTeam.OnTeamMemFriendChange(curPlayer, friendID, False) + + # 亲密度减少 + decIntimacyPer = IpyGameDataPY.GetFuncCfg("IntimacyReduce", 1) + if decIntimacyPer: + PyDataManager.GetIntimacyManager().DelIntimacyBothPer(playerID, friendID, decIntimacyPer) + return @@ -256,7 +276,7 @@ srcPlayer = playerManager.FindPlayerByID(srcPlayerID) if srcPlayer == None: # 玩家已下线 - curCache = PlayerViewCache.ViewCacheMgr.FindCache(srcPlayerID) + curCache = PlayerViewCache.FindViewCache(srcPlayerID) if not curCache: #玩家的数据没有缓存过 #PlayerControl.NotifyCode(curPlayer, 'Friend_OffLine') @@ -272,9 +292,10 @@ GameWorld.Log("JoinFriendAnswer -> 封包异常 ->玩家没有这个请求", playerID) return - if not clientData.Answer and srcPlayer: - #XW_SJ_RefuseApply XXX拒绝把你加为好友 - PlayerControl.NotifyCode(srcPlayer, 'Friend_RejectFriend', [curPlayer.GetName()]) + if not clientData.Answer: + if srcPlayer: + #XW_SJ_RefuseApply XXX拒绝把你加为好友 + PlayerControl.NotifyCode(srcPlayer, 'Friend_RejectFriend', [curPlayer.GetName()]) return # 黑名单检查 @@ -313,10 +334,11 @@ PlayerControl.NotifyCode(srcPlayer, 'Friend_MakeFriend', [curPlayer.GetName()]) #srcPlayer.MapServer_QueryPlayerResult(0, 0, 'AddFriendSucceed', "", 0) else: - cacheDict = eval(curCache.GetPropData()) + cacheDict = PlayerViewCache.GetCachePropDataDict(curCache) PlayerControl.NotifyCode(curPlayer, 'Friend_MakeFriend', [cacheDict['Name']]) # 记录等对方上线通知地图,任务等会用到触发逻辑,通用记录次数即可, MapServer_SyncFriendInfo为具体的好友数量,根据策划需求制作 pass + PlayerTeam.OnTeamMemFriendChange(curPlayer, srcPlayerID, True) return @@ -379,12 +401,18 @@ # return #=========================================================================== + couple = PyDataManager.GetDBPyCoupleManager().GetCouple(curPlayer.GetID()) + if couple and couple.GetCoupleID(curPlayer.GetID()) == tagID: + #GameWorld.DebugLog("伴侣不能加入黑名单! tagID=%s" % tagID, curPlayer.GetID()) + PlayerControl.NotifyCode(curPlayer, "AddBlackCoupleLimit") + return + tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(tagID) if not tagPlayer: - curCache = PlayerViewCache.ViewCacheMgr.FindCache(tagID) + curCache = PlayerViewCache.FindViewCache(tagID) if not curCache: return - cacheDict = eval(curCache.GetPropData()) + cacheDict = PlayerViewCache.GetCachePropDataDict(curCache) playerName = cacheDict['Name'] else: playerName = tagPlayer.GetName() @@ -400,6 +428,11 @@ PlayerControl.NotifyCode(curPlayer, 'AddBlackList', [playerName]) + # 亲密度减少 + decIntimacyPer = IpyGameDataPY.GetFuncCfg("IntimacyReduce", 2) + if decIntimacyPer: + PyDataManager.GetIntimacyManager().DelIntimacyBothPer(curPlayer.GetPlayerID(), tagID, decIntimacyPer) + return @@ -463,6 +496,15 @@ players.Sync_SocialsInfo(curPlayer) return +#亲密 +def __OnPlayerLoginIntimacylist(curPlayer, tick): + intimacys = PyDataManager.GetIntimacyManager().GetIntimacys(curPlayer.GetID()) + if intimacys == None: + return + + intimacys.Sync_SocialsInfo(curPlayer) + return + ## 玩家登陆 # @param curPlayer 当前玩家 # @param tick 当前时间 @@ -476,6 +518,7 @@ __OnPlayerLoginEnemy(curPlayer, tick) __OnPlayerLoginContacts(curPlayer, tick) __OnPlayerLoginBlacklist(curPlayer, tick) + __OnPlayerLoginIntimacylist(curPlayer, tick) # 向当前玩家通知相关联的所有玩家信息 PlayerSocial.Sync_AllSocialsInfo(curPlayer) -- Gitblit v1.8.0