5722 【后端】【1.5】跨服BOSS开发(跨服世界频道、区域频道聊天支持)
12个文件已修改
425 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/ServerCommScript.ini 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -5881,6 +5881,7 @@
    RealmLV = 0    #(WORD RealmLV)//境界
    OnlineType = 0    #(BYTE OnlineType)//在线状态, 0 不在线 1在线
    IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
    ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
    data = None
    def __init__(self):
@@ -5899,6 +5900,7 @@
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -5913,6 +5915,7 @@
        self.RealmLV = 0
        self.OnlineType = 0
        self.IsInTeam = 0
        self.ServerGroupID = 0
        return
    def GetLength(self):
@@ -5925,6 +5928,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        return length
@@ -5938,6 +5942,7 @@
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteBYTE(data, self.OnlineType)
        data = CommFunc.WriteBYTE(data, self.IsInTeam)
        data = CommFunc.WriteDWORD(data, self.ServerGroupID)
        return data
    def OutputString(self):
@@ -5949,7 +5954,8 @@
                                LV:%d,
                                RealmLV:%d,
                                OnlineType:%d,
                                IsInTeam:%d
                                IsInTeam:%d,
                                ServerGroupID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -5959,7 +5965,8 @@
                                self.LV,
                                self.RealmLV,
                                self.OnlineType,
                                self.IsInTeam
                                self.IsInTeam,
                                self.ServerGroupID
                                )
        return DumpString
@@ -18777,7 +18784,6 @@
    ItemData = ""    #(String ItemData)//物品记录
    PlusDataSize = 0    #(DWORD PlusDataSize)
    PlusData = ""    #(String PlusData)//扩展记录    
    CrossPlayer = 0    #(BYTE CrossPlayer)//是否跨服玩家
    data = None
    def __init__(self):
@@ -18796,7 +18802,6 @@
        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
        self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
        self.CrossPlayer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -18811,7 +18816,6 @@
        self.ItemData = ""
        self.PlusDataSize = 0
        self.PlusData = ""
        self.CrossPlayer = 0
        return
    def GetLength(self):
@@ -18824,7 +18828,6 @@
        length += len(self.ItemData)
        length += 4
        length += len(self.PlusData)
        length += 1
        return length
@@ -18838,7 +18841,6 @@
        data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
        data = CommFunc.WriteDWORD(data, self.PlusDataSize)
        data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
        data = CommFunc.WriteBYTE(data, self.CrossPlayer)
        return data
    def OutputString(self):
@@ -18850,8 +18852,7 @@
                                ItemDataSize:%d,
                                ItemData:%s,
                                PlusDataSize:%d,
                                PlusData:%s,
                                CrossPlayer:%d
                                PlusData:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -18861,8 +18862,7 @@
                                self.ItemDataSize,
                                self.ItemData,
                                self.PlusDataSize,
                                self.PlusData,
                                self.CrossPlayer
                                self.PlusData
                                )
        return DumpString
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
@@ -23,6 +23,7 @@
import GameWorldBoss
import CrossRealmPK
import PlayerQuery
import PlayerTalk
import CrossBoss
import ChConfig
import GMShell
@@ -62,6 +63,9 @@
            
        elif msgType == ShareDefine.ClientServerMsg_PKBillboard:
            CrossRealmPK.ClientServerMsg_PKBillboard(serverGroupID, msgData)
        elif msgType == ShareDefine.ClientServerMsg_ChatCrossWorld:
            PlayerTalk.ClientServerMsg_ChatCrossWorld(serverGroupID, msgData, tick)
                        
        elif msgType == ShareDefine.ClientServerMsg_GMCMD:
            GMShell.ClientServerMsg_GMCMD(msgData, tick)
