From 16062d6765654dc6528e4ac2fe287655c0afc424 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 06 六月 2019 16:02:19 +0800
Subject: [PATCH] 7140 【后端】【2.0】新增智能部位保底掉落规则
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 1547 +++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 1,388 insertions(+), 159 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index c27ff9e..2c62392 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -829,7 +829,7 @@
Head = tagHead()
Type = 0 #(BYTE Type)//类型
Count = 0 #(WORD Count)//数量
- UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
+ UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count
data = None
def __init__(self):
@@ -1133,7 +1133,7 @@
FamilyID = 0 #(DWORD FamilyID)//家族ID
ActionType = 0 #(BYTE ActionType)//类型
Count = 0 #(WORD Count)//数量
- FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
+ FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count
data = None
def __init__(self):
@@ -2981,8 +2981,8 @@
IsAlive = 0 #(BYTE IsAlive)// 是否存活
RecordLen = 0 #(WORD RecordLen)// 长度
KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
- RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
- RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
+ RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒
+ RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒
data = None
def __init__(self):
@@ -3371,6 +3371,190 @@
#------------------------------------------------------
+# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo
+
+class tagGCNotifyEquipClassEquip(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("Star", 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.Star = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagGCNotifyEquipClassEquip)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo:
+ ItemID:%d,
+ Star:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Star
+ )
+ return DumpString
+
+
+class tagGCNotifyEquipDetailInfo(Structure):
+ Head = tagHead()
+ ItemGUID = "" #(char ItemGUID[40])
+ ItemID = 0 #(DWORD ItemID)
+ Star = 0 #(BYTE Star)//星级
+ PlusLV = 0 #(WORD PlusLV)//强化等级
+ EvolveLV = 0 #(BYTE EvolveLV)//进化等级
+ WashLV = 0 #(BYTE WashLV)//洗练等级
+ WashValueCount = 0 #(BYTE WashValueCount)
+ WashValueList = list() #(vector<WORD> WashValueList)//洗练值
+ StoneIDCount = 0 #(BYTE StoneIDCount)
+ StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石
+ ClassEquipCount = 0 #(BYTE ClassEquipCount)
+ ClassEquipList = list() #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x05
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.WashValueCount):
+ value,_pos=CommFunc.ReadWORD(_lpData,_pos)
+ self.WashValueList.append(value)
+ self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.StoneIDCount):
+ value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
+ self.StoneIDList.append(value)
+ self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.ClassEquipCount):
+ temClassEquipList = tagGCNotifyEquipClassEquip()
+ _pos = temClassEquipList.ReadData(_lpData, _pos)
+ self.ClassEquipList.append(temClassEquipList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA9
+ self.Head.SubCmd = 0x05
+ self.ItemGUID = ""
+ self.ItemID = 0
+ self.Star = 0
+ self.PlusLV = 0
+ self.EvolveLV = 0
+ self.WashLV = 0
+ self.WashValueCount = 0
+ self.WashValueList = list()
+ self.StoneIDCount = 0
+ self.StoneIDList = list()
+ self.ClassEquipCount = 0
+ self.ClassEquipList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 40
+ length += 4
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ length += 1
+ length += 2 * self.WashValueCount
+ length += 1
+ length += 4 * self.StoneIDCount
+ length += 1
+ for i in range(self.ClassEquipCount):
+ length += self.ClassEquipList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteString(data, 40, self.ItemGUID)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteBYTE(data, self.Star)
+ data = CommFunc.WriteWORD(data, self.PlusLV)
+ data = CommFunc.WriteBYTE(data, self.EvolveLV)
+ data = CommFunc.WriteBYTE(data, self.WashLV)
+ data = CommFunc.WriteBYTE(data, self.WashValueCount)
+ for i in range(self.WashValueCount):
+ data = CommFunc.WriteWORD(data, self.WashValueList[i])
+ data = CommFunc.WriteBYTE(data, self.StoneIDCount)
+ for i in range(self.StoneIDCount):
+ data = CommFunc.WriteDWORD(data, self.StoneIDList[i])
+ data = CommFunc.WriteBYTE(data, self.ClassEquipCount)
+ for i in range(self.ClassEquipCount):
+ data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ItemGUID:%s,
+ ItemID:%d,
+ Star:%d,
+ PlusLV:%d,
+ EvolveLV:%d,
+ WashLV:%d,
+ WashValueCount:%d,
+ WashValueList:%s,
+ StoneIDCount:%d,
+ StoneIDList:%s,
+ ClassEquipCount:%d,
+ ClassEquipList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ItemGUID,
+ self.ItemID,
+ self.Star,
+ self.PlusLV,
+ self.EvolveLV,
+ self.WashLV,
+ self.WashValueCount,
+ "...",
+ self.StoneIDCount,
+ "...",
+ self.ClassEquipCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo
+
+
+#------------------------------------------------------
#A9 03 开服活动奖励数量刷新#tagGCOpenServerCampaignAwardCount
class tagGCOpenServerCampaignAwardCount(Structure):
@@ -3451,7 +3635,7 @@
OrderIndex = 0 #(DWORD OrderIndex)//名次索引,0代表第一名
ID = 0 #(DWORD ID)
ID2 = 0 #(DWORD ID2)
- Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
+ Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字
Name2 = "" #(char Name2[33])//名字2
Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
Value1 = 0 #(DWORD Value1)//排序依赖的值,比如,等级
@@ -3763,7 +3947,7 @@
Count = 0 #(DWORD Count)//数量
IsBind = 0 #(BYTE IsBind)//是否绑定
UserDataLen = 0 #(DWORD UserDataLen)
- UserData = "" #(String UserData)//自定义数据
+ UserData = "" #(String UserData)//自定义数据
data = None
def __init__(self):
@@ -4004,7 +4188,7 @@
Name = "" #(char Name[33])
LV = 0 #(DWORD LV)//等级
Job = 0 #(BYTE Job)
- RealmLV = 0 #(WORD RealmLV)//境界
+ RealmLV = 0 #(WORD RealmLV)//境界
data = None
def __init__(self):
@@ -5445,7 +5629,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("StartTime", c_int),
+ ("StartTime", c_int),
]
def __init__(self):
@@ -5554,7 +5738,7 @@
class tagFamilyArrestOverStateInfo(Structure):
Head = tagHead()
Count = 0 #(WORD Count)
- ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
+ ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count
data = None
def __init__(self):
@@ -5704,7 +5888,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("GroupType", c_ubyte), # 分组 1 最近联系人 2 好友 3 仇人 4 黑名单
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
("SortValue", c_int), #最近联系人和仇人按时间排序
]
@@ -5870,7 +6054,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("GroupType", c_ubyte), # 分组 1 最近联系人 2 好友 3 仇人 4 黑名单
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
]
def __init__(self):
@@ -6065,8 +6249,8 @@
class tagGCGroupPlayer(Structure):
_pack_ = 1
_fields_ = [
- ("PlayerID", c_int),
- ("SortValue", c_int),
+ ("PlayerID", c_int),
+ ("SortValue", c_int),
]
def __init__(self):
@@ -6246,7 +6430,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
("OnlineType", c_ubyte), #0不在线 1在线 2脱机在线
]
@@ -6302,9 +6486,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PlayerID", c_int),
- ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
- ("Value", c_int),
+ ("PlayerID", c_int),
+ ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__
+ ("Value", c_int),
]
def __init__(self):
@@ -6359,7 +6543,7 @@
class tagGCVoiceChat(Structure):
Head = tagHead()
- ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
+ ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域
SrcNameLen = 0 #(BYTE SrcNameLen)
SrcName = "" #(String SrcName)//size = SrcNameLen
PlayerID = 0 #(DWORD PlayerID)
@@ -7875,7 +8059,7 @@
ItemGUID = "" #(char ItemGUID[40])
AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
AddTime = "" #(char AddTime[19])//上架时间
- BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
+ BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID
BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格
BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
data = None
@@ -8819,7 +9003,7 @@
class tagGCTeamMemPrepareState(Structure):
_pack_ = 1
_fields_ = [
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
("PrepareState", c_ubyte), # 状态,0-未准备,1-已准备,2-拒绝
]
@@ -9285,9 +9469,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PlayerID", c_int),
+ ("PlayerID", c_int),
("RefreshType", c_ubyte), #刷新类型,同0418属性类型
- ("Value", c_int),
+ ("Value", c_int),
]
def __init__(self):
@@ -9557,8 +9741,8 @@
class tagGCCrossRealmPKBillboardInfo(Structure):
Head = tagHead()
- ZoneID = 0 #(BYTE ZoneID)// 赛区ID
- SeasonID = 0 #(BYTE SeasonID)// 赛季ID
+ ZoneID = 0 #(BYTE ZoneID)// 赛区ID
+ SeasonID = 0 #(BYTE SeasonID)// 赛季ID
Count = 0 #(WORD Count)
PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList)
data = None
@@ -10335,7 +10519,7 @@
class tagMCCoinToGoldCount(Structure):
_pack_ = 1
_fields_ = [
- ("RecordID", c_ubyte),
+ ("RecordID", c_ubyte),
("TodayPayCount", c_ushort), # 今日已购买次数
("TotalPayCount", c_int), # 累计总购买次数
]
@@ -10571,7 +10755,7 @@
BackpackLV = 0 #(BYTE BackpackLV)//背包等级
WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级
TeamID = 0 #(DWORD TeamID)//队伍ID
- UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
+ UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType
UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票
AttackMode = 0 #(BYTE AttackMode)//攻击模式
LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间
@@ -11564,7 +11748,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MapID", c_ushort),
+ ("MapID", c_ushort),
("FuncLineID", c_ushort), #功能线路ID
]
@@ -11620,7 +11804,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MapID", c_int),
+ ("MapID", c_int),
("FuncLineID", c_ushort), #功能线路ID
]
@@ -11728,7 +11912,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Mode", c_ubyte),
+ ("Mode", c_ubyte),
]
def __init__(self):
@@ -12025,7 +12209,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("LockState", c_ubyte),
+ ("LockState", c_ubyte),
]
def __init__(self):
@@ -12389,6 +12573,8 @@
_fields_ = [
("ItemID", c_int), #果实物品ID
("EatCnt", c_ushort), #已使用个数
+ ("ItemAddCnt", c_int), #增幅丹增加上限
+ ("ItemBreakCnt", c_int), #增幅丹突破次数
]
def __init__(self):
@@ -12403,6 +12589,8 @@
def Clear(self):
self.ItemID = 0
self.EatCnt = 0
+ self.ItemAddCnt = 0
+ self.ItemBreakCnt = 0
return
def GetLength(self):
@@ -12414,11 +12602,15 @@
def OutputString(self):
DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList:
ItemID:%d,
- EatCnt:%d
+ EatCnt:%d,
+ ItemAddCnt:%d,
+ ItemBreakCnt:%d
'''\
%(
self.ItemID,
- self.EatCnt
+ self.EatCnt,
+ self.ItemAddCnt,
+ self.ItemBreakCnt
)
return DumpString
@@ -13019,6 +13211,8 @@
_fields_ = [
("ActionID", c_int), # ID
("DayFinishCnt", c_ushort), # 今日已完成次数
+ ("DayBuyTimes", c_ubyte), # 今日购买次数
+ ("DayItemTimes", c_ubyte), # 今日物品增加次数
("WeekFinishCnt", c_int), # 本周已完成次数
]
@@ -13034,6 +13228,8 @@
def Clear(self):
self.ActionID = 0
self.DayFinishCnt = 0
+ self.DayBuyTimes = 0
+ self.DayItemTimes = 0
self.WeekFinishCnt = 0
return
@@ -13047,11 +13243,15 @@
DumpString = '''// A3 15 日常活动次数通知 //tagMCDailyActionCnt:
ActionID:%d,
DayFinishCnt:%d,
+ DayBuyTimes:%d,
+ DayItemTimes:%d,
WeekFinishCnt:%d
'''\
%(
self.ActionID,
self.DayFinishCnt,
+ self.DayBuyTimes,
+ self.DayItemTimes,
self.WeekFinishCnt
)
return DumpString
@@ -13377,7 +13577,7 @@
Seting = 0 #(DWORD Seting)// 操作数据记录
DecomposeCnt = 0 #(BYTE DecomposeCnt)// 分解件数进度
GetItemLen = 0 #(WORD GetItemLen)
- GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
+ GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...]
data = None
def __init__(self):
@@ -13465,8 +13665,8 @@
class tagMCEquipPartStar(Structure):
_pack_ = 1
_fields_ = [
- ("EquipPackIndex", c_ushort),
- ("Star", c_ubyte),
+ ("EquipPackIndex", c_ushort),
+ ("Star", c_ubyte),
]
def __init__(self):
@@ -13610,7 +13810,7 @@
class tagMCEquipPartXLAttr(Structure):
- EquipPlace = 0 #(BYTE EquipPlace)// 装备位
+ EquipPlace = 0 #(BYTE EquipPlace)// 装备位
XLAttrLV = 0 #(BYTE XLAttrLV)// 洗练等级
XLAttrCnt = 0 #(BYTE XLAttrCnt)// 属性条数
XLAttrList = list() #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增
@@ -13737,6 +13937,254 @@
m_NAtagMCEquipPartXLAttrInfo=tagMCEquipPartXLAttrInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartXLAttrInfo.Head.Cmd,m_NAtagMCEquipPartXLAttrInfo.Head.SubCmd))] = m_NAtagMCEquipPartXLAttrInfo
+
+
+#------------------------------------------------------
+# A3 07 缥缈奇遇信息 #tagMCFairyAdventuresInfo
+
+class tagMCFairyAdventuresData(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EventID", c_ubyte),
+ ("Gear", c_ubyte), #第几档
+ ("Condition", 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.EventID = 0
+ self.Gear = 0
+ self.Condition = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFairyAdventuresData)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 07 缥缈奇遇信息 //tagMCFairyAdventuresInfo:
+ EventID:%d,
+ Gear:%d,
+ Condition:%d
+ '''\
+ %(
+ self.EventID,
+ self.Gear,
+ self.Condition
+ )
+ return DumpString
+
+
+class tagMCFairyAdventuresInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)
+ InfoList = list() #(vector<tagMCFairyAdventuresData> InfoList)// 信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x07
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagMCFairyAdventuresData()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x07
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFairyAdventuresInfo=tagMCFairyAdventuresInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyAdventuresInfo.Head.Cmd,m_NAtagMCFairyAdventuresInfo.Head.SubCmd))] = m_NAtagMCFairyAdventuresInfo
+
+
+#------------------------------------------------------
+# A3 06 缥缈仙域信息 #tagMCFairyDomainInfo
+
+class tagMCFairyDomainEvent(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("EventID", c_ushort), #事件ID
+ ("EventState", c_ubyte), #事件状态 1-可拜访 2-拜访中 3-已拜访
+ ]
+
+ 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.EventID = 0
+ self.EventState = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFairyDomainEvent)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 06 缥缈仙域信息 //tagMCFairyDomainInfo:
+ EventID:%d,
+ EventState:%d
+ '''\
+ %(
+ self.EventID,
+ self.EventState
+ )
+ return DumpString
+
+
+class tagMCFairyDomainInfo(Structure):
+ Head = tagHead()
+ IsAll = 0 #(BYTE IsAll)//是否全部
+ State = 0 #(BYTE State)//0-未寻访 1-寻访中 2-任务标记可寻访
+ VisitCnt = 0 #(DWORD VisitCnt)//寻访次数
+ Energy = 0 #(WORD Energy)//体力
+ Count = 0 #(BYTE Count)// 信息个数
+ InfoList = list() #(vector<tagMCFairyDomainEvent> InfoList)// 信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x06
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.VisitCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Energy,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temInfoList = tagMCFairyDomainEvent()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x06
+ self.IsAll = 0
+ self.State = 0
+ self.VisitCnt = 0
+ self.Energy = 0
+ self.Count = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 1
+ length += 4
+ length += 2
+ length += 1
+ for i in range(self.Count):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IsAll)
+ data = CommFunc.WriteBYTE(data, self.State)
+ data = CommFunc.WriteDWORD(data, self.VisitCnt)
+ data = CommFunc.WriteWORD(data, self.Energy)
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ IsAll:%d,
+ State:%d,
+ VisitCnt:%d,
+ Energy:%d,
+ Count:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.IsAll,
+ self.State,
+ self.VisitCnt,
+ self.Energy,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFairyDomainInfo=tagMCFairyDomainInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFairyDomainInfo.Head.Cmd,m_NAtagMCFairyDomainInfo.Head.SubCmd))] = m_NAtagMCFairyDomainInfo
#------------------------------------------------------
@@ -13898,7 +14346,7 @@
class tagMCFBEncourageInfo(Structure):
Head = tagHead()
- Cnt = 0 #(BYTE Cnt)//
+ Cnt = 0 #(BYTE Cnt)//
InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息
data = None
@@ -14688,7 +15136,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Cnt", c_int),
+ ("Cnt", c_int),
]
def __init__(self):
@@ -14738,9 +15186,9 @@
class tagMCMagicWeaponInfo(Structure):
_pack_ = 1
_fields_ = [
- ("MWID", c_int),
- ("LV", c_ubyte),
- ("Exp", c_int),
+ ("MWID", c_int),
+ ("LV", c_ubyte),
+ ("Exp", c_int),
("FBPassLV", c_ubyte), #副本关卡
("IsWear", c_ubyte), #是否佩戴(仅适用王者法宝)
]
@@ -14978,11 +15426,11 @@
class tagMCEquipPartPlusLV(Structure):
_pack_ = 1
_fields_ = [
- ("PackType", c_ubyte),
- ("EquipIndex", c_ubyte),
- ("EquipPartStarLV", c_ushort),
- ("Proficiency", c_int),
- ("EvolveLV", c_ubyte),
+ ("PackType", c_ubyte),
+ ("EquipIndex", c_ubyte),
+ ("EquipPartStarLV", c_ushort),
+ ("Proficiency", c_int),
+ ("EvolveLV", c_ubyte),
]
def __init__(self):
@@ -15272,6 +15720,114 @@
#------------------------------------------------------
+# A3 25 NPC已攻击次数信息 #tagMCNPCAttackCountInfo
+
+class tagMCNPCAttackCount(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("NPCID", c_int),
+ ("AttackCount", 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.NPCID = 0
+ self.AttackCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCNPCAttackCount)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 25 NPC已攻击次数信息 //tagMCNPCAttackCountInfo:
+ NPCID:%d,
+ AttackCount:%d
+ '''\
+ %(
+ self.NPCID,
+ self.AttackCount
+ )
+ return DumpString
+
+
+class tagMCNPCAttackCountInfo(Structure):
+ Head = tagHead()
+ Count = 0 #(BYTE Count)
+ NPCAttackCountList = list() #(vector<tagMCNPCAttackCount> NPCAttackCountList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x25
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temNPCAttackCountList = tagMCNPCAttackCount()
+ _pos = temNPCAttackCountList.ReadData(_lpData, _pos)
+ self.NPCAttackCountList.append(temNPCAttackCountList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x25
+ self.Count = 0
+ self.NPCAttackCountList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Count):
+ length += self.NPCAttackCountList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Count)
+ for i in range(self.Count):
+ data = CommFunc.WriteString(data, self.NPCAttackCountList[i].GetLength(), self.NPCAttackCountList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Count:%d,
+ NPCAttackCountList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCNPCAttackCountInfo=tagMCNPCAttackCountInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCAttackCountInfo.Head.Cmd,m_NAtagMCNPCAttackCountInfo.Head.SubCmd))] = m_NAtagMCNPCAttackCountInfo
+
+
+#------------------------------------------------------
# A3 26 NPCID已采集次数信息 #tagMCNPCIDCollectionCntInfo
class tagMCNPCIDCollectionCnt(Structure):
@@ -15461,7 +16017,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("Record", c_ubyte), #0-未领取 1-已领取
+ ("Record", c_ubyte), #0-未领取 1-已领取
]
def __init__(self):
@@ -15714,8 +16270,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PrizeItem", c_int),
- ("ItemCount", c_ubyte),
+ ("PrizeItem", c_int),
+ ("ItemCount", c_ubyte),
]
def __init__(self):
@@ -15761,7 +16317,7 @@
class tagMCPlayerOnlinePrizeInfo(Structure):
Head = tagHead()
RemaindTime = 0 #(DWORD RemaindTime)//产生奖励剩余时间
- HasPrize = 0 #(BYTE HasPrize)//是否可以领取
+ HasPrize = 0 #(BYTE HasPrize)//是否可以领取
PrizeType = 0 #(BYTE PrizeType)//在线奖励类型
PrizeCnt = 0 #(BYTE PrizeCnt)//在线奖励类型
PrizeInfo = list() #(vector<tagMCOnlinePrizeItem> PrizeInfo)//在线奖励类型
@@ -15904,20 +16460,16 @@
#------------------------------------------------------
# A3 BF 通知客户端炼丹炉信息 #tagMCPlayerStoveMsg
-class tagMCPlayerStoveMsg(Structure):
+class tagMCPlayerStoveInfo(Structure):
_pack_ = 1
_fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("StoveLV", c_ubyte), # 炼丹炉等级
- ("StoveExp", c_int), # 炼丹炉经验
- ("ItemID", c_int), # 合成物品id
+ ("AlchemyID", c_int), # 丹 ID
+ ("StartTime", c_int), # 开始炼的时间
+ ("AlchemyTimes", c_ushort), # 炼的次数
]
def __init__(self):
self.Clear()
- self.Cmd = 0xA3
- self.SubCmd = 0xBF
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -15926,39 +16478,123 @@
return _pos + self.GetLength()
def Clear(self):
- self.Cmd = 0xA3
- self.SubCmd = 0xBF
- self.StoveLV = 0
- self.StoveExp = 0
- self.ItemID = 0
+ self.AlchemyID = 0
+ self.StartTime = 0
+ self.AlchemyTimes = 0
return
def GetLength(self):
- return sizeof(tagMCPlayerStoveMsg)
+ return sizeof(tagMCPlayerStoveInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A3 BF 通知客户端炼丹炉信息 //tagMCPlayerStoveMsg:
- Cmd:%s,
- SubCmd:%s,
- StoveLV:%d,
- StoveExp:%d,
- ItemID:%d
+ AlchemyID:%d,
+ StartTime:%d,
+ AlchemyTimes:%d
'''\
%(
- self.Cmd,
- self.SubCmd,
+ self.AlchemyID,
+ self.StartTime,
+ self.AlchemyTimes
+ )
+ return DumpString
+
+
+class tagMCPlayerStoveMsg(Structure):
+ Head = tagHead()
+ StoveLV = 0 #(BYTE StoveLV)// 炼丹炉等级
+ StoveExp = 0 #(DWORD StoveExp)// 炼丹炉经验
+ ItemID = 0 #(DWORD ItemID)// 合成物品id
+ ItemCnt = 0 #(BYTE ItemCnt)// 丹药数量
+ StoveCnt = 0 #(WORD StoveCnt)// 丹药数量
+ InfoList = list() #(vector<tagMCPlayerStoveInfo> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xBF
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ for i in range(self.StoveCnt):
+ temInfoList = tagMCPlayerStoveInfo()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0xBF
+ self.StoveLV = 0
+ self.StoveExp = 0
+ self.ItemID = 0
+ self.ItemCnt = 0
+ self.StoveCnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 4
+ length += 4
+ length += 1
+ length += 2
+ for i in range(self.StoveCnt):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.StoveLV)
+ data = CommFunc.WriteDWORD(data, self.StoveExp)
+ data = CommFunc.WriteDWORD(data, self.ItemID)
+ data = CommFunc.WriteBYTE(data, self.ItemCnt)
+ data = CommFunc.WriteWORD(data, self.StoveCnt)
+ for i in range(self.StoveCnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StoveLV:%d,
+ StoveExp:%d,
+ ItemID:%d,
+ ItemCnt:%d,
+ StoveCnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
self.StoveLV,
self.StoveExp,
- self.ItemID
+ self.ItemID,
+ self.ItemCnt,
+ self.StoveCnt,
+ "..."
)
return DumpString
m_NAtagMCPlayerStoveMsg=tagMCPlayerStoveMsg()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Cmd,m_NAtagMCPlayerStoveMsg.SubCmd))] = m_NAtagMCPlayerStoveMsg
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerStoveMsg.Head.Cmd,m_NAtagMCPlayerStoveMsg.Head.SubCmd))] = m_NAtagMCPlayerStoveMsg
#------------------------------------------------------
@@ -16026,6 +16662,8 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("BeginTime", c_int), #开始计时时间
+ ("BuffTime", c_int), #buff剩余时间
+ ("BuffAddRate", c_int), #buff加成万分率
("CurExp", c_int), #当前总经验
("CurExpPoint", c_int), #当前总经验点
]
@@ -16045,6 +16683,8 @@
self.Cmd = 0xA3
self.SubCmd = 0x27
self.BeginTime = 0
+ self.BuffTime = 0
+ self.BuffAddRate = 0
self.CurExp = 0
self.CurExpPoint = 0
return
@@ -16060,6 +16700,8 @@
Cmd:%s,
SubCmd:%s,
BeginTime:%d,
+ BuffTime:%d,
+ BuffAddRate:%d,
CurExp:%d,
CurExpPoint:%d
'''\
@@ -16067,6 +16709,8 @@
self.Cmd,
self.SubCmd,
self.BeginTime,
+ self.BuffTime,
+ self.BuffAddRate,
self.CurExp,
self.CurExpPoint
)
@@ -16328,10 +16972,182 @@
#------------------------------------------------------
+# A3 09 技能五行专精信息 #tagMCSkillElementInfo
+
+class tagMCSkillElementActiveData(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("SkillID", c_int), # 技能ID
+ ("ActiveLV", 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.SkillID = 0
+ self.ActiveLV = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSkillElementActiveData)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 09 技能五行专精信息 //tagMCSkillElementInfo:
+ SkillID:%d,
+ ActiveLV:%d
+ '''\
+ %(
+ self.SkillID,
+ self.ActiveLV
+ )
+ return DumpString
+
+
+class tagMCSkillElementData(Structure):
+ MainSkillID = 0 #(DWORD MainSkillID)// 主技能ID
+ ElementSkillID = 0 #(DWORD ElementSkillID)// 选择的专精技能ID
+ SkillCnt = 0 #(BYTE SkillCnt)// 数量
+ ActiveSkill = list() #(vector<tagMCSkillElementActiveData> ActiveSkill)// 激活的技能ID
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.MainSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.ElementSkillID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.SkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SkillCnt):
+ temActiveSkill = tagMCSkillElementActiveData()
+ _pos = temActiveSkill.ReadData(_lpData, _pos)
+ self.ActiveSkill.append(temActiveSkill)
+ return _pos
+
+ def Clear(self):
+ self.MainSkillID = 0
+ self.ElementSkillID = 0
+ self.SkillCnt = 0
+ self.ActiveSkill = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 4
+ length += 1
+ for i in range(self.SkillCnt):
+ length += self.ActiveSkill[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.MainSkillID)
+ data = CommFunc.WriteDWORD(data, self.ElementSkillID)
+ data = CommFunc.WriteBYTE(data, self.SkillCnt)
+ for i in range(self.SkillCnt):
+ data = CommFunc.WriteString(data, self.ActiveSkill[i].GetLength(), self.ActiveSkill[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ MainSkillID:%d,
+ ElementSkillID:%d,
+ SkillCnt:%d,
+ ActiveSkill:%s
+ '''\
+ %(
+ self.MainSkillID,
+ self.ElementSkillID,
+ self.SkillCnt,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCSkillElementInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)// 数量
+ InfoList = list() #(vector<tagMCSkillElementData> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x09
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagMCSkillElementData()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA3
+ self.Head.SubCmd = 0x09
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCSkillElementInfo=tagMCSkillElementInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkillElementInfo.Head.Cmd,m_NAtagMCSkillElementInfo.Head.SubCmd))] = m_NAtagMCSkillElementInfo
+
+
+#------------------------------------------------------
# A3 BC 通知装备位孔位宝石ID #tagMCStoneInfo
class tagMCStoneMsg(Structure):
- EquipPlace = 0 #(BYTE EquipPlace)// 装备位
+ EquipPlace = 0 #(BYTE EquipPlace)// 装备位
MaxStoneCount = 0 #(BYTE MaxStoneCount)// 最大孔数
StoneInfo = list() #(vector<DWORD> StoneInfo)// 孔内宝石信息
StoneBind = list() #(vector<BYTE> StoneBind)// 孔内宝石是否绑定
@@ -17319,8 +18135,8 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("PassLV", c_int),
- ("YesterDayPassLV", c_int),
+ ("PassLV", c_int),
+ ("YesterDayPassLV", c_int),
]
def __init__(self):
@@ -18302,7 +19118,7 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("Exp", c_int), # 当前VIP等级经验
- ("VIPLV", c_int), #vip等级
+ ("VIPLV", c_int), #vip等级
]
def __init__(self):
@@ -18623,16 +19439,135 @@
#------------------------------------------------------
+# A7 18 采集奖励物品通知 #tagMCCollectAwardItemInfo
+
+class tagMCCollectAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("Count", c_ubyte),
+ ("IsAuctionItem", 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.IsAuctionItem = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCCollectAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A7 18 采集奖励物品通知 //tagMCCollectAwardItemInfo:
+ ItemID:%d,
+ Count:%d,
+ IsAuctionItem:%d
+ '''\
+ %(
+ self.ItemID,
+ self.Count,
+ self.IsAuctionItem
+ )
+ return DumpString
+
+
+class tagMCCollectAwardItemInfo(Structure):
+ Head = tagHead()
+ CollectNPCID = 0 #(DWORD CollectNPCID)//采集的NPCID
+ Count = 0 #(BYTE Count)
+ AwardItemList = list() #(vector<tagMCCollectAwardItem> AwardItemList)//奖励物品信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x18
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.CollectNPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCCollectAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x18
+ self.CollectNPCID = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.CollectNPCID)
+ 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 = '''
+ Head:%s,
+ CollectNPCID:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.CollectNPCID,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
+
+
+#------------------------------------------------------
# A7 13 动态障碍物状态 #tagMCDynamicBarrierState
class tagMCDynamicBarrier(Structure):
_pack_ = 1
_fields_ = [
- ("APosX", c_ushort),
- ("APosY", c_ushort),
- ("BPosX", c_ushort),
- ("BPosY", c_ushort),
- ("Angle", c_ushort),
+ ("APosX", c_ushort),
+ ("APosY", c_ushort),
+ ("BPosX", c_ushort),
+ ("BPosY", c_ushort),
+ ("Angle", c_ushort),
]
def __init__(self):
@@ -19235,8 +20170,8 @@
class tagMCNPCCntInfo(Structure):
_pack_ = 1
_fields_ = [
- ("NPCID", c_int),
- ("Cnt", c_int),
+ ("NPCID", c_int),
+ ("Cnt", c_int),
]
def __init__(self):
@@ -19410,13 +20345,13 @@
class tagMCNPCInfo(Structure):
_pack_ = 1
_fields_ = [
- ("ObjID", c_int),
- ("NPCID", c_int),
- ("NPCHP", c_int),
- ("MaxHP", c_int),
+ ("ObjID", c_int),
+ ("NPCID", c_int),
+ ("NPCHP", c_int),
+ ("MaxHP", c_int),
("IsActive", c_ubyte), #这个NPC是否活着
- ("PosX", c_ushort),
- ("PosY", c_ushort),
+ ("PosX", c_ushort),
+ ("PosY", c_ushort),
("RefreshSecond", c_int), # 剩余多少秒刷新
]
@@ -19558,9 +20493,9 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("NPCID", c_int),
- ("PosX", c_ushort),
- ("PosY", c_ushort),
+ ("NPCID", c_int),
+ ("PosX", c_ushort),
+ ("PosY", c_ushort),
]
def __init__(self):
@@ -19618,7 +20553,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("NPCID", c_int),
+ ("NPCID", c_int),
]
def __init__(self):
@@ -19660,6 +20595,84 @@
m_NAtagMCNPCShow=tagMCNPCShow()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCShow.Cmd,m_NAtagMCNPCShow.SubCmd))] = m_NAtagMCNPCShow
+
+
+#------------------------------------------------------
+# A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult
+
+class tagSCPlayerEquipCacheResult(Structure):
+ Head = tagHead()
+ PlayerID = 0 #(DWORD PlayerID)//玩家ID
+ EquipClassLV = 0 #(BYTE EquipClassLV)
+ ItemDataSize = 0 #(WORD ItemDataSize)
+ ItemData = "" #(String ItemData)//物品记录
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x19
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.EquipClassLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.ItemDataSize,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xA7
+ self.Head.SubCmd = 0x19
+ self.PlayerID = 0
+ self.EquipClassLV = 0
+ self.ItemDataSize = 0
+ self.ItemData = ""
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ length += 2
+ length += len(self.ItemData)
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.PlayerID)
+ data = CommFunc.WriteBYTE(data, self.EquipClassLV)
+ data = CommFunc.WriteWORD(data, self.ItemDataSize)
+ data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ PlayerID:%d,
+ EquipClassLV:%d,
+ ItemDataSize:%d,
+ ItemData:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.PlayerID,
+ self.EquipClassLV,
+ self.ItemDataSize,
+ self.ItemData
+ )
+ return DumpString
+
+
+m_NAtagSCPlayerEquipCacheResult=tagSCPlayerEquipCacheResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCPlayerEquipCacheResult.Head.Cmd,m_NAtagSCPlayerEquipCacheResult.Head.SubCmd))] = m_NAtagSCPlayerEquipCacheResult
#------------------------------------------------------
@@ -19774,9 +20787,9 @@
class tagMCRunTaskAwardRecord(Structure):
_pack_ = 1
_fields_ = [
- ("Type", c_ubyte),
- ("Num", c_int),
- ("AwardState", c_ubyte),
+ ("Type", c_ubyte),
+ ("Num", c_int),
+ ("AwardState", c_ubyte),
]
def __init__(self):
@@ -19891,7 +20904,7 @@
ItemDataSize = 0 #(DWORD ItemDataSize)
ItemData = "" #(String ItemData)//物品记录
PlusDataSize = 0 #(DWORD PlusDataSize)
- PlusData = "" #(String PlusData)//扩展记录
+ PlusData = "" #(String PlusData)//扩展记录
data = None
def __init__(self):
@@ -19987,7 +21000,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("GuideID", c_ushort),
+ ("GuideID", c_ushort),
]
def __init__(self):
@@ -20037,8 +21050,8 @@
class tagRefreshType(Structure):
_pack_ = 1
_fields_ = [
- ("RefreshType", c_ubyte),
- ("Value", c_int),
+ ("RefreshType", c_ubyte),
+ ("Value", c_int),
]
def __init__(self):
@@ -20226,7 +21239,7 @@
class tagMCItemDayUseCnt(Structure):
_pack_ = 1
_fields_ = [
- ("ItemID", c_int),
+ ("ItemID", c_int),
("UseCnt", c_ushort), # 今日已使用次数
]
@@ -20336,7 +21349,7 @@
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
- ("MakeType", c_ubyte), #类型 TMakeItemType
+ ("MakeType", c_ubyte), #类型 TMakeItemType
("Result", c_ubyte), #是否成功
("MakeItemID", c_int), #合成的物品ID
]
@@ -27369,6 +28382,54 @@
#------------------------------------------------------
+#B1 08 开始印记流失时间 #tagMCYinjiStartTime
+
+class tagMCYinjiStartTime(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB1
+ self.SubCmd = 0x08
+ 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 = 0xB1
+ self.SubCmd = 0x08
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCYinjiStartTime)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''//B1 08 开始印记流失时间 //tagMCYinjiStartTime:
+ Cmd:%s,
+ SubCmd:%s
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd
+ )
+ return DumpString
+
+
+m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
+
+
+#------------------------------------------------------
# B2 08 获得仙缘币信息 #tagMCAddXianyuanCoinMsg
class tagMCAddXianyuanCoinMsg(Structure):
@@ -27670,6 +28731,118 @@
m_NAtagMCFamilyWarBillboard=tagMCFamilyWarBillboard()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyWarBillboard.Head.Cmd,m_NAtagMCFamilyWarBillboard.Head.SubCmd))] = m_NAtagMCFamilyWarBillboard
+
+
+#------------------------------------------------------
+# B2 15 副本买buff信息通知 #tagMCFBBuyBuffInfo
+
+class tagMCFBBuyBuffTime(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("MapID", c_int),
+ ("MoneyCnt", c_ushort),
+ ("BuyTime", 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.MapID = 0
+ self.MoneyCnt = 0
+ self.BuyTime = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFBBuyBuffTime)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 15 副本买buff信息通知 //tagMCFBBuyBuffInfo:
+ MapID:%d,
+ MoneyCnt:%d,
+ BuyTime:%d
+ '''\
+ %(
+ self.MapID,
+ self.MoneyCnt,
+ self.BuyTime
+ )
+ return DumpString
+
+
+class tagMCFBBuyBuffInfo(Structure):
+ Head = tagHead()
+ Cnt = 0 #(BYTE Cnt)
+ InfoList = list() #(vector<tagMCFBBuyBuffTime> InfoList)
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x15
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Cnt):
+ temInfoList = tagMCFBBuyBuffTime()
+ _pos = temInfoList.ReadData(_lpData, _pos)
+ self.InfoList.append(temInfoList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xB2
+ self.Head.SubCmd = 0x15
+ self.Cnt = 0
+ self.InfoList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ for i in range(self.Cnt):
+ length += self.InfoList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.Cnt)
+ for i in range(self.Cnt):
+ data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ Cnt:%d,
+ InfoList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.Cnt,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFBBuyBuffInfo=tagMCFBBuyBuffInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBBuyBuffInfo.Head.Cmd,m_NAtagMCFBBuyBuffInfo.Head.SubCmd))] = m_NAtagMCFBBuyBuffInfo
#------------------------------------------------------
@@ -28511,6 +29684,118 @@
#------------------------------------------------------
+# B2 13 天星塔通关层数 #tagMCSkyTowerInfo
+
+class tagMCSkyTowerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("Floor", c_int), # 已通关层
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x13
+ 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 = 0xB2
+ self.SubCmd = 0x13
+ self.Floor = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCSkyTowerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ Floor:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.Floor
+ )
+ return DumpString
+
+
+m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
+
+
+#------------------------------------------------------
+# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult
+
+class tagMCStartCustomSceneResult(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("MapID", c_int),
+ ("FuncLineID", c_ushort),
+ ("Result", c_ubyte), #是否允许
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xB2
+ self.SubCmd = 0x16
+ 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 = 0xB2
+ self.SubCmd = 0x16
+ self.MapID = 0
+ self.FuncLineID = 0
+ self.Result = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCStartCustomSceneResult)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult:
+ Cmd:%s,
+ SubCmd:%s,
+ MapID:%d,
+ FuncLineID:%d,
+ Result:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.MapID,
+ self.FuncLineID,
+ self.Result
+ )
+ return DumpString
+
+
+m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult
+
+
+#------------------------------------------------------
#B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting
class tagMCPushNotificationsSetting(Structure):
@@ -28631,62 +29916,6 @@
m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt
-
-
-#------------------------------------------------------
-# B2 13 诛仙塔通关层数 #tagMCZhuXianTowerInfo
-
-class tagMCZhuXianTowerInfo(Structure):
- _pack_ = 1
- _fields_ = [
- ("Cmd", c_ubyte),
- ("SubCmd", c_ubyte),
- ("Floor", c_int), # 已通关层
- ("LastFloor", c_int), # 上次挑战层
- ]
-
- def __init__(self):
- self.Clear()
- self.Cmd = 0xB2
- self.SubCmd = 0x13
- 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 = 0xB2
- self.SubCmd = 0x13
- self.Floor = 0
- self.LastFloor = 0
- return
-
- def GetLength(self):
- return sizeof(tagMCZhuXianTowerInfo)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// B2 13 诛仙塔通关层数 //tagMCZhuXianTowerInfo:
- Cmd:%s,
- SubCmd:%s,
- Floor:%d,
- LastFloor:%d
- '''\
- %(
- self.Cmd,
- self.SubCmd,
- self.Floor,
- self.LastFloor
- )
- return DumpString
-
-
-m_NAtagMCZhuXianTowerInfo=tagMCZhuXianTowerInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianTowerInfo.Cmd,m_NAtagMCZhuXianTowerInfo.SubCmd))] = m_NAtagMCZhuXianTowerInfo
#------------------------------------------------------
--
Gitblit v1.8.0