From 95c731d5e1a9aadb610ac9f6ecbc6b74b919ab60 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期六, 28 二月 2026 17:05:35 +0800
Subject: [PATCH] 417 【武将】吞噬返还优化(固定额外返还一个本体遣散道具;优化吞噬星级溢出逻辑;)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 411 ++++++++++++++++++++++++++++------------------------------
1 files changed, 196 insertions(+), 215 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index f22632b..22c353f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -7467,6 +7467,7 @@
LuckValue = 0 #(WORD LuckValue)//当前幸运值
TreasureCount = 0 #(DWORD TreasureCount)//已寻宝总次数
TreasureCountToday = 0 #(DWORD TreasureCountToday)//今日已寻宝总次数
+ TreasureCountTodayGold = 0 #(DWORD TreasureCountTodayGold)//今日消耗货币已寻宝总次数
FreeCountToday = 0 #(WORD FreeCountToday)//今日已免费寻宝次数
TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
GridLimitCnt = 0 #(BYTE GridLimitCnt)
@@ -7485,6 +7486,7 @@
self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.TreasureCountToday,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TreasureCountTodayGold,_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)
@@ -7504,6 +7506,7 @@
self.LuckValue = 0
self.TreasureCount = 0
self.TreasureCountToday = 0
+ self.TreasureCountTodayGold = 0
self.FreeCountToday = 0
self.TreasureCntAward = 0
self.GridLimitCnt = 0
@@ -7516,6 +7519,7 @@
length = 0
length += 1
length += 2
+ length += 4
length += 4
length += 4
length += 2
@@ -7535,6 +7539,7 @@
data = CommFunc.WriteWORD(data, self.LuckValue)
data = CommFunc.WriteDWORD(data, self.TreasureCount)
data = CommFunc.WriteDWORD(data, self.TreasureCountToday)
+ data = CommFunc.WriteDWORD(data, self.TreasureCountTodayGold)
data = CommFunc.WriteWORD(data, self.FreeCountToday)
data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
@@ -7551,6 +7556,7 @@
LuckValue:%d,
TreasureCount:%d,
TreasureCountToday:%d,
+ TreasureCountTodayGold:%d,
FreeCountToday:%d,
TreasureCntAward:%d,
GridLimitCnt:%d,
@@ -7563,6 +7569,7 @@
self.LuckValue,
self.TreasureCount,
self.TreasureCountToday,
+ self.TreasureCountTodayGold,
self.FreeCountToday,
self.TreasureCntAward,
self.GridLimitCnt,
@@ -7647,8 +7654,10 @@
TreasureType = 0 #(BYTE TreasureType)//寻宝类型
TreasureIndex = 0 #(BYTE TreasureIndex)//寻宝索引
CostType = 0 #(BYTE CostType)//消耗类型:0-默认仙玉;1-免费次数;2-寻宝道具
- AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝增加的积分货币类型,可能为0
- AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝增加的积分货币值,可能为0
+ AddMoneyType = 0 #(BYTE AddMoneyType)// 本次寻宝额外增加的积分货币类型,可能为0
+ AddMoneyValue = 0 #(WORD AddMoneyValue)// 本次寻宝额外增加的积分货币值,可能为0
+ AddItemID = 0 #(DWORD AddItemID)// 本次寻宝额外赠送的物品ID,可能为0
+ AddItemCount = 0 #(DWORD AddItemCount)// 本次寻宝额外赠送的物品ID个数,可能为0
AddTreasureLuck = 0 #(WORD AddTreasureLuck)// 本次寻宝增加的幸运值
TreasureResultLen = 0 #(WORD TreasureResultLen)
TreasureResult = "" #(String TreasureResult)// 获得物品结果[[格子编号, 物品ID,个数,是否绑定], ...]
@@ -7668,6 +7677,8 @@
self.CostType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.AddMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.AddMoneyValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AddItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.AddItemCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.AddTreasureLuck,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TreasureResult,_pos = CommFunc.ReadString(_lpData, _pos,self.TreasureResultLen)
@@ -7683,6 +7694,8 @@
self.CostType = 0
self.AddMoneyType = 0
self.AddMoneyValue = 0
+ self.AddItemID = 0
+ self.AddItemCount = 0
self.AddTreasureLuck = 0
self.TreasureResultLen = 0
self.TreasureResult = ""
@@ -7696,6 +7709,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
length += 2
length += 2
length += len(self.TreasureResult)
@@ -7710,6 +7725,8 @@
data = CommFunc.WriteBYTE(data, self.CostType)
data = CommFunc.WriteBYTE(data, self.AddMoneyType)
data = CommFunc.WriteWORD(data, self.AddMoneyValue)
+ data = CommFunc.WriteDWORD(data, self.AddItemID)
+ data = CommFunc.WriteDWORD(data, self.AddItemCount)
data = CommFunc.WriteWORD(data, self.AddTreasureLuck)
data = CommFunc.WriteWORD(data, self.TreasureResultLen)
data = CommFunc.WriteString(data, self.TreasureResultLen, self.TreasureResult)
@@ -7723,6 +7740,8 @@
CostType:%d,
AddMoneyType:%d,
AddMoneyValue:%d,
+ AddItemID:%d,
+ AddItemCount:%d,
AddTreasureLuck:%d,
TreasureResultLen:%d,
TreasureResult:%s
@@ -7734,6 +7753,8 @@
self.CostType,
self.AddMoneyType,
self.AddMoneyValue,
+ self.AddItemID,
+ self.AddItemCount,
self.AddTreasureLuck,
self.TreasureResultLen,
self.TreasureResult
@@ -17330,259 +17351,108 @@
#------------------------------------------------------
-# AA 69 登录活动信息新 #tagMCActLoginNew
+# AA 21 武将登场活动信息 #tagSCActHeroAppearInfo
-class tagMCActLoginNewItem(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(tagMCActLoginNewItem)
-
- def GetBuffer(self):
- return string_at(addressof(self), self.GetLength())
-
- def OutputString(self):
- DumpString = '''// AA 69 登录活动信息新 //tagMCActLoginNew:
- ItemID:%d,
- ItemCount:%d,
- IsBind:%d
- '''\
- %(
- self.ItemID,
- self.ItemCount,
- self.IsBind
- )
- return DumpString
-
-
-class tagMCActLoginNewDay(Structure):
- DayNum = 0 #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取
- Count = 0 #(BYTE Count)// 奖励物品数
- AwardItemList = list() #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表
- CountEx = 0 #(BYTE CountEx)// 额外奖励物品数
- AwardItemListEx = list() #(vector<tagMCActLoginNewItem> AwardItemListEx)// 额外奖励物品列表
- data = None
-
- def __init__(self):
- self.Clear()
- return
-
- def ReadData(self, _lpData, _pos=0, _Len=0):
- self.Clear()
- self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.Count):
- temAwardItemList = tagMCActLoginNewItem()
- _pos = temAwardItemList.ReadData(_lpData, _pos)
- self.AwardItemList.append(temAwardItemList)
- self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.CountEx):
- temAwardItemListEx = tagMCActLoginNewItem()
- _pos = temAwardItemListEx.ReadData(_lpData, _pos)
- self.AwardItemListEx.append(temAwardItemListEx)
- return _pos
-
- def Clear(self):
- self.DayNum = 0
- self.Count = 0
- self.AwardItemList = list()
- self.CountEx = 0
- self.AwardItemListEx = list()
- return
-
- def GetLength(self):
- length = 0
- length += 1
- length += 1
- for i in range(self.Count):
- length += self.AwardItemList[i].GetLength()
- length += 1
- for i in range(self.CountEx):
- length += self.AwardItemListEx[i].GetLength()
-
- return length
-
- def GetBuffer(self):
- data = ''
- data = CommFunc.WriteBYTE(data, self.DayNum)
- 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.WriteBYTE(data, self.CountEx)
- for i in range(self.CountEx):
- data = CommFunc.WriteString(data, self.AwardItemListEx[i].GetLength(), self.AwardItemListEx[i].GetBuffer())
- return data
-
- def OutputString(self):
- DumpString = '''
- DayNum:%d,
- Count:%d,
- AwardItemList:%s,
- CountEx:%d,
- AwardItemListEx:%s
- '''\
- %(
- self.DayNum,
- self.Count,
- "...",
- self.CountEx,
- "..."
- )
- return DumpString
-
-
-class tagMCActLoginNew(Structure):
+class tagSCActHeroAppearInfo(Structure):
Head = tagHead()
+ ActType = 0 #(BYTE ActType)// 活动类型,用于关联活动相关模块用,如签到、任务等
ActNum = 0 #(BYTE ActNum)// 活动编号
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
- LimitLV = 0 #(WORD LimitLV)// 限制等级
- RepSignMoneyType = 0 #(BYTE RepSignMoneyType)// 补签消耗货币类型
- RepSignMoneyValue = 0 #(DWORD RepSignMoneyValue)// 补签消耗货币值
- AwardExCTGID = 0 #(WORD AwardExCTGID)// 扩展奖励礼包充值ID,大于0时代表可以购买礼包每日登录可领取额外奖励
- DayCount = 0 #(BYTE DayCount)
- AwardDayList = list() #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表
+ CfgID = 0 #(WORD CfgID)// 活动时间表配置ID
data = None
def __init__(self):
self.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x69
+ self.Head.SubCmd = 0x21
return
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
+ self.ActType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
- self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
- self.AwardExCTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
- self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
- for i in range(self.DayCount):
- temAwardDayList = tagMCActLoginNewDay()
- _pos = temAwardDayList.ReadData(_lpData, _pos)
- self.AwardDayList.append(temAwardDayList)
+ self.CfgID,_pos = CommFunc.ReadWORD(_lpData, _pos)
return _pos
def Clear(self):
self.Head = tagHead()
self.Head.Clear()
self.Head.Cmd = 0xAA
- self.Head.SubCmd = 0x69
+ self.Head.SubCmd = 0x21
+ self.ActType = 0
self.ActNum = 0
self.StartDate = ""
self.EndtDate = ""
- self.LimitLV = 0
- self.RepSignMoneyType = 0
- self.RepSignMoneyValue = 0
- self.AwardExCTGID = 0
- self.DayCount = 0
- self.AwardDayList = list()
+ self.CfgID = 0
return
def GetLength(self):
length = 0
length += self.Head.GetLength()
length += 1
+ length += 1
length += 10
length += 10
length += 2
- length += 1
- length += 4
- length += 2
- length += 1
- for i in range(self.DayCount):
- length += self.AwardDayList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActType)
data = CommFunc.WriteBYTE(data, self.ActNum)
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
- data = CommFunc.WriteWORD(data, self.LimitLV)
- data = CommFunc.WriteBYTE(data, self.RepSignMoneyType)
- data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue)
- data = CommFunc.WriteWORD(data, self.AwardExCTGID)
- data = CommFunc.WriteBYTE(data, self.DayCount)
- for i in range(self.DayCount):
- data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer())
+ data = CommFunc.WriteWORD(data, self.CfgID)
return data
def OutputString(self):
DumpString = '''
Head:%s,
+ ActType:%d,
ActNum:%d,
StartDate:%s,
EndtDate:%s,
- LimitLV:%d,
- RepSignMoneyType:%d,
- RepSignMoneyValue:%d,
- AwardExCTGID:%d,
- DayCount:%d,
- AwardDayList:%s
+ CfgID:%d
'''\
%(
self.Head.OutputString(),
+ self.ActType,
self.ActNum,
self.StartDate,
self.EndtDate,
- self.LimitLV,
- self.RepSignMoneyType,
- self.RepSignMoneyValue,
- self.AwardExCTGID,
- self.DayCount,
- "..."
+ self.CfgID
)
return DumpString
-m_NAtagMCActLoginNew=tagMCActLoginNew()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginNew.Head.Cmd,m_NAtagMCActLoginNew.Head.SubCmd))] = m_NAtagMCActLoginNew
+m_NAtagSCActHeroAppearInfo=tagSCActHeroAppearInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCActHeroAppearInfo.Head.Cmd,m_NAtagSCActHeroAppearInfo.Head.SubCmd))] = m_NAtagSCActHeroAppearInfo
#------------------------------------------------------
-# AA 70 登录活动玩家信息新 #tagMCActLoginPlayerInfoNew
+# AA 22 武将登场活动玩家信息 #tagSCActHeroAppearPlayerInfo
-class tagMCActLoginPlayerInfoNew(Structure):
+class tagSCActHeroAppearPlayerInfo(Structure):
_pack_ = 1
_fields_ = [
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("ActNum", c_ubyte), # 活动编号
- ("LoginAward", c_int), # 普通奖励领取记录,按天对应二进制位记录是否已领取
- ("LoginAwardEx", c_int), # 额外奖励领取记录,按天对应二进制位记录是否已领取
+ ("StarHeroIndex", c_ubyte), # 升星计划选择的武将ID索引
+ ("StarFreeAward", c_int), # 升星计划免费奖励记录,按奖励记录索引二进制位运算记录是否已领取
+ ("CallHeroIndex", c_ubyte), # 招募选择的武将ID索引
]
def __init__(self):
self.Clear()
self.Cmd = 0xAA
- self.SubCmd = 0x70
+ self.SubCmd = 0x22
return
def ReadData(self, stringData, _pos=0, _len=0):
@@ -17592,38 +17462,41 @@
def Clear(self):
self.Cmd = 0xAA
- self.SubCmd = 0x70
+ self.SubCmd = 0x22
self.ActNum = 0
- self.LoginAward = 0
- self.LoginAwardEx = 0
+ self.StarHeroIndex = 0
+ self.StarFreeAward = 0
+ self.CallHeroIndex = 0
return
def GetLength(self):
- return sizeof(tagMCActLoginPlayerInfoNew)
+ return sizeof(tagSCActHeroAppearPlayerInfo)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// AA 70 登录活动玩家信息新 //tagMCActLoginPlayerInfoNew:
+ DumpString = '''// AA 22 武将登场活动玩家信息 //tagSCActHeroAppearPlayerInfo:
Cmd:%s,
SubCmd:%s,
ActNum:%d,
- LoginAward:%d,
- LoginAwardEx:%d
+ StarHeroIndex:%d,
+ StarFreeAward:%d,
+ CallHeroIndex:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.ActNum,
- self.LoginAward,
- self.LoginAwardEx
+ self.StarHeroIndex,
+ self.StarFreeAward,
+ self.CallHeroIndex
)
return DumpString
-m_NAtagMCActLoginPlayerInfoNew=tagMCActLoginPlayerInfoNew()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginPlayerInfoNew.Cmd,m_NAtagMCActLoginPlayerInfoNew.SubCmd))] = m_NAtagMCActLoginPlayerInfoNew
+m_NAtagSCActHeroAppearPlayerInfo=tagSCActHeroAppearPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCActHeroAppearPlayerInfo.Cmd,m_NAtagSCActHeroAppearPlayerInfo.SubCmd))] = m_NAtagSCActHeroAppearPlayerInfo
#------------------------------------------------------
@@ -18606,6 +18479,66 @@
m_NAtagMCActRecharegeCouponPlayerInfo=tagMCActRecharegeCouponPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRecharegeCouponPlayerInfo.Cmd,m_NAtagMCActRecharegeCouponPlayerInfo.SubCmd))] = m_NAtagMCActRecharegeCouponPlayerInfo
+
+
+#------------------------------------------------------
+# AA 20 活动签到奖励信息 #tagSCActSignPlayerInfo
+
+class tagSCActSignPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActType", c_ubyte), # 活动类型
+ ("ActNum", c_ubyte), # 活动编号
+ ("SignAward", c_int), # 奖励领取记录,按天对应二进制位记录是否已领取
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x20
+ 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 = 0xAA
+ self.SubCmd = 0x20
+ self.ActType = 0
+ self.ActNum = 0
+ self.SignAward = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagSCActSignPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 20 活动签到奖励信息 //tagSCActSignPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActType:%d,
+ ActNum:%d,
+ SignAward:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActType,
+ self.ActNum,
+ self.SignAward
+ )
+ return DumpString
+
+
+m_NAtagSCActSignPlayerInfo=tagSCActSignPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCActSignPlayerInfo.Cmd,m_NAtagSCActSignPlayerInfo.SubCmd))] = m_NAtagSCActSignPlayerInfo
#------------------------------------------------------
@@ -22563,16 +22496,12 @@
#------------------------------------------------------
# B1 22 武将信息 #tagSCHeroInfo
-class tagSCHero(Structure):
+class tagSCHeroSkin(Structure):
_pack_ = 1
_fields_ = [
- ("HeroID", c_int), # 武将ID
- ("SkinState", c_int), # 武将皮肤已解锁状态信息,按皮肤所在索引二进制位运算判断是否解锁,0索引位默认皮肤,不用验证
- ("BookInitState", c_ubyte), # 图鉴激活状态:0-未激活;1-可激活;2-已激活
- ("BookStarLV", c_ushort), # 图鉴星级等级
- ("BookBreakLV", c_ushort), # 图鉴突破等级
- ("BookStarLVH", c_ushort), # 图鉴星级历史最高等级
- ("BookBreakLVH", c_ushort), # 图鉴突破历史最高等级
+ ("SkinID", c_int), #皮肤ID,只通知非默认皮肤
+ ("State", c_ubyte), #是否已激活
+ ("Star", c_ubyte), #星级
]
def __init__(self):
@@ -22585,39 +22514,91 @@
return _pos + self.GetLength()
def Clear(self):
- self.HeroID = 0
- self.SkinState = 0
- self.BookInitState = 0
- self.BookStarLV = 0
- self.BookBreakLV = 0
- self.BookStarLVH = 0
- self.BookBreakLVH = 0
+ self.SkinID = 0
+ self.State = 0
+ self.Star = 0
return
def GetLength(self):
- return sizeof(tagSCHero)
+ return sizeof(tagSCHeroSkin)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// B1 22 武将信息 //tagSCHeroInfo:
+ SkinID:%d,
+ State:%d,
+ Star:%d
+ '''\
+ %(
+ self.SkinID,
+ self.State,
+ self.Star
+ )
+ return DumpString
+
+
+class tagSCHero(Structure):
+ HeroID = 0 #(DWORD HeroID)// 武将ID
+ BookInitState = 0 #(BYTE BookInitState)// 图鉴激活状态:0-未激活;1-可激活;2-已激活
+ SkinCnt = 0 #(BYTE SkinCnt)
+ SkinList = list() #(vector<tagSCHeroSkin> SkinList)// 非默认皮肤信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.HeroID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.BookInitState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.SkinCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.SkinCnt):
+ temSkinList = tagSCHeroSkin()
+ _pos = temSkinList.ReadData(_lpData, _pos)
+ self.SkinList.append(temSkinList)
+ return _pos
+
+ def Clear(self):
+ self.HeroID = 0
+ self.BookInitState = 0
+ self.SkinCnt = 0
+ self.SkinList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 4
+ length += 1
+ length += 1
+ for i in range(self.SkinCnt):
+ length += self.SkinList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteDWORD(data, self.HeroID)
+ data = CommFunc.WriteBYTE(data, self.BookInitState)
+ data = CommFunc.WriteBYTE(data, self.SkinCnt)
+ for i in range(self.SkinCnt):
+ data = CommFunc.WriteString(data, self.SkinList[i].GetLength(), self.SkinList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
HeroID:%d,
- SkinState:%d,
BookInitState:%d,
- BookStarLV:%d,
- BookBreakLV:%d,
- BookStarLVH:%d,
- BookBreakLVH:%d
+ SkinCnt:%d,
+ SkinList:%s
'''\
%(
self.HeroID,
- self.SkinState,
self.BookInitState,
- self.BookStarLV,
- self.BookBreakLV,
- self.BookStarLVH,
- self.BookBreakLVH
+ self.SkinCnt,
+ "..."
)
return DumpString
--
Gitblit v1.8.0