@@ -165,6 +169,9 @@
        elif msgType == ShareDefine.CrossServerMsg_Notify:
            PlayerControl.CrossServerMsg_Notify(msgData)
            
        elif msgType == ShareDefine.CrossServerMsg_ChatCrossWorld:
            PlayerTalk.CrossServerMsg_ChatCrossWorld(msgData)
        elif msgType == ShareDefine.CrossServerMsg_ViewPlayerCacheRet:
            CrossRealmPlayer.CrossServerMsg_ViewPlayerCacheRet(msgData, tick)
            
ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py
@@ -316,7 +316,6 @@
    sendPack.ItemDataSize = len(sendPack.ItemData)
    sendPack.PlusData = PlusData
    sendPack.PlusDataSize = len(sendPack.PlusData)
    sendPack.CrossPlayer = 1
    NetPackCommon.SendFakePack(curPlayer, sendPack)
    return
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
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
@@ -274,6 +274,7 @@
            answerPack.LV = 1
            answerPack.RealmLV = 1
            answerPack.OnlineType = ChConfig.Def_Offline
            answerPack.ServerGroupID = 0
        else:
            cacheDict = eval(curCache.GetPropData())
    
@@ -283,6 +284,7 @@
            answerPack.LV = cacheDict["LV"]
            answerPack.RealmLV = cacheDict["RealmLV"]
            answerPack.OnlineType = ChConfig.Def_Offline
            answerPack.ServerGroupID = cacheDict.get("ServerGroupID", 0)
            
    else:
        answerPack.PlayerID = clientPack.PlayerID
@@ -292,6 +294,7 @@
        answerPack.RealmLV = tagPlayer.GetOfficialRank()
        answerPack.OnlineType = ChConfig.Def_Online
        answerPack.IsInTeam = tagPlayer.GetTeamID() > 0
        answerPack.ServerGroupID = PlayerControl.GetPlayerServerGroupID(tagPlayer)
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    NetPackCommon.SendFakePack(curPlayer, answerPack)
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -900,7 +900,9 @@
Def_TalkExtraValue_Bit_GM,            #GM
Def_TalkExtraValue_Bit_JOB, #job
Def_TalkExtraValue_Bit_BubbleBox, #气泡框
) = range(0, 4)
Def_TalkExtraValue_Bit_ServerGroupID, #服务器组ID
Def_TalkExtraValue_Bit_LV, #等级
) = range(0, 6)
#聊天信息附加值中某信息数据所占位置
#{聊天信息附加值类型:[起始位置(从左往右), 结束位置(不包含)]}
@@ -909,6 +911,8 @@
     Def_TalkExtraValue_Bit_GM:[2, 3],  # GM
     Def_TalkExtraValue_Bit_JOB:[3, 4],  # job
     Def_TalkExtraValue_Bit_BubbleBox:[4, 6],  # 气泡框
     Def_TalkExtraValue_Bit_ServerGroupID:[6, 13],  # 服务器组ID
     Def_TalkExtraValue_Bit_LV:[13, 17],  # 等级
     }
# 聊天频道 暂用语音
@@ -1191,6 +1195,7 @@
CrossServerMsg_CrossServerState = "CrossServerState"    # 跨服服务器状态变更
CrossServerMsg_ExitCrossServer = "ExitCrossServer"      # 退出跨服服务器
CrossServerMsg_Notify = "Notify"                        # 提示信息
CrossServerMsg_ChatCrossWorld = "ChatCrossWorld"        # 跨服世界聊天
CrossServerMsg_ViewPlayerCacheRet = "ViewPlayerCacheRet"# 查看跨服玩家信息结果
CrossServerMsg_PKMatchReqRet = "PKMatchReqRet"          # 跨服PK匹配请求结果
CrossServerMsg_PKMatchResult = "PKMatchResult"          # 跨服PK匹配结果
@@ -1210,6 +1215,7 @@
# 子服发送跨服信息定义
ClientServerMsg_ServerInitOK = "ServerInitOK"           # 子服启动成功
ClientServerMsg_ChatCrossWorld = "ChatCrossWorld"       # 跨服世界聊天
ClientServerMsg_GMCMD = "GMCMD"                         # GM命令
ClientServerMsg_ViewPlayerCache = "ViewPlayerCache"     # 查看跨服玩家信息
ClientServerMsg_PKMatch = "PKMatch"                     # 跨服PK匹配
ServerPython/CoreServerGroup/GameServer/ServerCommScript.ini
@@ -41,7 +41,7 @@
Writer = alee
Releaser = alee
RegType = 0
RegisterPackCount = 5
RegisterPackCount = 6
PacketCMD_1=0x2
PacketSubCMD_1=0x1
@@ -63,6 +63,10 @@
PacketSubCMD_5=0x9
PacketCallFunc_5=ChatMiFix
PacketCMD_6=0x2
PacketSubCMD_6=0x8
PacketCallFunc_6=ChatCountry
;骠车
[PlayerTruck]
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
@@ -491,7 +491,7 @@
Writer = Mark
Releaser = Mark
RegType = 0
RegisterPackCount = 6
RegisterPackCount = 7
PacketCMD_1=0x2
PacketSubCMD_1=0x7
@@ -519,6 +519,10 @@
PacketSubCMD_6=0x9
PacketCallFunc_6=TalkPrivate
PacketCMD_7=0x2
PacketSubCMD_7=0x8
PacketCallFunc_7=TalkCountry
;战斗
[Battle]
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -5881,6 +5881,7 @@
    RealmLV = 0    #(WORD RealmLV)//境界
    OnlineType = 0    #(BYTE OnlineType)//在线状态, 0 不在线 1在线
    IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
    ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
    data = None
    def __init__(self):
