From cf12ea809cd7c5b063ae284afc76e175df83d62d Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 21 一月 2025 18:56:58 +0800
Subject: [PATCH] 10263 【越南】【英文】【BT】【砍树】后端支持NPC仿真实玩家战斗和快速战斗(优化不创建战斗PK时玩家自身镜像数据同步;)
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 527 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 523 insertions(+), 4 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 327fa7b..29da48e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -20425,6 +20425,7 @@
("SubCmd", c_ubyte),
("MapID", c_ushort),
("FuncLineID", c_ushort), #功能线路ID
+ ("FuncMapID", c_ushort), #功能地图ID
]
def __init__(self):
@@ -20443,6 +20444,7 @@
self.SubCmd = 0x26
self.MapID = 0
self.FuncLineID = 0
+ self.FuncMapID = 0
return
def GetLength(self):
@@ -20456,13 +20458,15 @@
Cmd:%s,
SubCmd:%s,
MapID:%d,
- FuncLineID:%d
+ FuncLineID:%d,
+ FuncMapID:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.MapID,
- self.FuncLineID
+ self.FuncLineID,
+ self.FuncMapID
)
return DumpString
@@ -20481,6 +20485,7 @@
("SubCmd", c_ubyte),
("MapID", c_int),
("FuncLineID", c_ushort), #功能线路ID
+ ("FuncMapID", c_ushort), #功能地图ID
]
def __init__(self):
@@ -20499,6 +20504,7 @@
self.SubCmd = 0x27
self.MapID = 0
self.FuncLineID = 0
+ self.FuncMapID = 0
return
def GetLength(self):
@@ -20512,13 +20518,15 @@
Cmd:%s,
SubCmd:%s,
MapID:%d,
- FuncLineID:%d
+ FuncLineID:%d,
+ FuncMapID:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.MapID,
- self.FuncLineID
+ self.FuncLineID,
+ self.FuncMapID
)
return DumpString
@@ -28945,6 +28953,7 @@
TreasureType = 0 #(BYTE TreasureType)//寻宝类型
LuckValue = 0 #(WORD LuckValue)//当前幸运值
TreasureCount = 0 #(DWORD TreasureCount)//已寻宝总次数
+ TreasureCountToday = 0 #(DWORD TreasureCountToday)//今日已寻宝总次数
FreeCountToday = 0 #(WORD FreeCountToday)//今日已免费寻宝次数
TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
GridLimitCnt = 0 #(BYTE GridLimitCnt)
@@ -28960,6 +28969,7 @@
self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FreeCountToday,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureCntAward,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.GridLimitCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -28973,6 +28983,7 @@
self.TreasureType = 0
self.LuckValue = 0
self.TreasureCount = 0
+ self.TreasureCountToday = 0
self.FreeCountToday = 0
self.TreasureCntAward = 0
self.GridLimitCnt = 0
@@ -28983,6 +28994,7 @@
length = 0
length += 1
length += 2
+ length += 4
length += 4
length += 2
length += 4
@@ -28997,6 +29009,7 @@
data = CommFunc.WriteBYTE(data, self.TreasureType)
data = CommFunc.WriteWORD(data, self.LuckValue)
data = CommFunc.WriteDWORD(data, self.TreasureCount)
+ data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
data = CommFunc.WriteWORD(data, self.FreeCountToday)
data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
@@ -29009,6 +29022,7 @@
TreasureType:%d,
LuckValue:%d,
TreasureCount:%d,
+ TreasureCountToday:%d,
FreeCountToday:%d,
TreasureCntAward:%d,
GridLimitCnt:%d,
@@ -29018,6 +29032,7 @@
self.TreasureType,
self.LuckValue,
self.TreasureCount,
+ self.TreasureCountToday,
self.FreeCountToday,
self.TreasureCntAward,
self.GridLimitCnt,
@@ -44285,6 +44300,510 @@
#------------------------------------------------------
+# 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 tagMCCrossActLianqiAwardEx(Structure):
+ NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
+ Count = 0 #(BYTE Count)// 额外奖励物品数
+ AwardItemList = list() #(vector<tagMCCrossActLianqiItem> AwardItemList)// 额外奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.NeedScore,_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)
+ return _pos
+
+ def Clear(self):
+ self.NeedScore = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.NeedScore)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ NeedScore:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.NeedScore,
+ self.Count,
+ "..."
+ )
+ 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)// 上榜所需积分
+ CountEx = 0 #(BYTE CountEx)// 额外奖励数
+ AwardItemExList = list() #(vector<tagMCCrossActLianqiAwardEx> AwardItemExList)// 额外奖励列表
+ 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)
+ self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CountEx):
+ temAwardItemExList = tagMCCrossActLianqiAwardEx()
+ _pos = temAwardItemExList.ReadData(_lpData, _pos)
+ self.AwardItemExList.append(temAwardItemExList)
+ return _pos
+
+ def Clear(self):
+ self.Rank = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ self.NeedScore = 0
+ self.CountEx = 0
+ self.AwardItemExList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+ length += 4
+ length += 1
+ for i in range(self.CountEx):
+ length += self.AwardItemExList[i].GetLength()
+
+ 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)
+ data = CommFunc.WriteBYTE(data, self.CountEx)
+ for i in range(self.CountEx):
+ data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Rank:%d,
+ Count:%d,
+ AwardItemList:%s,
+ NeedScore:%d,
+ CountEx:%d,
+ AwardItemExList:%s
+ '''\
+ %(
+ self.Rank,
+ self.Count,
+ "...",
+ self.NeedScore,
+ self.CountEx,
+ "..."
+ )
+ 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