|  |  |  | 
|---|
|  |  |  | import ChPyNetSendPack | 
|---|
|  |  |  | import ShareDefine | 
|---|
|  |  |  | import PlayerViewCache | 
|---|
|  |  |  | import CrossRealmPlayer | 
|---|
|  |  |  | import CrossRealmMsg | 
|---|
|  |  |  | import ChNetSendPack | 
|---|
|  |  |  | import NetPackCommon | 
|---|
|  |  |  | import PlayerGeTui | 
|---|
|  |  |  | 
|---|
|  |  |  | curCache = None | 
|---|
|  |  |  | tagPlayerName = "" | 
|---|
|  |  |  | if tagPlayer == None: | 
|---|
|  |  |  | curCache = PlayerViewCache.ViewCacheMgr.FindCache(tagPlayerID) | 
|---|
|  |  |  | curCache = PlayerViewCache.FindViewCache(tagPlayerID) | 
|---|
|  |  |  | if not curCache: | 
|---|
|  |  |  | PlayerControl.NotifyCode(curPlayer, "CanootTalk10") | 
|---|
|  |  |  | return | 
|---|
|  |  |  | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if curCache: | 
|---|
|  |  |  | cacheDict = eval(curCache.GetPropData()) | 
|---|
|  |  |  | cacheDict = PlayerViewCache.GetCachePropDataDict(curCache) | 
|---|
|  |  |  | tagPlayerName = cacheDict["Name"] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | talkType = sendPack.GetTalkType() | 
|---|
|  |  |  | 
|---|
|  |  |  | # 离线私聊太多,此玩家被挤出队列 | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | NetPackCommon.SendFakePack(curPlayer, chatPack) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 国家频(封包参数) | 
|---|
|  |  |  | #  @param index 玩家索引 | 
|---|
|  |  |  | #  @param tick 当前时间 | 
|---|
|  |  |  | #  @return None | 
|---|
|  |  |  | #  @remarks 函数详细说明. | 
|---|
|  |  |  | def ChatCountry(index, tick): | 
|---|
|  |  |  | ## 跨服频道 | 
|---|
|  |  |  | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) | 
|---|
|  |  |  | playerID = curPlayer.GetPlayerID() | 
|---|
|  |  |  | sendPack = IPY_GameServer.IPY_GTalkCountry() | 
|---|
|  |  |  | content = sendPack.GetContent() | 
|---|
|  |  |  | extraValue = sendPack.GetExtraValue() | 
|---|
|  |  |  | extras = sendPack.GetExtras() | 
|---|
|  |  |  | crossPlayerName = CrossRealmPlayer.GetCrossPlayerName(curPlayer) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 发送到跨服服务器,直接使用跨服boss的分区配置 | 
|---|
|  |  |  | dataMsg = {"PlayerID":playerID, "Name":crossPlayerName, "Content":content, "ExtraValue":extraValue, "Extras":extras} | 
|---|
|  |  |  | CrossRealmMsg.SendMsgToCrossServer(ShareDefine.ClientServerMsg_ChatCrossWorld, dataMsg) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def ClientServerMsg_ChatCrossWorld(serverGroupID, msgData, tick): | 
|---|
|  |  |  | ## 收到子服跨服世界频道聊天 | 
|---|
|  |  |  | zoneIpyData = CrossRealmPlayer.GetCrossZoneIpyDataByServerGroupID(0, serverGroupID) | 
|---|
|  |  |  | if not zoneIpyData: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | serverGroupIDList = zoneIpyData.GetServerGroupIDList() | 
|---|
|  |  |  | CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_ChatCrossWorld, msgData, serverGroupIDList) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def CrossServerMsg_ChatCrossWorld(msgData): | 
|---|
|  |  |  | ## 收到跨服世界频道聊天 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | playerID = msgData["PlayerID"] | 
|---|
|  |  |  | crossPlayerName = msgData["Name"] | 
|---|
|  |  |  | content = msgData["Content"] | 
|---|
|  |  |  | extraValue = msgData["ExtraValue"] | 
|---|
|  |  |  | extras = msgData["Extras"] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sendPack = ChNetSendPack.tagTalkCountry() | 
|---|
|  |  |  | sendPack.Clear() | 
|---|
|  |  |  | sendPack.Name = crossPlayerName | 
|---|
|  |  |  | sendPack.NameLen = len(sendPack.Name) | 
|---|
|  |  |  | sendPack.PlayerID = playerID | 
|---|
|  |  |  | sendPack.Content = content | 
|---|
|  |  |  | sendPack.Len = len(sendPack.Content) | 
|---|
|  |  |  | sendPack.ExtraValue = extraValue | 
|---|
|  |  |  | sendPack.Extras = extras | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 全服广播在线玩家 | 
|---|
|  |  |  | playerManager = GameWorld.GetPlayerManager() | 
|---|
|  |  |  | for i in xrange(playerManager.GetActivePlayerCount()): | 
|---|
|  |  |  | player = playerManager.GetActivePlayerAt(i) | 
|---|
|  |  |  | if player == None: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | if PlayerControl.GetIsTJG(player): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | NetPackCommon.SendFakePack(player, sendPack) | 
|---|
|  |  |  | #curPlayer.ChatCountry(content, extraValue, extras) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 公频(封包参数) | 
|---|
|  |  |  | 
|---|
|  |  |  | # 跨服喇叭 | 
|---|
|  |  |  | if SpeakerType == 2: | 
|---|
|  |  |  | pass | 
|---|
|  |  |  | #======================================================================= | 
|---|
|  |  |  | # playerName = PlayerControl.GetMergePlayerName(accID, playerName) # 转化为跨服的名字 | 
|---|
|  |  |  | # dataMsg = [accID, 0, playerName, SpeakerType, Text, extraValue, extras] | 
|---|
|  |  |  | # MergeChildMsg.SendMergerChildToCenterStringData(ChConfig.Def_SendMergeLoudspeaker, dataMsg) | 
|---|
|  |  |  | # GameWorld.Log("发送跨服喇叭聊天: accID=%s,Text=%s" % (accID, Text), playerID) | 
|---|
|  |  |  | #======================================================================= | 
|---|
|  |  |  |  | 
|---|
|  |  |  | else: | 
|---|
|  |  |  | #GameWorld.DebugLog("发送本服喇叭聊天: accID=%s,Text=%s" % (accID, Text), playerID) | 
|---|
|  |  |  | 
|---|
|  |  |  | # }; | 
|---|
|  |  |  | #=============================================================================== | 
|---|
|  |  |  | def OnVoiceChat(index, clientPack, tick): | 
|---|
|  |  |  | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) | 
|---|
|  |  |  | if not CheckTalk(curPlayer, tick): | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sendPack = ChPyNetSendPack.tagGCVoiceChat() | 
|---|
|  |  |  | sendPack.Clear() | 
|---|
|  |  |  | sendPack.ChannelType = clientPack.ChannelType | 
|---|
|  |  |  | sendPack.SrcName = curPlayer.GetName() | 
|---|
|  |  |  | sendPack.SrcNameLen = len(curPlayer.GetName()) | 
|---|
|  |  |  | sendPack.PlayerID = curPlayer.GetID() | 
|---|
|  |  |  | sendPack.Len = clientPack.Len | 
|---|
|  |  |  | sendPack.Content = clientPack.Content | 
|---|
|  |  |  | sendPack.Extras = GetTalkExtraValue(curPlayer) | 
|---|
|  |  |  | sendPack.ExtraValue = len(sendPack.Extras) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | playerManager = GameWorld.GetPlayerManager() | 
|---|
|  |  |  | if clientPack.ChannelType == ShareDefine.Def_ChannelChat_World: | 
|---|
|  |  |  | # 世界频道 | 
|---|
|  |  |  | curPlayer.BroadCastAll(sendPack.GetBuffer(), len(sendPack.GetBuffer())) | 
|---|
|  |  |  | elif clientPack.ChannelType == ShareDefine.Def_ChannelChat_Family: | 
|---|
|  |  |  | # 家族频道 | 
|---|
|  |  |  | curFamily = curPlayer.GetFamily() | 
|---|
|  |  |  | if curFamily == None: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | for i in range(0, curFamily.GetCount()): | 
|---|
|  |  |  | notifyMember = curFamily.GetAt(i) | 
|---|
|  |  |  | notifyPlayer = playerManager.FindPlayerByID(notifyMember.GetPlayerID()) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if notifyPlayer == None or not notifyPlayer.GetInitOK(): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if PlayerControl.GetIsTJG(notifyPlayer): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | #=================================================================== | 
|---|
|  |  |  | # if notifyPlayer.GetPlayerID() == curPlayer.GetPlayerID(): | 
|---|
|  |  |  | #    #不包括自己 | 
|---|
|  |  |  | #    continue | 
|---|
|  |  |  | #=================================================================== | 
|---|
|  |  |  |  | 
|---|
|  |  |  | NetPackCommon.SendFakePack(notifyPlayer, sendPack) | 
|---|
|  |  |  | elif clientPack.ChannelType == ShareDefine.Def_ChannelChat_Team: | 
|---|
|  |  |  | # 队伍 | 
|---|
|  |  |  | curTeam = curPlayer.GetTeam() | 
|---|
|  |  |  | if curTeam == None: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | for index in xrange(curTeam.GetMemberCount()): | 
|---|
|  |  |  | curMember = curTeam.GetMemberPlayer(index) | 
|---|
|  |  |  | if not curMember or not curMember.GetPlayerID(): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  |  | 
|---|
|  |  |  | #=================================================================== | 
|---|
|  |  |  | # if curMember.GetPlayerID() == curPlayer.GetPlayerID(): | 
|---|
|  |  |  | #    #不包括自己 | 
|---|
|  |  |  | #    continue | 
|---|
|  |  |  | #=================================================================== | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if PlayerControl.GetIsTJG(curMember): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | NetPackCommon.SendFakePack(curMember, sendPack) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | elif clientPack.ChannelType == ShareDefine.Def_ChannelChat_Private: | 
|---|
|  |  |  | # 私聊 | 
|---|
|  |  |  | tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(clientPack.TargetID) | 
|---|
|  |  |  | if not tagPlayer: | 
|---|
|  |  |  | tagPlayer = GameWorld.GetPlayerManager().FindPlayerByName(clientPack.TargetName) | 
|---|
|  |  |  | if tagPlayer == None: | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 黑名单检查 | 
|---|
|  |  |  | if PyDataManager.GetBlacklistManager().CheckBlacklistBoth(curPlayer.GetID(), tagPlayer.GetID(), curPlayer): | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | sendPack.ToName = tagPlayer.GetName() | 
|---|
|  |  |  | sendPack.ToNameLen = len(tagPlayer.GetName()) | 
|---|
|  |  |  | sendPack.ToPlayerID = tagPlayer.GetID() | 
|---|
|  |  |  | NetPackCommon.SendFakePack(tagPlayer, sendPack) | 
|---|
|  |  |  | NetPackCommon.SendFakePack(curPlayer, sendPack) | 
|---|
|  |  |  | #    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index) | 
|---|
|  |  |  | #    if not CheckTalk(curPlayer, tick): | 
|---|
|  |  |  | #        return | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #    sendPack = ChPyNetSendPack.tagGCVoiceChat() | 
|---|
|  |  |  | #    sendPack.Clear() | 
|---|
|  |  |  | #    sendPack.ChannelType = clientPack.ChannelType | 
|---|
|  |  |  | #    sendPack.SrcName = curPlayer.GetName() | 
|---|
|  |  |  | #    sendPack.SrcNameLen = len(curPlayer.GetName()) | 
|---|
|  |  |  | #    sendPack.PlayerID = curPlayer.GetID() | 
|---|
|  |  |  | #    sendPack.Len = clientPack.Len | 
|---|
|  |  |  | #    sendPack.Content = clientPack.Content | 
|---|
|  |  |  | #    sendPack.Extras = GetTalkExtraValue(curPlayer) | 
|---|
|  |  |  | #    sendPack.ExtraValue = len(sendPack.Extras) | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #    playerManager = GameWorld.GetPlayerManager() | 
|---|
|  |  |  | #    if clientPack.ChannelType == ShareDefine.Def_ChannelChat_World: | 
|---|
|  |  |  | #        # 世界频道 | 
|---|
|  |  |  | #        curPlayer.BroadCastAll(sendPack.GetBuffer(), len(sendPack.GetBuffer())) | 
|---|
|  |  |  | #    elif clientPack.ChannelType == ShareDefine.Def_ChannelChat_Family: | 
|---|
|  |  |  | #        # 家族频道 | 
|---|
|  |  |  | #        curFamily = curPlayer.GetFamily() | 
|---|
|  |  |  | #        if curFamily == None: | 
|---|
|  |  |  | #            return | 
|---|
|  |  |  | #        for i in range(0, curFamily.GetCount()): | 
|---|
|  |  |  | #            notifyMember = curFamily.GetAt(i) | 
|---|
|  |  |  | #            notifyPlayer = playerManager.FindPlayerByID(notifyMember.GetPlayerID()) | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #            if notifyPlayer == None or not notifyPlayer.GetInitOK(): | 
|---|
|  |  |  | #                continue | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #            if PlayerControl.GetIsTJG(notifyPlayer): | 
|---|
|  |  |  | #                continue | 
|---|
|  |  |  | #            #=================================================================== | 
|---|
|  |  |  | #            # if notifyPlayer.GetPlayerID() == curPlayer.GetPlayerID(): | 
|---|
|  |  |  | #            #    #不包括自己 | 
|---|
|  |  |  | #            #    continue | 
|---|
|  |  |  | #            #=================================================================== | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #            NetPackCommon.SendFakePack(notifyPlayer, sendPack) | 
|---|
|  |  |  | #    elif clientPack.ChannelType == ShareDefine.Def_ChannelChat_Team: | 
|---|
|  |  |  | #        # 队伍 | 
|---|
|  |  |  | #        curTeam = curPlayer.GetTeam() | 
|---|
|  |  |  | #        if curTeam == None: | 
|---|
|  |  |  | #            return | 
|---|
|  |  |  | #        for index in xrange(curTeam.GetMemberCount()): | 
|---|
|  |  |  | #            curMember = curTeam.GetMemberPlayer(index) | 
|---|
|  |  |  | #            if not curMember or not curMember.GetPlayerID(): | 
|---|
|  |  |  | #                continue | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #            #=================================================================== | 
|---|
|  |  |  | #            # if curMember.GetPlayerID() == curPlayer.GetPlayerID(): | 
|---|
|  |  |  | #            #    #不包括自己 | 
|---|
|  |  |  | #            #    continue | 
|---|
|  |  |  | #            #=================================================================== | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #            if PlayerControl.GetIsTJG(curMember): | 
|---|
|  |  |  | #                continue | 
|---|
|  |  |  | #            NetPackCommon.SendFakePack(curMember, sendPack) | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #    elif clientPack.ChannelType == ShareDefine.Def_ChannelChat_Private: | 
|---|
|  |  |  | #        # 私聊 | 
|---|
|  |  |  | #        tagPlayer = GameWorld.GetPlayerManager().FindPlayerByID(clientPack.TargetID) | 
|---|
|  |  |  | #        if not tagPlayer: | 
|---|
|  |  |  | #            tagPlayer = GameWorld.GetPlayerManager().FindPlayerByName(clientPack.TargetName) | 
|---|
|  |  |  | #        if tagPlayer == None: | 
|---|
|  |  |  | #            return | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #        # 黑名单检查 | 
|---|
|  |  |  | #        if PyDataManager.GetBlacklistManager().CheckBlacklistBoth(curPlayer.GetID(), tagPlayer.GetID(), curPlayer): | 
|---|
|  |  |  | #            return | 
|---|
|  |  |  | # | 
|---|
|  |  |  | #        sendPack.ToName = tagPlayer.GetName() | 
|---|
|  |  |  | #        sendPack.ToNameLen = len(tagPlayer.GetName()) | 
|---|
|  |  |  | #        sendPack.ToPlayerID = tagPlayer.GetID() | 
|---|
|  |  |  | #        NetPackCommon.SendFakePack(tagPlayer, sendPack) | 
|---|
|  |  |  | #        NetPackCommon.SendFakePack(curPlayer, sendPack) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_JOB)% job | 
|---|
|  |  |  | # 气泡框 | 
|---|
|  |  |  | extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_BubbleBox) % PlayerControl.GetChatBubbleBox(player) | 
|---|
|  |  |  | # 服务器组ID | 
|---|
|  |  |  | extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_ServerGroupID) % PlayerControl.GetPlayerServerGroupID(player) | 
|---|
|  |  |  | # 等级 | 
|---|
|  |  |  | extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_LV) % player.GetLV() | 
|---|
|  |  |  | return extraValueStr | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|