From 164b1a9e2eb3f9908e95e0050de828f0e35cb74b Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 23 五月 2022 16:38:31 +0800 Subject: [PATCH] 9415 【BT5】【后端】古神战场(初版:包含战场副本外的所有功能;副本中暂仅支持击杀玩家玩法) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 333 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 333 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 7d369cc..6a91da3 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -12288,6 +12288,283 @@ #------------------------------------------------------ +# C0 09 跨服战场玩家购买战场信息 #tagGCCrossBattlefieldBuyInfo + +class tagGCCrossBattlefieldPlayer(Structure): + PlayerID = 0 #(DWORD PlayerID) + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV)//等级 + RealmLV = 0 #(WORD RealmLV)//境界 + FightPower = 0 #(DWORD FightPower)//战力求余亿部分 + FightPowerEx = 0 #(DWORD FightPowerEx)//战力整除亿部分 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.PlayerID = 0 + self.PlayerName = "" + self.Job = 0 + self.LV = 0 + self.RealmLV = 0 + self.FightPower = 0 + self.FightPowerEx = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 33 + length += 1 + length += 2 + length += 2 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteString(data, 33, self.PlayerName) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteDWORD(data, self.FightPowerEx) + return data + + def OutputString(self): + DumpString = ''' + PlayerID:%d, + PlayerName:%s, + Job:%d, + LV:%d, + RealmLV:%d, + FightPower:%d, + FightPowerEx:%d + '''\ + %( + self.PlayerID, + self.PlayerName, + self.Job, + self.LV, + self.RealmLV, + self.FightPower, + self.FightPowerEx + ) + return DumpString + + +class tagGCCrossBattlefieldBuyPlayer(Structure): + BuyPlayerID = 0 #(DWORD BuyPlayerID)//购买的玩家ID,即召集人 + Faction = 0 #(BYTE Faction)//阵营 1-红;2-蓝 + FactionPlayerCount = 0 #(BYTE FactionPlayerCount) + FactionPlayerList = list() #(vector<tagGCCrossBattlefieldPlayer> FactionPlayerList)//阵营所有玩家列表,包含召集人 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.BuyPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Faction,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FactionPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.FactionPlayerCount): + temFactionPlayerList = tagGCCrossBattlefieldPlayer() + _pos = temFactionPlayerList.ReadData(_lpData, _pos) + self.FactionPlayerList.append(temFactionPlayerList) + return _pos + + def Clear(self): + self.BuyPlayerID = 0 + self.Faction = 0 + self.FactionPlayerCount = 0 + self.FactionPlayerList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += 1 + for i in range(self.FactionPlayerCount): + length += self.FactionPlayerList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.BuyPlayerID) + data = CommFunc.WriteBYTE(data, self.Faction) + data = CommFunc.WriteBYTE(data, self.FactionPlayerCount) + for i in range(self.FactionPlayerCount): + data = CommFunc.WriteString(data, self.FactionPlayerList[i].GetLength(), self.FactionPlayerList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + BuyPlayerID:%d, + Faction:%d, + FactionPlayerCount:%d, + FactionPlayerList:%s + '''\ + %( + self.BuyPlayerID, + self.Faction, + self.FactionPlayerCount, + "..." + ) + return DumpString + + +class tagGCCrossBattlefieldBuyHM(Structure): + Hour = 0 #(BYTE Hour)//战场开启时 + Minute = 0 #(BYTE Minute)//战场开启分 + BuyPlayerCount = 0 #(BYTE BuyPlayerCount) + BuyPlayerList = list() #(vector<tagGCCrossBattlefieldBuyPlayer> BuyPlayerList)//购买本场次的玩家信息列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Hour,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Minute,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.BuyPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BuyPlayerCount): + temBuyPlayerList = tagGCCrossBattlefieldBuyPlayer() + _pos = temBuyPlayerList.ReadData(_lpData, _pos) + self.BuyPlayerList.append(temBuyPlayerList) + return _pos + + def Clear(self): + self.Hour = 0 + self.Minute = 0 + self.BuyPlayerCount = 0 + self.BuyPlayerList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += 1 + for i in range(self.BuyPlayerCount): + length += self.BuyPlayerList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.Hour) + data = CommFunc.WriteBYTE(data, self.Minute) + data = CommFunc.WriteBYTE(data, self.BuyPlayerCount) + for i in range(self.BuyPlayerCount): + data = CommFunc.WriteString(data, self.BuyPlayerList[i].GetLength(), self.BuyPlayerList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Hour:%d, + Minute:%d, + BuyPlayerCount:%d, + BuyPlayerList:%s + '''\ + %( + self.Hour, + self.Minute, + self.BuyPlayerCount, + "..." + ) + return DumpString + + +class tagGCCrossBattlefieldBuyInfo(Structure): + Head = tagHead() + HMCount = 0 #(BYTE HMCount)// 为0时清空重置,其他为增量更新 + HMBuyList = list() #(vector<tagGCCrossBattlefieldBuyHM> HMBuyList)//购买场次列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x09 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.HMCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.HMCount): + temHMBuyList = tagGCCrossBattlefieldBuyHM() + _pos = temHMBuyList.ReadData(_lpData, _pos) + self.HMBuyList.append(temHMBuyList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x09 + self.HMCount = 0 + self.HMBuyList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.HMCount): + length += self.HMBuyList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.HMCount) + for i in range(self.HMCount): + data = CommFunc.WriteString(data, self.HMBuyList[i].GetLength(), self.HMBuyList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + HMCount:%d, + HMBuyList:%s + '''\ + %( + self.Head.OutputString(), + self.HMCount, + "..." + ) + return DumpString + + +m_NAtagGCCrossBattlefieldBuyInfo=tagGCCrossBattlefieldBuyInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossBattlefieldBuyInfo.Head.Cmd,m_NAtagGCCrossBattlefieldBuyInfo.Head.SubCmd))] = m_NAtagGCCrossBattlefieldBuyInfo + + +#------------------------------------------------------ # C0 07 跨服排行榜信息 #tagGCCrossBillboardInfo class tagGCCrossBillboardData(Structure): @@ -40971,6 +41248,62 @@ #------------------------------------------------------ +# C1 07 跨服战场玩家信息 #tagMCCrossBattlefieldPlayerInfo + +class tagMCCrossBattlefieldPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BuyOpenCountToday", c_ubyte), # 今日已购买开启战场次数 + ("HighScoreToday", c_int), # 今日最高积分 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC1 + self.SubCmd = 0x07 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xC1 + self.SubCmd = 0x07 + self.BuyOpenCountToday = 0 + self.HighScoreToday = 0 + return + + def GetLength(self): + return sizeof(tagMCCrossBattlefieldPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C1 07 跨服战场玩家信息 //tagMCCrossBattlefieldPlayerInfo: + Cmd:%s, + SubCmd:%s, + BuyOpenCountToday:%d, + HighScoreToday:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BuyOpenCountToday, + self.HighScoreToday + ) + return DumpString + + +m_NAtagMCCrossBattlefieldPlayerInfo=tagMCCrossBattlefieldPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossBattlefieldPlayerInfo.Cmd,m_NAtagMCCrossBattlefieldPlayerInfo.SubCmd))] = m_NAtagMCCrossBattlefieldPlayerInfo + + +#------------------------------------------------------ # C1 02 跨服PK玩家奖励记录 #tagMCCrossRealmPKAwardState class tagMCCrossRealmPKAwardState(Structure): -- Gitblit v1.8.0