From b2c05a41e1a78fbc310ea94852fd0b4c595e6863 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 15 十一月 2024 19:05:51 +0800
Subject: [PATCH] 1111 修改同步跨服缓存数据条件(50级以内不同步)
---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 648 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 630 insertions(+), 18 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index bce921d..98d4441 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -14685,6 +14685,8 @@
Job = 0 #(BYTE Job)// 玩家职业
JobLevel = 0 #(BYTE JobLevel)// 玩家职业阶级
RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
data = None
def __init__(self):
@@ -14703,6 +14705,8 @@
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
return _pos
def Clear(self):
@@ -14717,6 +14721,8 @@
self.Job = 0
self.JobLevel = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
return
def GetLength(self):
@@ -14729,6 +14735,8 @@
length += 1
length += 1
length += 2
+ length += 4
+ length += 4
return length
@@ -14742,6 +14750,8 @@
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteBYTE(data, self.JobLevel)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
return data
def OutputString(self):
@@ -14753,7 +14763,9 @@
LV:%d,
Job:%d,
JobLevel:%d,
- RealmLV:%d
+ RealmLV:%d,
+ Face:%d,
+ FacePic:%d
'''\
%(
self.Head.OutputString(),
@@ -14763,7 +14775,9 @@
self.LV,
self.Job,
self.JobLevel,
- self.RealmLV
+ self.RealmLV,
+ self.Face,
+ self.FacePic
)
return DumpString
@@ -17542,6 +17556,8 @@
NameLen = 0 #(BYTE NameLen)
PlayerName = "" #(String PlayerName)
Job = 0 #(BYTE Job)
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
FightPower = 0 #(DWORD FightPower)
RealmLV = 0 #(WORD RealmLV)
PKScore = 0 #(DWORD PKScore)
@@ -17558,6 +17574,8 @@
self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.PKScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -17569,6 +17587,8 @@
self.NameLen = 0
self.PlayerName = ""
self.Job = 0
+ self.Face = 0
+ self.FacePic = 0
self.FightPower = 0
self.RealmLV = 0
self.PKScore = 0
@@ -17582,6 +17602,8 @@
length += len(self.PlayerName)
length += 1
length += 4
+ length += 4
+ length += 4
length += 2
length += 4
length += 1
@@ -17594,6 +17616,8 @@
data = CommFunc.WriteBYTE(data, self.NameLen)
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
data = CommFunc.WriteBYTE(data, self.Job)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteWORD(data, self.RealmLV)
data = CommFunc.WriteDWORD(data, self.PKScore)
@@ -17606,6 +17630,8 @@
NameLen:%d,
PlayerName:%s,
Job:%d,
+ Face:%d,
+ FacePic:%d,
FightPower:%d,
RealmLV:%d,
PKScore:%d,
@@ -17616,6 +17642,8 @@
self.NameLen,
self.PlayerName,
self.Job,
+ self.Face,
+ self.FacePic,
self.FightPower,
self.RealmLV,
self.PKScore,
@@ -17713,6 +17741,8 @@
PlayerName = "" #(String PlayerName)// 跨服名字
Job = 0 #(BYTE Job)
LV = 0 #(WORD LV)
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
MaxHP = 0 #(DWORD MaxHP)// 默认满血,求余亿部分
MaxHPEx = 0 #(DWORD MaxHPEx)// 默认满血,整除亿部分
MaxProDef = 0 #(DWORD MaxProDef)// 最大护盾
@@ -17729,6 +17759,8 @@
self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LV,_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)
@@ -17740,6 +17772,8 @@
self.PlayerName = ""
self.Job = 0
self.LV = 0
+ self.Face = 0
+ self.FacePic = 0
self.MaxHP = 0
self.MaxHPEx = 0
self.MaxProDef = 0
@@ -17755,6 +17789,8 @@
length += 4
length += 4
length += 4
+ length += 4
+ length += 4
return length
@@ -17765,6 +17801,8 @@
data = CommFunc.WriteString(data, self.NameLen, self.PlayerName)
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.LV)
+ 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)
@@ -17777,6 +17815,8 @@
PlayerName:%s,
Job:%d,
LV:%d,
+ Face:%d,
+ FacePic:%d,
MaxHP:%d,
MaxHPEx:%d,
MaxProDef:%d
@@ -17787,6 +17827,8 @@
self.PlayerName,
self.Job,
self.LV,
+ self.Face,
+ self.FacePic,
self.MaxHP,
self.MaxHPEx,
self.MaxProDef
@@ -28862,13 +28904,11 @@
#------------------------------------------------------
# A3 51 寻宝功能信息 #tagMCTreasureInfo
-class tagMCTreasureTypeInfo(Structure):
+class tagMCTreasureGridLimit(Structure):
_pack_ = 1
_fields_ = [
- ("TreasureType", c_ubyte), #寻宝类型
- ("LuckValue", c_ushort), #当前幸运值
- ("TreasureCount", c_int), #已寻宝总次数
- ("FreeCountToday", c_ushort), #今日已免费寻宝次数
+ ("GridNum", c_ubyte), # 有限制抽取次数的格子编号
+ ("GridCnt", c_ushort), # 已抽到次数
]
def __init__(self):
@@ -28881,30 +28921,109 @@
return _pos + self.GetLength()
def Clear(self):
- self.TreasureType = 0
- self.LuckValue = 0
- self.TreasureCount = 0
- self.FreeCountToday = 0
+ self.GridNum = 0
+ self.GridCnt = 0
return
def GetLength(self):
- return sizeof(tagMCTreasureTypeInfo)
+ return sizeof(tagMCTreasureGridLimit)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
+ GridNum:%d,
+ GridCnt:%d
+ '''\
+ %(
+ self.GridNum,
+ self.GridCnt
+ )
+ return DumpString
+
+
+class tagMCTreasureTypeInfo(Structure):
+ TreasureType = 0 #(BYTE TreasureType)//寻宝类型
+ LuckValue = 0 #(WORD LuckValue)//当前幸运值
+ TreasureCount = 0 #(DWORD TreasureCount)//已寻宝总次数
+ FreeCountToday = 0 #(WORD FreeCountToday)//今日已免费寻宝次数
+ TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
+ GridLimitCnt = 0 #(BYTE GridLimitCnt)
+ GridLimitCntList = list() #(vector<tagMCTreasureGridLimit> GridLimitCntList)//有限制抽取次数的格子次数信息
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LuckValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TreasureCount,_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)
+ for i in range(self.GridLimitCnt):
+ temGridLimitCntList = tagMCTreasureGridLimit()
+ _pos = temGridLimitCntList.ReadData(_lpData, _pos)
+ self.GridLimitCntList.append(temGridLimitCntList)
+ return _pos
+
+ def Clear(self):
+ self.TreasureType = 0
+ self.LuckValue = 0
+ self.TreasureCount = 0
+ self.FreeCountToday = 0
+ self.TreasureCntAward = 0
+ self.GridLimitCnt = 0
+ self.GridLimitCntList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 4
+ length += 2
+ length += 4
+ length += 1
+ for i in range(self.GridLimitCnt):
+ length += self.GridLimitCntList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.TreasureType)
+ data = CommFunc.WriteWORD(data, self.LuckValue)
+ data = CommFunc.WriteDWORD(data, self.TreasureCount)
+ data = CommFunc.WriteWORD(data, self.FreeCountToday)
+ data = CommFunc.WriteDWORD(data, self.TreasureCntAward)
+ data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
+ for i in range(self.GridLimitCnt):
+ data = CommFunc.WriteString(data, self.GridLimitCntList[i].GetLength(), self.GridLimitCntList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
TreasureType:%d,
LuckValue:%d,
TreasureCount:%d,
- FreeCountToday:%d
+ FreeCountToday:%d,
+ TreasureCntAward:%d,
+ GridLimitCnt:%d,
+ GridLimitCntList:%s
'''\
%(
self.TreasureType,
self.LuckValue,
self.TreasureCount,
- self.FreeCountToday
+ self.FreeCountToday,
+ self.TreasureCntAward,
+ self.GridLimitCnt,
+ "..."
)
return DumpString
@@ -37996,6 +38115,8 @@
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):
@@ -38010,12 +38131,19 @@
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):
@@ -38024,6 +38152,9 @@
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
@@ -38033,17 +38164,24 @@
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
+ AwardItemList:%s,
+ CountEx:%d,
+ AwardItemListEx:%s
'''\
%(
self.DayNum,
self.Count,
+ "...",
+ self.CountEx,
"..."
)
return DumpString
@@ -38057,6 +38195,7 @@
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)// 奖励天列表
data = None
@@ -38076,6 +38215,7 @@
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()
@@ -38094,6 +38234,7 @@
self.LimitLV = 0
self.RepSignMoneyType = 0
self.RepSignMoneyValue = 0
+ self.AwardExCTGID = 0
self.DayCount = 0
self.AwardDayList = list()
return
@@ -38107,6 +38248,7 @@
length += 2
length += 1
length += 4
+ length += 2
length += 1
for i in range(self.DayCount):
length += self.AwardDayList[i].GetLength()
@@ -38122,6 +38264,7 @@
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())
@@ -38136,6 +38279,7 @@
LimitLV:%d,
RepSignMoneyType:%d,
RepSignMoneyValue:%d,
+ AwardExCTGID:%d,
DayCount:%d,
AwardDayList:%s
'''\
@@ -38147,6 +38291,7 @@
self.LimitLV,
self.RepSignMoneyType,
self.RepSignMoneyValue,
+ self.AwardExCTGID,
self.DayCount,
"..."
)
@@ -38166,7 +38311,8 @@
("Cmd", c_ubyte),
("SubCmd", c_ubyte),
("ActNum", c_ubyte), # 活动编号
- ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取
+ ("LoginAward", c_int), # 普通奖励领取记录,按天对应二进制位记录是否已领取
+ ("LoginAwardEx", c_int), # 额外奖励领取记录,按天对应二进制位记录是否已领取
]
def __init__(self):
@@ -38185,6 +38331,7 @@
self.SubCmd = 0x70
self.ActNum = 0
self.LoginAward = 0
+ self.LoginAwardEx = 0
return
def GetLength(self):
@@ -38198,19 +38345,378 @@
Cmd:%s,
SubCmd:%s,
ActNum:%d,
- LoginAward:%d
+ LoginAward:%d,
+ LoginAwardEx:%d
'''\
%(
self.Cmd,
self.SubCmd,
self.ActNum,
- self.LoginAward
+ self.LoginAward,
+ self.LoginAwardEx
)
return DumpString
m_NAtagMCActLoginPlayerInfoNew=tagMCActLoginPlayerInfoNew()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginPlayerInfoNew.Cmd,m_NAtagMCActLoginPlayerInfoNew.SubCmd))] = m_NAtagMCActLoginPlayerInfoNew
+
+
+#------------------------------------------------------
+# AA 88 轮回殿活动信息 #tagMCActLunhuidianInfo
+
+class tagMCActLunhuidianItem(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(tagMCActLunhuidianItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 88 轮回殿活动信息 //tagMCActLunhuidianInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCActLunhuidianAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)// 奖励记录索引 0~30
+ NeedValue = 0 #(DWORD NeedValue)// 奖励所需值
+ Count = 0 #(BYTE Count)// 奖励物品数
+ AwardItemList = list() #(vector<tagMCActLunhuidianItem> AwardItemList)// 奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.Count):
+ temAwardItemList = tagMCActLunhuidianItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedValue = 0
+ self.Count = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 4
+ length += 1
+ for i in range(self.Count):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteDWORD(data, self.NeedValue)
+ 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 = '''
+ AwardIndex:%d,
+ NeedValue:%d,
+ Count:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedValue,
+ self.Count,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActLunhuidianRound(Structure):
+ RoundType = 0 #(BYTE RoundType)// 轮回类型
+ AwardType = 0 #(BYTE AwardType)// 奖励类型 1-消耗货币;2-寻宝次数
+ AwardTypeValue = 0 #(DWORD AwardTypeValue)// 奖励类型对应值,消耗货币时为对应的货币类型,寻宝时为对应的寻宝类型
+ RoundMax = 0 #(BYTE RoundMax)// 最大可循环轮次
+ AwardCount = 0 #(BYTE AwardCount)
+ AwardList = list() #(vector<tagMCActLunhuidianAward> AwardList)// 每轮奖励列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.RoundType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardTypeValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardCount):
+ temAwardList = tagMCActLunhuidianAward()
+ _pos = temAwardList.ReadData(_lpData, _pos)
+ self.AwardList.append(temAwardList)
+ return _pos
+
+ def Clear(self):
+ self.RoundType = 0
+ self.AwardType = 0
+ self.AwardTypeValue = 0
+ self.RoundMax = 0
+ self.AwardCount = 0
+ self.AwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 1
+ length += 4
+ length += 1
+ length += 1
+ for i in range(self.AwardCount):
+ length += self.AwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.RoundType)
+ data = CommFunc.WriteBYTE(data, self.AwardType)
+ data = CommFunc.WriteDWORD(data, self.AwardTypeValue)
+ data = CommFunc.WriteBYTE(data, self.RoundMax)
+ data = CommFunc.WriteBYTE(data, self.AwardCount)
+ for i in range(self.AwardCount):
+ data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ RoundType:%d,
+ AwardType:%d,
+ AwardTypeValue:%d,
+ RoundMax:%d,
+ AwardCount:%d,
+ AwardList:%s
+ '''\
+ %(
+ self.RoundType,
+ self.AwardType,
+ self.AwardTypeValue,
+ self.RoundMax,
+ self.AwardCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCActLunhuidianInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ RoundCount = 0 #(BYTE RoundCount)
+ RoundList = list() #(vector<tagMCActLunhuidianRound> RoundList)// 轮回列表,支持多个不同类型轮回同时开启
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x88
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.RoundCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.RoundCount):
+ temRoundList = tagMCActLunhuidianRound()
+ _pos = temRoundList.ReadData(_lpData, _pos)
+ self.RoundList.append(temRoundList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x88
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.RoundCount = 0
+ self.RoundList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+ for i in range(self.RoundCount):
+ length += self.RoundList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.RoundCount)
+ for i in range(self.RoundCount):
+ data = CommFunc.WriteString(data, self.RoundList[i].GetLength(), self.RoundList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ LimitLV:%d,
+ RoundCount:%d,
+ RoundList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.LimitLV,
+ self.RoundCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCActLunhuidianInfo=tagMCActLunhuidianInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianInfo.Head.Cmd,m_NAtagMCActLunhuidianInfo.Head.SubCmd))] = m_NAtagMCActLunhuidianInfo
+
+
+#------------------------------------------------------
+# AA 89 轮回殿活动玩家信息 #tagMCActLunhuidianPlayerInfo
+
+class tagMCActLunhuidianPlayerInfo(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ActNum", c_ubyte), # 活动编号
+ ("RoundType", c_ubyte), # 轮回类型
+ ("CurRound", c_ubyte), # 当前轮次
+ ("CurValue", c_int), # 累计值
+ ("AwardRecord", c_int), # 当前轮次奖励领奖记录,按奖励索引二进制位存储是否已领取,所有奖励已领取后自动进入下一轮,且重置该奖励状态
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xAA
+ self.SubCmd = 0x89
+ 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 = 0x89
+ self.ActNum = 0
+ self.RoundType = 0
+ self.CurRound = 0
+ self.CurValue = 0
+ self.AwardRecord = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCActLunhuidianPlayerInfo)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 89 轮回殿活动玩家信息 //tagMCActLunhuidianPlayerInfo:
+ Cmd:%s,
+ SubCmd:%s,
+ ActNum:%d,
+ RoundType:%d,
+ CurRound:%d,
+ CurValue:%d,
+ AwardRecord:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ActNum,
+ self.RoundType,
+ self.CurRound,
+ self.CurValue,
+ self.AwardRecord
+ )
+ return DumpString
+
+
+m_NAtagMCActLunhuidianPlayerInfo=tagMCActLunhuidianPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianPlayerInfo.Cmd,m_NAtagMCActLunhuidianPlayerInfo.SubCmd))] = m_NAtagMCActLunhuidianPlayerInfo
#------------------------------------------------------
@@ -41575,6 +42081,98 @@
m_NAtagMCActXianXiaMJLayerInfo=tagMCActXianXiaMJLayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActXianXiaMJLayerInfo.Head.Cmd,m_NAtagMCActXianXiaMJLayerInfo.Head.SubCmd))] = m_NAtagMCActXianXiaMJLayerInfo
+
+
+#------------------------------------------------------
+# AA 87 运势活动信息 #tagMCActYunshiInfo
+
+class tagMCActYunshiInfo(Structure):
+ Head = tagHead()
+ ActNum = 0 #(BYTE ActNum)// 活动编号
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
+ LimitLV = 0 #(WORD LimitLV)// 限制等级
+ TreasureType = 0 #(BYTE TreasureType)// 活动寻宝类型
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x87
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x87
+ self.ActNum = 0
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.LimitLV = 0
+ self.TreasureType = 0
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 1
+ length += 10
+ length += 10
+ length += 1
+ length += 2
+ length += 1
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.ActNum)
+ data = CommFunc.WriteString(data, 10, self.StartDate)
+ data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
+ data = CommFunc.WriteWORD(data, self.LimitLV)
+ data = CommFunc.WriteBYTE(data, self.TreasureType)
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ ActNum:%d,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ LimitLV:%d,
+ TreasureType:%d
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.ActNum,
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.LimitLV,
+ self.TreasureType
+ )
+ return DumpString
+
+
+m_NAtagMCActYunshiInfo=tagMCActYunshiInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActYunshiInfo.Head.Cmd,m_NAtagMCActYunshiInfo.Head.SubCmd))] = m_NAtagMCActYunshiInfo
#------------------------------------------------------
@@ -52937,6 +53535,8 @@
LV = 0 #(WORD LV)// 玩家等级
Job = 0 #(BYTE Job)// 玩家职业, 如果是机器人,则职业有值,服务端控制
RealmLV = 0 #(WORD RealmLV)// 玩家境界等级
+ Face = 0 #(DWORD Face)//基本脸型
+ FacePic = 0 #(DWORD FacePic)//头像框
FightPower = 0 #(DWORD FightPower)// 玩家战力
Relation = 0 #(BYTE Relation)// 关系:0-无,1-好友,2-盟友
IsNeedGold = 0 #(BYTE IsNeedGold)// 是否需要仙玉召唤
@@ -52955,6 +53555,8 @@
self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
self.Relation,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.IsNeedGold,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -52968,6 +53570,8 @@
self.LV = 0
self.Job = 0
self.RealmLV = 0
+ self.Face = 0
+ self.FacePic = 0
self.FightPower = 0
self.Relation = 0
self.IsNeedGold = 0
@@ -52983,6 +53587,8 @@
length += 1
length += 2
length += 4
+ length += 4
+ length += 4
length += 1
length += 1
@@ -52997,6 +53603,8 @@
data = CommFunc.WriteWORD(data, self.LV)
data = CommFunc.WriteBYTE(data, self.Job)
data = CommFunc.WriteWORD(data, self.RealmLV)
+ data = CommFunc.WriteDWORD(data, self.Face)
+ data = CommFunc.WriteDWORD(data, self.FacePic)
data = CommFunc.WriteDWORD(data, self.FightPower)
data = CommFunc.WriteBYTE(data, self.Relation)
data = CommFunc.WriteBYTE(data, self.IsNeedGold)
@@ -53011,6 +53619,8 @@
LV:%d,
Job:%d,
RealmLV:%d,
+ Face:%d,
+ FacePic:%d,
FightPower:%d,
Relation:%d,
IsNeedGold:%d
@@ -53023,6 +53633,8 @@
self.LV,
self.Job,
self.RealmLV,
+ self.Face,
+ self.FacePic,
self.FightPower,
self.Relation,
self.IsNeedGold
--
Gitblit v1.8.0