@@ -5899,6 +5900,7 @@
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -5913,6 +5915,7 @@
        self.RealmLV = 0
        self.OnlineType = 0
        self.IsInTeam = 0
        self.ServerGroupID = 0
        return
    def GetLength(self):
@@ -5925,6 +5928,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        return length
@@ -5938,6 +5942,7 @@
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteBYTE(data, self.OnlineType)
        data = CommFunc.WriteBYTE(data, self.IsInTeam)
        data = CommFunc.WriteDWORD(data, self.ServerGroupID)
        return data
    def OutputString(self):
@@ -5949,7 +5954,8 @@
                                LV:%d,
                                RealmLV:%d,
                                OnlineType:%d,
                                IsInTeam:%d
                                IsInTeam:%d,
                                ServerGroupID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -5959,7 +5965,8 @@
                                self.LV,
                                self.RealmLV,
                                self.OnlineType,
                                self.IsInTeam
                                self.IsInTeam,
                                self.ServerGroupID
                                )
        return DumpString
@@ -18777,7 +18784,6 @@
    ItemData = ""    #(String ItemData)//物品记录
    PlusDataSize = 0    #(DWORD PlusDataSize)
    PlusData = ""    #(String PlusData)//扩展记录    
    CrossPlayer = 0    #(BYTE CrossPlayer)//是否跨服玩家
    data = None
    def __init__(self):
@@ -18796,7 +18802,6 @@
        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
        self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
        self.CrossPlayer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -18811,7 +18816,6 @@
        self.ItemData = ""
        self.PlusDataSize = 0
        self.PlusData = ""
        self.CrossPlayer = 0
        return
    def GetLength(self):
@@ -18824,7 +18828,6 @@
        length += len(self.ItemData)
        length += 4
        length += len(self.PlusData)
        length += 1
        return length
@@ -18838,7 +18841,6 @@
        data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
        data = CommFunc.WriteDWORD(data, self.PlusDataSize)
        data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
        data = CommFunc.WriteBYTE(data, self.CrossPlayer)
        return data
    def OutputString(self):
