From 37287e325c81b011929b4f91dda1c73666099e85 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 15 一月 2019 16:56:13 +0800
Subject: [PATCH] 5722 【后端】【1.5】跨服BOSS开发(跨服世界频道、区域频道聊天支持)
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py | 140 +++++++---------
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 8
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 22 +-
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py | 201 +++++++++++++++---------
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 8
ServerPython/CoreServerGroup/GameServer/ServerCommScript.ini | 6
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 22 +-
ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py | 1
12 files changed, 243 insertions(+), 182 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 8f1f990..702c9eb 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/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
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
index 3e3616b..8291317 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossRealmMsg.py
+++ b/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)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py
index 2ae44ba..187061c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/CrossRealmPlayer.py
+++ b/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
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
index 9845f9c..9a8e18d 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerTalk.py
+++ b/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
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
index 8f0db15..bffd6cb 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerViewCache.py
+++ b/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)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 090b5b2..d561aec 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/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匹配
diff --git a/ServerPython/CoreServerGroup/GameServer/ServerCommScript.ini b/ServerPython/CoreServerGroup/GameServer/ServerCommScript.ini
index e4d2304..0e77a02 100644
--- a/ServerPython/CoreServerGroup/GameServer/ServerCommScript.ini
+++ b/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]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
index d9196dc..4dd4ed1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script.ini
+++ b/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]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 8f1f990..702c9eb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/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
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
index 32ebc56..f51d7d3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTalk.py
+++ b/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
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
index 9d6b53e..971bab8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerViewCacheTube.py
+++ b/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()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 090b5b2..d561aec 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/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匹配
--
Gitblit v1.8.0