From c5731326acc36a3cfc6870ddb51ce2cc86e2cdc5 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 09 一月 2025 17:00:16 +0800 Subject: [PATCH] 10361 【越南】【英语】【BT】【砍树】仙匠大会 - 服务端 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 428 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 428 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 7484eb3..80940a3 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -44354,6 +44354,434 @@ #------------------------------------------------------ +# AA 90 炼器跨服活动信息 #tagMCCrossActLianqiInfo + +class tagMCCrossActLianqiItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("ItemCount", c_ushort), + ("IsBind", c_ubyte), + ] + + def __init__(self): + self.Clear() + 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.ItemID = 0 + self.ItemCount = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCCrossActLianqiItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 90 炼器跨服活动信息 //tagMCCrossActLianqiInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCCrossActLianqiBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActLianqiItem> AwardItemList)// 奖励物品列表 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAwardItemList = tagMCCrossActLianqiItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + self.NeedScore = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s, + NeedScore:%d + '''\ + %( + self.Rank, + self.Count, + "...", + self.NeedScore + ) + return DumpString + + +class tagMCCrossActLianqiInfo(Structure): + Head = tagHead() + ServerInfoLen = 0 #(BYTE ServerInfoLen) + ServerIDRangeInfo = "" #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服 + GroupValue1 = 0 #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单 + StartDate = "" #(char StartDate[10])// 开始日期 y-m-d + EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d + JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss + JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss + LimitLV = 0 #(WORD LimitLV)// 限制等级 + PersonalBillCount = 0 #(BYTE PersonalBillCount) + PersonalBillboardInfoList = list() #(vector<tagMCCrossActLianqiBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x90 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen) + self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) + self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5) + self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) + self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PersonalBillCount): + temPersonalBillboardInfoList = tagMCCrossActLianqiBillard() + _pos = temPersonalBillboardInfoList.ReadData(_lpData, _pos) + self.PersonalBillboardInfoList.append(temPersonalBillboardInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x90 + self.ServerInfoLen = 0 + self.ServerIDRangeInfo = "" + self.GroupValue1 = 0 + self.StartDate = "" + self.EndtDate = "" + self.JoinStartTime = "" + self.JoinEndTime = "" + self.LimitLV = 0 + self.PersonalBillCount = 0 + self.PersonalBillboardInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += len(self.ServerIDRangeInfo) + length += 1 + length += 10 + length += 10 + length += 5 + length += 5 + length += 2 + length += 1 + for i in range(self.PersonalBillCount): + length += self.PersonalBillboardInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ServerInfoLen) + data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo) + data = CommFunc.WriteBYTE(data, self.GroupValue1) + data = CommFunc.WriteString(data, 10, self.StartDate) + data = CommFunc.WriteString(data, 10, self.EndtDate) + data = CommFunc.WriteString(data, 5, self.JoinStartTime) + data = CommFunc.WriteString(data, 5, self.JoinEndTime) + data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.PersonalBillCount) + for i in range(self.PersonalBillCount): + data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ServerInfoLen:%d, + ServerIDRangeInfo:%s, + GroupValue1:%d, + StartDate:%s, + EndtDate:%s, + JoinStartTime:%s, + JoinEndTime:%s, + LimitLV:%d, + PersonalBillCount:%d, + PersonalBillboardInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.ServerInfoLen, + self.ServerIDRangeInfo, + self.GroupValue1, + self.StartDate, + self.EndtDate, + self.JoinStartTime, + self.JoinEndTime, + self.LimitLV, + self.PersonalBillCount, + "..." + ) + return DumpString + + +m_NAtagMCCrossActLianqiInfo=tagMCCrossActLianqiInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActLianqiInfo.Head.Cmd,m_NAtagMCCrossActLianqiInfo.Head.SubCmd))] = m_NAtagMCCrossActLianqiInfo + + +#------------------------------------------------------ +# AA 91 炼器活动玩家信息 #tagMCActLianqiPlayerInfo + +class tagMCActLianqiTileMove(Structure): + _pack_ = 1 + _fields_ = [ + ("Row", c_ubyte), # 行,0为第1行 + ("Col", c_ubyte), # 列,0为第1列 + ("ToRow", c_ubyte), # 移动到目标行 + ("ToCol", c_ubyte), # 移动到目标列 + ] + + def __init__(self): + self.Clear() + 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.Row = 0 + self.Col = 0 + self.ToRow = 0 + self.ToCol = 0 + return + + def GetLength(self): + return sizeof(tagMCActLianqiTileMove) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 91 炼器活动玩家信息 //tagMCActLianqiPlayerInfo: + Row:%d, + Col:%d, + ToRow:%d, + ToCol:%d + '''\ + %( + self.Row, + self.Col, + self.ToRow, + self.ToCol + ) + return DumpString + + +class tagMCActLianqiPlayerInfo(Structure): + Head = tagHead() + Score = 0 #(DWORD Score)// 当前活动积分 + ScoreHighest = 0 #(DWORD ScoreHighest)// 当前活动最高积分,即上榜积分 + Energy = 0 #(WORD Energy)// 当前体力 + EnergyTime = 0 #(DWORD EnergyTime)// 上次恢复体力时间戳,为0时不用处理倒计时 + LVAwardMax = 0 #(DWORD LVAwardMax)// 已激活的最大合成奖励等级 + LVAwardState = 0 #(DWORD LVAwardState)// 最大合成等级奖励领取记录,按等级二进制位存储是否已领取 + UseItemLen = 0 #(BYTE UseItemLen) + UseItemCntList = list() #(vector<WORD> UseItemCntList)// 本局已使用辅助道具次数 [辅助道具1使用次数, ...] + GridDataLen = 0 #(BYTE GridDataLen)// 格子数据长度 + GridData = "" #(String GridData)// 格子二维行列数据,一定会同步,直接替换,行从上往下排 [[第1行格子1,格子2, ...], ...] + OPType = 0 #(BYTE OPType)// 0-无(如初始化,GM等后端直接设置);1-移动;2-使用道具;3-重新开始;如果是因为操作引起的格子数据变化,则在相关操作表现完毕后再展示最新行列数据,否则直接变更 + MoveCount = 0 #(BYTE MoveCount) + MoveList = list() #(vector<tagMCActLianqiTileMove> MoveList)// 图块移动列表,可能没有数据,有的话先表现移动 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x91 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ScoreHighest,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LVAwardMax,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LVAwardState,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.UseItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.UseItemLen): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.UseItemCntList.append(value) + self.GridDataLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.GridData,_pos = CommFunc.ReadString(_lpData, _pos,self.GridDataLen) + self.OPType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MoveCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.MoveCount): + temMoveList = tagMCActLianqiTileMove() + _pos = temMoveList.ReadData(_lpData, _pos) + self.MoveList.append(temMoveList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x91 + self.Score = 0 + self.ScoreHighest = 0 + self.Energy = 0 + self.EnergyTime = 0 + self.LVAwardMax = 0 + self.LVAwardState = 0 + self.UseItemLen = 0 + self.UseItemCntList = list() + self.GridDataLen = 0 + self.GridData = "" + self.OPType = 0 + self.MoveCount = 0 + self.MoveList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 4 + length += 2 + length += 4 + length += 4 + length += 4 + length += 1 + length += 2 * self.UseItemLen + length += 1 + length += len(self.GridData) + length += 1 + length += 1 + for i in range(self.MoveCount): + length += self.MoveList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.Score) + data = CommFunc.WriteDWORD(data, self.ScoreHighest) + data = CommFunc.WriteWORD(data, self.Energy) + data = CommFunc.WriteDWORD(data, self.EnergyTime) + data = CommFunc.WriteDWORD(data, self.LVAwardMax) + data = CommFunc.WriteDWORD(data, self.LVAwardState) + data = CommFunc.WriteBYTE(data, self.UseItemLen) + for i in range(self.UseItemLen): + data = CommFunc.WriteWORD(data, self.UseItemCntList[i]) + data = CommFunc.WriteBYTE(data, self.GridDataLen) + data = CommFunc.WriteString(data, self.GridDataLen, self.GridData) + data = CommFunc.WriteBYTE(data, self.OPType) + data = CommFunc.WriteBYTE(data, self.MoveCount) + for i in range(self.MoveCount): + data = CommFunc.WriteString(data, self.MoveList[i].GetLength(), self.MoveList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Score:%d, + ScoreHighest:%d, + Energy:%d, + EnergyTime:%d, + LVAwardMax:%d, + LVAwardState:%d, + UseItemLen:%d, + UseItemCntList:%s, + GridDataLen:%d, + GridData:%s, + OPType:%d, + MoveCount:%d, + MoveList:%s + '''\ + %( + self.Head.OutputString(), + self.Score, + self.ScoreHighest, + self.Energy, + self.EnergyTime, + self.LVAwardMax, + self.LVAwardState, + self.UseItemLen, + "...", + self.GridDataLen, + self.GridData, + self.OPType, + self.MoveCount, + "..." + ) + return DumpString + + +m_NAtagMCActLianqiPlayerInfo=tagMCActLianqiPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLianqiPlayerInfo.Head.Cmd,m_NAtagMCActLianqiPlayerInfo.Head.SubCmd))] = m_NAtagMCActLianqiPlayerInfo + + +#------------------------------------------------------ # AA 80 仙匣秘境跨服活动信息 #tagMCCrossActXianXiaMJInfo class tagMCCrossActXianXiaMJItem(Structure): -- Gitblit v1.8.0