| | |
| | | import ShareDefine
|
| | | import IPY_GameWorld
|
| | | import ChPyNetSendPack
|
| | | import CrossRealmPlayer
|
| | | import PlayerViewCache
|
| | | import NetPackCommon
|
| | | import IpyGameDataPY
|
| | | import PlayerControl
|
| | | import PlayerFamily
|
| | | import CrossPlayer
|
| | | import DBDataMgr
|
| | |
|
| | | import math
|
| | |
| | | }
|
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | NotifyTalkCache(curPlayer)
|
| | | crossPlayer = CrossPlayer.GetCrossPlayerMgr().FindCrossPlayer(curPlayer.GetPlayerID())
|
| | | NotifyTalkCache(crossPlayer, [IPY_GameWorld.tcWorld])
|
| | | return
|
| | |
|
| | | #// B3 20 聊天 #tagCSTalk
|
| | |
| | | elif channelType == IPY_GameWorld.tcCountry:
|
| | | if GameWorld.IsCrossServer():
|
| | | return
|
| | | if not CrossRealmPlayer.IsCrossServerOpen():
|
| | | PlayerControl.NotifyCode(curPlayer, "CrossMatching18")
|
| | | return
|
| | |
|
| | | if not __CheckTalk(curPlayer, channelType, content, tick):
|
| | | return
|
| | |
| | | clientPack.RealmLV = curPlayer.GetOfficialRank()
|
| | | clientPack.Face = curPlayer.GetFace()
|
| | | clientPack.FacePic = curPlayer.GetFacePic()
|
| | | clientPack.TitleID = PlayerControl.GetTitleID(curPlayer)
|
| | | clientPack.ServerID = GameWorld.GetPlayerServerID(curPlayer)
|
| | |
|
| | | if channelType == IPY_GameWorld.tcWorld:
|
| | | NetPackCommon.SendFackPackOnline(clientPack)
|
| | | DoTalkCache(channelType, playerID, content, bubbleBox, familyID)
|
| | | elif channelType == IPY_GameWorld.tcFamily:
|
| | | PlayerFamily.Broadcast_FamilyPack(familyID, clientPack)
|
| | | PlayerFamily.OnFamilyTalk(curPlayer, familyID, clientPack, tick)
|
| | |
|
| | | DoTalkCache(channelType, playerID, content, bubbleBox, familyID)
|
| | | return
|
| | |
|
| | | def __CheckTalk(curPlayer, channelType, content, tick, checkGMForbidenTalk=True):
|
| | |
| | |
|
| | | return
|
| | |
|
| | | def NotifyTalkCache(curPlayer):
|
| | | def NotifyTalkCache(crossPlayer, channelTypeList):
|
| | | ##上线通知聊天缓存
|
| | | |
| | | # @param channelTypeList: 指定需要通知聊天缓存频道列表,不同频道的缓存可能存储在不同的服务器,如公会在公会数据所在服等
|
| | | if not crossPlayer:
|
| | | return
|
| | | for channelType in ChannelCacheMax.keys():
|
| | | if channelType not in channelTypeList:
|
| | | continue
|
| | | cacheList = []
|
| | | if channelType == IPY_GameWorld.tcFamily:
|
| | | familyID = curPlayer.GetFamilyID()
|
| | | familyID = crossPlayer.GetFamilyID()
|
| | | if not familyID:
|
| | | continue
|
| | | familyActonMgr = DBDataMgr.GetFamilyActionMgr().GetFamilyAction(familyID, ShareDefine.Def_ActionType_TalkCache)
|
| | |
| | | talkCache.RealmLV = viewCache.GetRealmLV()
|
| | | talkCache.Face = viewCache.GetFace()
|
| | | talkCache.FacePic = viewCache.GetFacePic()
|
| | | talkCache.TitleID = viewCache.GetTitleID()
|
| | | talkCache.ServerID = viewCache.GetServerID()
|
| | | talkCache.TalkTime = talkTime
|
| | | packCacheList.append(talkCache)
|
| | |
| | | clientPack.ChannelType = channelType
|
| | | clientPack.InfoList = packCacheList
|
| | | clientPack.Count = len(clientPack.InfoList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | CrossPlayer.SendFakePack(crossPlayer, clientPack)
|
| | |
|
| | | return
|