ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
@@ -24,6 +24,8 @@
import ChPyNetSendPack
import ShareDefine
import PlayerViewCache
import CrossRealmPlayer
import CrossRealmMsg
import ChNetSendPack
import NetPackCommon
import PlayerGeTui
@@ -160,6 +162,47 @@
        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()
    ## 发送到跨服服务器,直接使用跨服boss的分区配置
    dataMsg = {"PlayerID":playerID, "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"]
    content = msgData["Content"]
    extraValue = msgData["ExtraValue"]
    extras = msgData["Extras"]
    curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
    if curPlayer:
        curPlayer.ChatCountry(content, extraValue, extras)
    return
## 公频(封包参数)
#  @param index 玩家索引 
#  @param tick 当前时间
@@ -282,83 +325,83 @@
# };
#===============================================================================
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
@@ -379,6 +422,10 @@
    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