@@ -18850,8 +18852,7 @@
                                ItemDataSize:%d,
                                ItemData:%s,
                                PlusDataSize:%d,
                                PlusData:%s,
                                CrossPlayer:%d
                                PlusData:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -18861,8 +18862,7 @@
                                self.ItemDataSize,
                                self.ItemData,
                                self.PlusDataSize,
                                self.PlusData,
                                self.CrossPlayer
                                self.PlusData
                                )
        return DumpString
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
@@ -20,6 +20,7 @@
#import ReadChConfig
import ShareDefine
import ChPyNetSendPack
import CrossRealmPlayer
import NetPackCommon
import EventReport
import PlayerSuccess
@@ -113,44 +114,29 @@
#  @return None
#  @remarks 函数详细说明.
def TalkCountry(index, tick):
    #===========================================================================
    # #20150918 hxp目前作为跨服阵营聊天频道
    # #20151009 hxp增加py自定义聊天频道
    # return
    # curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    #
    #
    # #等级判断
    # #if curPlayer.GetLV() < ChConfig.Def_PlayerTalkCountryLV:
    # #    PlayerControl.NotifyCode(curPlayer, "PlayerCall_Error_NoCountry")
    # #    return
    #
    # #获得国家频封包
    # sendPack = IPY_GameWorld.IPY_CTalkCountry()
    # #玩家聊天内容
    # content = sendPack.GetContent()
    #
    # #通用判断
    # if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick):
    #    return
    #
    # #国王说话免费
    # #if PlayerCountry.CheckIsCountryKing(curPlayer.GetCountry() , curPlayer.GetID()):
    # #    PlayerControl.NotifyCode(curPlayer , "C16615EF-FDBC-49AF-9285668F7C8930AA")
    # #else:
    # #    moneyType = curPlayer.GetUseSilverType()
    # #    #金钱判定
    # #    if not PlayerControl.PayMoney(curPlayer, moneyType, ChConfig.Def_PlayerTalkCoutryMoney):
    # #        return False
    #
    # #通用设置
    # SetTalkTime(curPlayer, content, IPY_GameWorld.tcCountry, tick)
    #
    # #说话
    # extraValue = GetTalkExtraValue(curPlayer)
    # extras = ''
    # curPlayer.ChatCountry(content, extraValue, extras)
    #===========================================================================
    ## 跨服世界频道
    if GameWorld.IsCrossServer():
        return
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    if not CrossRealmPlayer.IsCrossServerOpen():
        PlayerControl.NotifyCode(curPlayer, "CrossMatching18")
        return
    sendPack = IPY_GameWorld.IPY_CTalkCountry()
    #玩家聊天内容
    content = sendPack.GetContent()
    #通用检测
    if not __CheckTalk(curPlayer, content, sendPack.GetLen(), tick, checkSameMsg = False):
        return
    #通用设置
    SetTalkTime(curPlayer, content, IPY_GameWorld.tcCountry, tick)
    #发送聊天内容
    extras = GetTalkExtraValue(curPlayer)
    curPlayer.ChatCountry(content, 0, extras)
    return
## 联盟家族频道(封包参数)
@@ -375,12 +361,10 @@
    extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_JOB)% job
    # 气泡框
    extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_BubbleBox) % PlayerControl.GetChatBubbleBox(objTalk)
    # 新手指导员
    #extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_NewGuider)% (freshmanGuiderDay > 0)
    # QQ会员
    #operateInfo = int(objTalk.GetOperateInfo())
    #extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_QQOperate)% (operateInfo)
    # 服务器组ID
    extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_ServerGroupID) % PlayerControl.GetPlayerServerGroupID(objTalk)
    # 等级
    extraValueStr += GetTalkExtraValueStar(ShareDefine.Def_TalkExtraValue_Bit_LV) % objTalk.GetLV()
    return extraValueStr
@@ -552,39 +536,39 @@
# };
#===============================================================================
def OnVoiceChat(index, clientPack, tick):
    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
    if GetGMToolForbidTalk(curPlayer):
        return
    if clientPack.ChannelType != ShareDefine.Def_ChannelChat_Area:
        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)
    # 区域频道
    #如果在普通地图, 就广播, 如果在副本就单个通知
    if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull:
        curPlayer.BroadCastAll(sendPack.GetBuffer(), len(sendPack.GetBuffer()))
    else:
        playerManager = GameWorld.GetMapCopyPlayerManager()
        for index in range(0 , playerManager.GetPlayerCount()):
            #广播玩家
            tempPlayer = playerManager.GetPlayerByIndex(index)
            if not tempPlayer.GetPlayerID():
                continue
            if PlayerTJG.GetIsTJG(tempPlayer):
                continue
            NetPackCommon.SendFakePack(tempPlayer, sendPack)
