|  |  | 
 |  |  | import copy
 | 
 |  |  | import PlayerViewCache
 | 
 |  |  | import PlayerTeam
 | 
 |  |  | import cPickle
 | 
 |  |  | 
 | 
 |  |  | #---------------------------------------------------------------------
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |             return
 | 
 |  |  |     
 | 
 |  |  |     if not tagPlayer:
 | 
 |  |  |         curCache = PlayerViewCache.ViewCacheMgr.FindCache(curTagPlayerID)
 | 
 |  |  |         curCache = PlayerViewCache.FindViewCache(curTagPlayerID)
 | 
 |  |  |         if not curCache:
 | 
 |  |  |             #玩家的数据没有缓存过
 | 
 |  |  |             PlayerControl.NotifyCode(curPlayer, 'Friend_OffLine')
 | 
 |  |  |             return
 | 
 |  |  |         cacheDict = cPickle.loads(curCache.GetPropData())
 | 
 |  |  |         tagLV = cacheDict["LV"]
 | 
 |  |  |         tagLV = curCache.LV
 | 
 |  |  |     else:
 | 
 |  |  |         tagLV = tagPlayer.GetLV()
 | 
 |  |  |     
 | 
 |  |  | 
 |  |  |         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)
 | 
 |  |  |     
 | 
 |  |  | 
 |  |  |     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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     srcPlayer = playerManager.FindPlayerByID(srcPlayerID)
 | 
 |  |  |     if srcPlayer == None:
 | 
 |  |  |         # 玩家已下线
 | 
 |  |  |         curCache = PlayerViewCache.ViewCacheMgr.FindCache(srcPlayerID)
 | 
 |  |  |         curCache = PlayerViewCache.FindViewCache(srcPlayerID)
 | 
 |  |  |         if not curCache:
 | 
 |  |  |             #玩家的数据没有缓存过
 | 
 |  |  |             #PlayerControl.NotifyCode(curPlayer, 'Friend_OffLine')
 | 
 |  |  | 
 |  |  |         PlayerControl.NotifyCode(srcPlayer, 'Friend_MakeFriend', [curPlayer.GetName()])
 | 
 |  |  |         #srcPlayer.MapServer_QueryPlayerResult(0, 0, 'AddFriendSucceed', "", 0)
 | 
 |  |  |     else:
 | 
 |  |  |         cacheDict = cPickle.loads(curCache.GetPropData())
 | 
 |  |  |         cacheDict = PlayerViewCache.GetCachePropDataDict(curCache)
 | 
 |  |  |         PlayerControl.NotifyCode(curPlayer, 'Friend_MakeFriend', [cacheDict['Name']])  
 | 
 |  |  |         # 记录等对方上线通知地图,任务等会用到触发逻辑,通用记录次数即可, MapServer_SyncFriendInfo为具体的好友数量,根据策划需求制作
 | 
 |  |  |         pass
 | 
 |  |  | 
 |  |  |     #    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 = cPickle.loads(curCache.GetPropData())
 | 
 |  |  |         cacheDict = PlayerViewCache.GetCachePropDataDict(curCache)
 | 
 |  |  |         playerName = cacheDict['Name']
 | 
 |  |  |     else:
 | 
 |  |  |         playerName = tagPlayer.GetName()
 | 
 |  |  | 
 |  |  |     
 | 
 |  |  |     PlayerControl.NotifyCode(curPlayer, 'AddBlackList', [playerName])
 | 
 |  |  |     
 | 
 |  |  |     # 亲密度减少
 | 
 |  |  |     decIntimacyPer = IpyGameDataPY.GetFuncCfg("IntimacyReduce", 2)
 | 
 |  |  |     if decIntimacyPer:
 | 
 |  |  |         PyDataManager.GetIntimacyManager().DelIntimacyBothPer(curPlayer.GetPlayerID(), tagID, decIntimacyPer)
 | 
 |  |  |          | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     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 当前时间
 | 
 |  |  | 
 |  |  |     __OnPlayerLoginEnemy(curPlayer, tick)
 | 
 |  |  |     __OnPlayerLoginContacts(curPlayer, tick)
 | 
 |  |  |     __OnPlayerLoginBlacklist(curPlayer, tick)
 | 
 |  |  |     __OnPlayerLoginIntimacylist(curPlayer, tick)
 | 
 |  |  |     
 | 
 |  |  |     # 向当前玩家通知相关联的所有玩家信息
 | 
 |  |  |     PlayerSocial.Sync_AllSocialsInfo(curPlayer)
 |