|  |  | 
 |  |  | import ChPyNetSendPack
 | 
 |  |  | import ShareDefine
 | 
 |  |  | import PlayerViewCache
 | 
 |  |  | import CrossRealmPlayer
 | 
 |  |  | import CrossRealmMsg
 | 
 |  |  | import ChNetSendPack
 | 
 |  |  | import NetPackCommon
 | 
 |  |  | import PlayerGeTui
 | 
 |  |  | 
 |  |  |         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.GetServerCrossZoneIpyData(ChConfig.Def_FBMapID_CrossPenglai, 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
 | 
 |  |  | 
 | 
 |  |  | ## 公频(封包参数)
 | 
 |  |  | #  @param index 玩家索引 
 | 
 |  |  | #  @param tick 当前时间
 | 
 |  |  | 
 |  |  |     # 跨服喇叭
 | 
 |  |  |     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
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  |     # job
 | 
 |  |  |     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_JOB)% job
 | 
 |  |  |     # 气泡框
 | 
 |  |  |     extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_BubbleBox) % PlayerControl.GetChatBubbleBox(objTalk)
 | 
 |  |  |     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
 | 
 |  |  | 
 | 
 |  |  | 
 |