From 8166d5b7bc084e0e6bdf65c54ffd0391ccb8b66a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 24 一月 2025 19:09:17 +0800
Subject: [PATCH] 1111 【越南】【英语】【BT】【砍树】增加功能开启触发任务事件;
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 897 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 827 insertions(+), 70 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index c0fdcb6..29da48e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -17238,48 +17238,74 @@
# C0 15 跨服排位分区分组信息 #tagGCCrossChampionshipPKZoneGroupInfo
class tagGCCrossChampionshipPKBattle(Structure):
- _pack_ = 1
- _fields_ = [
- ("BattleNum", c_ubyte), # 对战组编号 1~n
- ("WinPlayerID", c_int), # 获胜玩家ID
- ("PlayerIDA", c_int), # 玩家IDA
- ("PlayerIDB", c_int), # 玩家IDB
- ]
+ BattleNum = 0 #(BYTE BattleNum)// 对战组编号 1~n
+ WinPlayerID = 0 #(DWORD WinPlayerID)// 获胜玩家ID
+ PlayerIDA = 0 #(DWORD PlayerIDA)// 玩家IDA
+ PlayerIDB = 0 #(DWORD PlayerIDB)// 玩家IDB
+ BattleRetLen = 0 #(BYTE BattleRetLen)
+ BattleRet = "" #(String BattleRet)// 战斗结果明细 {"playerID":[[第1局胜负,第1局总积分,胜负基础分,hp分,时间分], ...], ...}
+ data = None
def __init__(self):
self.Clear()
return
- def ReadData(self, stringData, _pos=0, _len=0):
+ def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
- memmove(addressof(self), stringData[_pos:], self.GetLength())
- return _pos + self.GetLength()
+ self.BattleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WinPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerIDA,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.PlayerIDB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BattleRetLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.BattleRet,_pos = CommFunc.ReadString(_lpData, _pos,self.BattleRetLen)
+ return _pos
def Clear(self):
self.BattleNum = 0
self.WinPlayerID = 0
self.PlayerIDA = 0
self.PlayerIDB = 0
+ self.BattleRetLen = 0
+ self.BattleRet = ""
return
def GetLength(self):
- return sizeof(tagGCCrossChampionshipPKBattle)
+ length = 0
+ length += 1
+ length += 4
+ length += 4
+ length += 4
+ length += 1
+ length += len(self.BattleRet)
+
+ return length
def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.BattleNum)
+ data = CommFunc.WriteDWORD(data, self.WinPlayerID)
+ data = CommFunc.WriteDWORD(data, self.PlayerIDA)
+ data = CommFunc.WriteDWORD(data, self.PlayerIDB)
+ data = CommFunc.WriteBYTE(data, self.BattleRetLen)
+ data = CommFunc.WriteString(data, self.BattleRetLen, self.BattleRet)
+ return data
def OutputString(self):
- DumpString = '''// C0 15 跨服排位分区分组信息 //tagGCCrossChampionshipPKZoneGroupInfo:
+ DumpString = '''
BattleNum:%d,
WinPlayerID:%d,
PlayerIDA:%d,
- PlayerIDB:%d
+ PlayerIDB:%d,
+ BattleRetLen:%d,
+ BattleRet:%s
'''\
%(
self.BattleNum,
self.WinPlayerID,
self.PlayerIDA,
- self.PlayerIDB
+ self.PlayerIDB,
+ self.BattleRetLen,
+ self.BattleRet
)
return DumpString
@@ -17741,11 +17767,11 @@
PlayerName = "" #(String PlayerName)// 跨服名字
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)
+ RealmLV = 0 #(WORD RealmLV)//境界
Face = 0 #(DWORD Face)//基本脸型
FacePic = 0 #(DWORD FacePic)//头像框
- MaxHP = 0 #(DWORD MaxHP)// 默认满血,求余亿部分
- MaxHPEx = 0 #(DWORD MaxHPEx)// 默认满血,整除亿部分
- MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾
+ FightPower = 0 #(DWORD FightPower)//战力,求余亿部分
+ FightPowerEx = 0 #(DWORD FightPowerEx)//战力,整除亿部分
data = None
def __init__(self):
@@ -17759,11 +17785,11 @@
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.MaxProDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -17772,11 +17798,11 @@
self.PlayerName = ""
self.Job = 0
self.LV = 0
+ self.RealmLV = 0
self.Face = 0
self.FacePic = 0
- self.MaxHP = 0
- self.MaxHPEx = 0
- self.MaxProDef = 0
+ self.FightPower = 0
+ self.FightPowerEx = 0
return
def GetLength(self):
@@ -17786,7 +17812,7 @@
length += len(self.PlayerName)
length += 1
length += 2
- length += 4
+ length += 2
length += 4
length += 4
length += 4
@@ -17801,11 +17827,11 @@
data = CommFunc.WriteString(data, self.NameLen, 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.Face)
data = CommFunc.WriteDWORD(data, self.FacePic)
- data = CommFunc.WriteDWORD(data, self.MaxHP)
- data = CommFunc.WriteDWORD(data, self.MaxHPEx)
- data = CommFunc.WriteDWORD(data, self.MaxProDef)
+ data = CommFunc.WriteDWORD(data, self.FightPower)
+ data = CommFunc.WriteDWORD(data, self.FightPowerEx)
return data
def OutputString(self):
@@ -17815,11 +17841,11 @@
PlayerName:%s,
Job:%d,
LV:%d,
+ RealmLV:%d,
Face:%d,
FacePic:%d,
- MaxHP:%d,
- MaxHPEx:%d,
- MaxProDef:%d
+ FightPower:%d,
+ FightPowerEx:%d
'''\
%(
self.PlayerID,
@@ -17827,21 +17853,17 @@
self.PlayerName,
self.Job,
self.LV,
+ self.RealmLV,
self.Face,
self.FacePic,
- self.MaxHP,
- self.MaxHPEx,
- self.MaxProDef
+ self.FightPower,
+ self.FightPowerEx
)
return DumpString
class tagGCCrossRealmPKMatchOK(Structure):
Head = tagHead()
- RoomID = 0 #(WORD RoomID)// 房间ID
- NameLen = 0 #(BYTE NameLen)
- PlayerName = "" #(String PlayerName)// 跨服名字
- Number = 0 #(BYTE Number)// 位置编号;1-左,2-右
MatchPlayerCount = 0 #(BYTE MatchPlayerCount)
MatchPlayer = list() #(vector<tagGCCrossRealmPKMatchPlayer> MatchPlayer)// 匹配到的玩家
data = None
@@ -17855,10 +17877,6 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
- self.RoomID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
- self.Number,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.MatchPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.MatchPlayerCount):
temMatchPlayer = tagGCCrossRealmPKMatchPlayer()
@@ -17871,10 +17889,6 @@
self.Head.Clear()
self.Head.Cmd = 0xC0
self.Head.SubCmd = 0x01
- self.RoomID = 0
- self.NameLen = 0
- self.PlayerName = ""
- self.Number = 0
self.MatchPlayerCount = 0
self.MatchPlayer = list()
return
@@ -17882,10 +17896,6 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
- length += 2
- length += 1
- length += len(self.PlayerName)
- length += 1
length += 1
for i in range(self.MatchPlayerCount):
length += self.MatchPlayer[i].GetLength()
@@ -17895,10 +17905,6 @@
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
- data = CommFunc.WriteWORD(data, self.RoomID)
- data = CommFunc.WriteBYTE(data, self.NameLen)
- data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
- data = CommFunc.WriteBYTE(data, self.Number)
data = CommFunc.WriteBYTE(data, self.MatchPlayerCount)
for i in range(self.MatchPlayerCount):
data = CommFunc.WriteString(data, self.MatchPlayer[i].GetLength(), self.MatchPlayer[i].GetBuffer())
@@ -17907,19 +17913,11 @@
def OutputString(self):
DumpString = '''
Head:%s,
- RoomID:%d,
- NameLen:%d,
- PlayerName:%s,
- Number:%d,
MatchPlayerCount:%d,
MatchPlayer:%s
'''\
%(
self.Head.OutputString(),
- self.RoomID,
- self.NameLen,
- self.PlayerName,
- self.Number,
self.MatchPlayerCount,
"..."
)
@@ -20427,6 +20425,7 @@
("SubCmd", c_ubyte),
("MapID", c_ushort),
("FuncLineID", c_ushort), #功能线路ID
+ ("FuncMapID", c_ushort), #功能地图ID
]
def __init__(self):
@@ -20445,6 +20444,7 @@
self.SubCmd = 0x26
self.MapID = 0
self.FuncLineID = 0
+ self.FuncMapID = 0
return
def GetLength(self):
@@ -20458,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
@@ -20483,6 +20485,7 @@
("SubCmd", c_ubyte),
("MapID", c_int),
("FuncLineID", c_ushort), #功能线路ID
+ ("FuncMapID", c_ushort), #功能地图ID
]
def __init__(self):
@@ -20501,6 +20504,7 @@
self.SubCmd = 0x27
self.MapID = 0
self.FuncLineID = 0
+ self.FuncMapID = 0
return
def GetLength(self):
@@ -20514,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
@@ -28947,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)
@@ -28962,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)
@@ -28975,6 +28983,7 @@
self.TreasureType = 0
self.LuckValue = 0
self.TreasureCount = 0
+ self.TreasureCountToday = 0
self.FreeCountToday = 0
self.TreasureCntAward = 0
self.GridLimitCnt = 0
@@ -28985,6 +28994,7 @@
length = 0
length += 1
length += 2
+ length += 4
length += 4
length += 2
length += 4
@@ -28999,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)
@@ -29011,6 +29022,7 @@
TreasureType:%d,
LuckValue:%d,
TreasureCount:%d,
+ TreasureCountToday:%d,
FreeCountToday:%d,
TreasureCntAward:%d,
GridLimitCnt:%d,
@@ -29020,6 +29032,7 @@
self.TreasureType,
self.LuckValue,
self.TreasureCount,
+ self.TreasureCountToday,
self.FreeCountToday,
self.TreasureCntAward,
self.GridLimitCnt,
@@ -33070,6 +33083,218 @@
m_NAtagObjInfoListRefresh=tagObjInfoListRefresh()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagObjInfoListRefresh.Head.Cmd,m_NAtagObjInfoListRefresh.Head.SubCmd))] = m_NAtagObjInfoListRefresh
+
+
+#------------------------------------------------------
+# A8 01 获得奖励信息 #tagMCGiveAwardInfo
+
+class tagMCGiveAwardMoney(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("MoneyType", c_ubyte),
+ ("MoneyValue", c_int),
+ ]
+
+ 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.MoneyType = 0
+ self.MoneyValue = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGiveAwardMoney)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
+ MoneyType:%d,
+ MoneyValue:%d
+ '''\
+ %(
+ self.MoneyType,
+ self.MoneyValue
+ )
+ return DumpString
+
+
+class tagMCGiveAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("Count", c_int),
+ ("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.Count = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCGiveAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
+ ItemID:%d,
+ Count:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Count,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCGiveAwardInfo(Structure):
+ Head = tagHead()
+ EventLen = 0 #(BYTE EventLen)
+ EventName = "" #(String EventName)
+ Exp = 0 #(DWORD Exp)// 奖励经验,求余亿部分
+ ExpPoint = 0 #(DWORD ExpPoint)// 奖励经验,整除亿部分
+ MoneyLen = 0 #(BYTE MoneyLen)
+ MoneyList = list() #(vector<tagMCGiveAwardMoney> MoneyList)// 奖励货币
+ ItemLen = 0 #(BYTE ItemLen)
+ ItemList = list() #(vector<tagMCGiveAwardItem> ItemList)// 奖励物品
+ DataLen = 0 #(WORD DataLen)
+ DataEx = "" #(String DataEx)// 扩展信息,可由不同的Event自定义信息内容
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x01
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.EventLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.EventName,_pos = CommFunc.ReadString(_lpData, _pos,self.EventLen)
+ self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.MoneyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.MoneyLen):
+ temMoneyList = tagMCGiveAwardMoney()
+ _pos = temMoneyList.ReadData(_lpData, _pos)
+ self.MoneyList.append(temMoneyList)
+ self.ItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ItemLen):
+ temItemList = tagMCGiveAwardItem()
+ _pos = temItemList.ReadData(_lpData, _pos)
+ self.ItemList.append(temItemList)
+ self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.DataEx,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA8
+ self.Head.SubCmd = 0x01
+ self.EventLen = 0
+ self.EventName = ""
+ self.Exp = 0
+ self.ExpPoint = 0
+ self.MoneyLen = 0
+ self.MoneyList = list()
+ self.ItemLen = 0
+ self.ItemList = list()
+ self.DataLen = 0
+ self.DataEx = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += len(self.EventName)
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.MoneyLen):
+ length += self.MoneyList[i].GetLength()
+ length += 1
+ for i in range(self.ItemLen):
+ length += self.ItemList[i].GetLength()
+ length += 2
+ length += len(self.DataEx)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.EventLen)
+ data = CommFunc.WriteString(data, self.EventLen, self.EventName)
+ data = CommFunc.WriteDWORD(data, self.Exp)
+ data = CommFunc.WriteDWORD(data, self.ExpPoint)
+ data = CommFunc.WriteBYTE(data, self.MoneyLen)
+ for i in range(self.MoneyLen):
+ data = CommFunc.WriteString(data, self.MoneyList[i].GetLength(), self.MoneyList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ItemLen)
+ for i in range(self.ItemLen):
+ data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.DataLen)
+ data = CommFunc.WriteString(data, self.DataLen, self.DataEx)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ EventLen:%d,
+ EventName:%s,
+ Exp:%d,
+ ExpPoint:%d,
+ MoneyLen:%d,
+ MoneyList:%s,
+ ItemLen:%d,
+ ItemList:%s,
+ DataLen:%d,
+ DataEx:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.EventLen,
+ self.EventName,
+ self.Exp,
+ self.ExpPoint,
+ self.MoneyLen,
+ "...",
+ self.ItemLen,
+ "...",
+ self.DataLen,
+ self.DataEx
+ )
+ return DumpString
+
+
+m_NAtagMCGiveAwardInfo=tagMCGiveAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGiveAwardInfo.Head.Cmd,m_NAtagMCGiveAwardInfo.Head.SubCmd))] = m_NAtagMCGiveAwardInfo
#------------------------------------------------------
@@ -38479,6 +38704,9 @@
RoundMax = 0 #(BYTE RoundMax)// 最大可循环轮次
AwardCount = 0 #(BYTE AwardCount)
AwardList = list() #(vector<tagMCActLunhuidianAward> AwardList)// 每轮奖励列表
+ CTGIDCount = 0 #(BYTE CTGIDCount)
+ CTGIDList = list() #(vector<WORD> CTGIDList)// CTGID列表
+ ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放
data = None
def __init__(self):
@@ -38496,6 +38724,11 @@
temAwardList = tagMCActLunhuidianAward()
_pos = temAwardList.ReadData(_lpData, _pos)
self.AwardList.append(temAwardList)
+ self.CTGIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.CTGIDCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.CTGIDList.append(value)
+ self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -38505,6 +38738,9 @@
self.RoundMax = 0
self.AwardCount = 0
self.AwardList = list()
+ self.CTGIDCount = 0
+ self.CTGIDList = list()
+ self.ShopType = 0
return
def GetLength(self):
@@ -38516,6 +38752,9 @@
length += 1
for i in range(self.AwardCount):
length += self.AwardList[i].GetLength()
+ length += 1
+ length += 2 * self.CTGIDCount
+ length += 2
return length
@@ -38528,6 +38767,10 @@
data = CommFunc.WriteBYTE(data, self.AwardCount)
for i in range(self.AwardCount):
data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.CTGIDCount)
+ for i in range(self.CTGIDCount):
+ data = CommFunc.WriteWORD(data, self.CTGIDList[i])
+ data = CommFunc.WriteWORD(data, self.ShopType)
return data
def OutputString(self):
@@ -38537,7 +38780,10 @@
AwardTypeValue:%d,
RoundMax:%d,
AwardCount:%d,
- AwardList:%s
+ AwardList:%s,
+ CTGIDCount:%d,
+ CTGIDList:%s,
+ ShopType:%d
'''\
%(
self.RoundType,
@@ -38545,7 +38791,10 @@
self.AwardTypeValue,
self.RoundMax,
self.AwardCount,
- "..."
+ "...",
+ self.CTGIDCount,
+ "...",
+ self.ShopType
)
return DumpString
@@ -44048,6 +44297,510 @@
m_NAtagMCCrossActHorsePetTrainInfo=tagMCCrossActHorsePetTrainInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCrossActHorsePetTrainInfo.Head.Cmd,m_NAtagMCCrossActHorsePetTrainInfo.Head.SubCmd))] = m_NAtagMCCrossActHorsePetTrainInfo
+
+
+#------------------------------------------------------
+# 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
#------------------------------------------------------
@@ -56766,6 +57519,7 @@
("DayWinCount", c_ubyte), # 当日已胜利次数
("DayBuyCount", c_ubyte), # 当日已购买次数
("DayItemAddCount", c_ubyte), # 当日物品增加次数
+ ("DayRefreshCount", c_ushort), # 今日已刷新匹配次数
]
def __init__(self):
@@ -56791,6 +57545,7 @@
self.DayWinCount = 0
self.DayBuyCount = 0
self.DayItemAddCount = 0
+ self.DayRefreshCount = 0
return
def GetLength(self):
@@ -56811,7 +57566,8 @@
DayPKCount:%d,
DayWinCount:%d,
DayBuyCount:%d,
- DayItemAddCount:%d
+ DayItemAddCount:%d,
+ DayRefreshCount:%d
'''\
%(
self.Cmd,
@@ -56824,7 +57580,8 @@
self.DayPKCount,
self.DayWinCount,
self.DayBuyCount,
- self.DayItemAddCount
+ self.DayItemAddCount,
+ self.DayRefreshCount
)
return DumpString
--
Gitblit v1.8.0