#    curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
#    if GetGMToolForbidTalk(curPlayer):
#        return
#    if clientPack.ChannelType != ShareDefine.Def_ChannelChat_Area:
#        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)
#
#    # 区域频道
#
#    #如果在普通地图, 就广播, 如果在副本就单个通知
#    if GameWorld.GetMap().GetMapFBType() == IPY_GameWorld.fbtNull:
#        curPlayer.BroadCastAll(sendPack.GetBuffer(), len(sendPack.GetBuffer()))
#    else:
#        playerManager = GameWorld.GetMapCopyPlayerManager()
#
#        for index in range(0 , playerManager.GetPlayerCount()):
#            #广播玩家
#            tempPlayer = playerManager.GetPlayerByIndex(index)
#            if not tempPlayer.GetPlayerID():
#                continue
#
#            if PlayerTJG.GetIsTJG(tempPlayer):
#                continue
#
#            NetPackCommon.SendFakePack(tempPlayer, sendPack)
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
@@ -96,6 +96,7 @@
    curPlayerPropDict["FightPower"] = curPlayer.GetFightPower()
    curPlayerPropDict["AppID"] = GameWorld.GetPlayerPlatform(curPlayer)
    curPlayerPropDict["EquipShowSwitch"] = curPlayer.GetEquipShowSwitch()
    curPlayerPropDict["ServerGroupID"] = PlayerControl.GetPlayerServerGroupID(curPlayer)
    #仙魔之争所需属性
    curPlayerPropDict["MinAtk"] = curPlayer.GetMinAtk()
    curPlayerPropDict["MaxAtk"] = curPlayer.GetMaxAtk()
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -900,7 +900,9 @@
Def_TalkExtraValue_Bit_GM,            #GM
Def_TalkExtraValue_Bit_JOB, #job
Def_TalkExtraValue_Bit_BubbleBox, #气泡框
) = range(0, 4)
Def_TalkExtraValue_Bit_ServerGroupID, #服务器组ID
Def_TalkExtraValue_Bit_LV, #等级
) = range(0, 6)
#聊天信息附加值中某信息数据所占位置
#{聊天信息附加值类型:[起始位置(从左往右), 结束位置(不包含)]}
@@ -909,6 +911,8 @@
     Def_TalkExtraValue_Bit_GM:[2, 3],  # GM
     Def_TalkExtraValue_Bit_JOB:[3, 4],  # job
     Def_TalkExtraValue_Bit_BubbleBox:[4, 6],  # 气泡框
     Def_TalkExtraValue_Bit_ServerGroupID:[6, 13],  # 服务器组ID
     Def_TalkExtraValue_Bit_LV:[13, 17],  # 等级
     }
# 聊天频道 暂用语音
@@ -1191,6 +1195,7 @@
CrossServerMsg_CrossServerState = "CrossServerState"    # 跨服服务器状态变更
CrossServerMsg_ExitCrossServer = "ExitCrossServer"      # 退出跨服服务器
CrossServerMsg_Notify = "Notify"                        # 提示信息
CrossServerMsg_ChatCrossWorld = "ChatCrossWorld"        # 跨服世界聊天
CrossServerMsg_ViewPlayerCacheRet = "ViewPlayerCacheRet"# 查看跨服玩家信息结果
CrossServerMsg_PKMatchReqRet = "PKMatchReqRet"          # 跨服PK匹配请求结果
CrossServerMsg_PKMatchResult = "PKMatchResult"          # 跨服PK匹配结果
@@ -1210,6 +1215,7 @@
# 子服发送跨服信息定义
ClientServerMsg_ServerInitOK = "ServerInitOK"           # 子服启动成功
ClientServerMsg_ChatCrossWorld = "ChatCrossWorld"       # 跨服世界聊天
ClientServerMsg_GMCMD = "GMCMD"                         # GM命令
ClientServerMsg_ViewPlayerCache = "ViewPlayerCache"     # 查看跨服玩家信息
ClientServerMsg_PKMatch = "PKMatch"                     # 跨服PK匹配