From ba4793de5a2e04779b093265d89eeabf5984450c Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 11 十二月 2024 14:11:05 +0800
Subject: [PATCH] 10318 【英文】【越南】【BT】【砍树】统一增加奖励获得封包(商店事件DataEx增加同步商店类型)

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py |  266 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 254 insertions(+), 12 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 07a47b5..d937fc0 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -4715,7 +4715,7 @@
     ID = 0    #(DWORD ID)
     ID2 = 0    #(DWORD ID2)
     Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字 
-    Name2 = ""    #(char Name2[33])//名字2
+    Name2 = ""    #(char Name2[65])//名字2
     Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
     Value1 = 0    #(DWORD Value1)//排序依赖的值,比如,等级
     Value2 = 0    #(DWORD Value2)//排序依赖的值,比如,战斗力
@@ -4742,7 +4742,7 @@
         self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65)
         self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -4787,7 +4787,7 @@
         length += 4
         length += 4
         length += 33
-        length += 33
+        length += 65
         length += 1
         length += 4
         length += 4
@@ -4811,7 +4811,7 @@
         data = CommFunc.WriteDWORD(data, self.ID)
         data = CommFunc.WriteDWORD(data, self.ID2)
         data = CommFunc.WriteString(data, 33, self.Name1)
-        data = CommFunc.WriteString(data, 33, self.Name2)
+        data = CommFunc.WriteString(data, 65, self.Name2)
         data = CommFunc.WriteBYTE(data, self.Type2)
         data = CommFunc.WriteDWORD(data, self.Value1)
         data = CommFunc.WriteDWORD(data, self.Value2)
@@ -16858,7 +16858,7 @@
     ID = 0    #(DWORD ID)
     ID2 = 0    #(DWORD ID2)
     Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字 
-    Name2 = ""    #(char Name2[33])//名字2
+    Name2 = ""    #(char Name2[65])//名字2
     Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
     Value1 = 0    #(DWORD Value1)//自定义值1
     Value2 = 0    #(DWORD Value2)//自定义值2
@@ -16885,7 +16885,7 @@
         self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
-        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65)
         self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -16930,7 +16930,7 @@
         length += 4
         length += 4
         length += 33
-        length += 33
+        length += 65
         length += 1
         length += 4
         length += 4
@@ -16954,7 +16954,7 @@
         data = CommFunc.WriteDWORD(data, self.ID)
         data = CommFunc.WriteDWORD(data, self.ID2)
         data = CommFunc.WriteString(data, 33, self.Name1)
-        data = CommFunc.WriteString(data, 33, self.Name2)
+        data = CommFunc.WriteString(data, 65, self.Name2)
         data = CommFunc.WriteBYTE(data, self.Type2)
         data = CommFunc.WriteDWORD(data, self.Value1)
         data = CommFunc.WriteDWORD(data, self.Value2)
@@ -33073,6 +33073,218 @@
 
 
 #------------------------------------------------------
+# A8 01 获得奖励信息 #tagMCGiveAwardInfo
+
+class  tagMCGiveAwardMoney(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("MoneyType", c_ubyte),    
+                  ("MoneyValue", c_int),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.MoneyType = 0
+        self.MoneyValue = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCGiveAwardMoney)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
+                                MoneyType:%d,
+                                MoneyValue:%d
+                                '''\
+                                %(
+                                self.MoneyType,
+                                self.MoneyValue
+                                )
+        return DumpString
+
+
+class  tagMCGiveAwardItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    
+                  ("Count", c_int),    
+                  ("IsBind", c_ubyte),    
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, stringData, _pos=0, _len=0):
+        self.Clear()
+        memmove(addressof(self), stringData[_pos:], self.GetLength())
+        return _pos + self.GetLength()
+
+    def Clear(self):
+        self.ItemID = 0
+        self.Count = 0
+        self.IsBind = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCGiveAwardItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// A8 01 获得奖励信息 //tagMCGiveAwardInfo:
+                                ItemID:%d,
+                                Count:%d,
+                                IsBind:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.Count,
+                                self.IsBind
+                                )
+        return DumpString
+
+
+class  tagMCGiveAwardInfo(Structure):
+    Head = tagHead()
+    EventLen = 0    #(BYTE EventLen)
+    EventName = ""    #(String EventName)
+    Exp = 0    #(DWORD Exp)// 奖励经验,求余亿部分
+    ExpPoint = 0    #(DWORD ExpPoint)// 奖励经验,整除亿部分
+    MoneyLen = 0    #(BYTE MoneyLen)
+    MoneyList = list()    #(vector<tagMCGiveAwardMoney> MoneyList)// 奖励货币
+    ItemLen = 0    #(BYTE ItemLen)
+    ItemList = list()    #(vector<tagMCGiveAwardItem> ItemList)// 奖励物品
+    DataLen = 0    #(WORD DataLen)
+    DataEx = ""    #(String DataEx)// 扩展信息,可由不同的Event自定义信息内容
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xA8
+        self.Head.SubCmd = 0x01
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.EventLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.EventName,_pos = CommFunc.ReadString(_lpData, _pos,self.EventLen)
+        self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.MoneyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.MoneyLen):
+            temMoneyList = tagMCGiveAwardMoney()
+            _pos = temMoneyList.ReadData(_lpData, _pos)
+            self.MoneyList.append(temMoneyList)
+        self.ItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ItemLen):
+            temItemList = tagMCGiveAwardItem()
+            _pos = temItemList.ReadData(_lpData, _pos)
+            self.ItemList.append(temItemList)
+        self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.DataEx,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xA8
+        self.Head.SubCmd = 0x01
+        self.EventLen = 0
+        self.EventName = ""
+        self.Exp = 0
+        self.ExpPoint = 0
+        self.MoneyLen = 0
+        self.MoneyList = list()
+        self.ItemLen = 0
+        self.ItemList = list()
+        self.DataLen = 0
+        self.DataEx = ""
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += len(self.EventName)
+        length += 4
+        length += 4
+        length += 1
+        for i in range(self.MoneyLen):
+            length += self.MoneyList[i].GetLength()
+        length += 1
+        for i in range(self.ItemLen):
+            length += self.ItemList[i].GetLength()
+        length += 2
+        length += len(self.DataEx)
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.EventLen)
+        data = CommFunc.WriteString(data, self.EventLen, self.EventName)
+        data = CommFunc.WriteDWORD(data, self.Exp)
+        data = CommFunc.WriteDWORD(data, self.ExpPoint)
+        data = CommFunc.WriteBYTE(data, self.MoneyLen)
+        for i in range(self.MoneyLen):
+            data = CommFunc.WriteString(data, self.MoneyList[i].GetLength(), self.MoneyList[i].GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ItemLen)
+        for i in range(self.ItemLen):
+            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
+        data = CommFunc.WriteWORD(data, self.DataLen)
+        data = CommFunc.WriteString(data, self.DataLen, self.DataEx)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                EventLen:%d,
+                                EventName:%s,
+                                Exp:%d,
+                                ExpPoint:%d,
+                                MoneyLen:%d,
+                                MoneyList:%s,
+                                ItemLen:%d,
+                                ItemList:%s,
+                                DataLen:%d,
+                                DataEx:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.EventLen,
+                                self.EventName,
+                                self.Exp,
+                                self.ExpPoint,
+                                self.MoneyLen,
+                                "...",
+                                self.ItemLen,
+                                "...",
+                                self.DataLen,
+                                self.DataEx
+                                )
+        return DumpString
+
+
+m_NAtagMCGiveAwardInfo=tagMCGiveAwardInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGiveAwardInfo.Head.Cmd,m_NAtagMCGiveAwardInfo.Head.SubCmd))] = m_NAtagMCGiveAwardInfo
+
+
+#------------------------------------------------------
 # A8 12 守护成功拾取物品 #tagMCGuradPickupItemSucc
 
 class  tagMCGuradPickupItemSucc(Structure):
@@ -38115,6 +38327,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):
@@ -38129,12 +38343,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):
@@ -38143,6 +38364,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
 
@@ -38152,17 +38376,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
@@ -38176,6 +38407,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
@@ -38195,6 +38427,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()
@@ -38213,6 +38446,7 @@
         self.LimitLV = 0
         self.RepSignMoneyType = 0
         self.RepSignMoneyValue = 0
+        self.AwardExCTGID = 0
         self.DayCount = 0
         self.AwardDayList = list()
         return
@@ -38226,6 +38460,7 @@
         length += 2
         length += 1
         length += 4
+        length += 2
         length += 1
         for i in range(self.DayCount):
             length += self.AwardDayList[i].GetLength()
@@ -38241,6 +38476,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())
@@ -38255,6 +38491,7 @@
                                 LimitLV:%d,
                                 RepSignMoneyType:%d,
                                 RepSignMoneyValue:%d,
+                                AwardExCTGID:%d,
                                 DayCount:%d,
                                 AwardDayList:%s
                                 '''\
@@ -38266,6 +38503,7 @@
                                 self.LimitLV,
                                 self.RepSignMoneyType,
                                 self.RepSignMoneyValue,
+                                self.AwardExCTGID,
                                 self.DayCount,
                                 "..."
                                 )
@@ -38285,7 +38523,8 @@
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
                   ("ActNum", c_ubyte),    # 活动编号
-                  ("LoginAward", c_int),    # 是否已领取,按天索引0代表第1天记录当天是否已领取
+                  ("LoginAward", c_int),    # 普通奖励领取记录,按天对应二进制位记录是否已领取
+                  ("LoginAwardEx", c_int),    # 额外奖励领取记录,按天对应二进制位记录是否已领取
                   ]
 
     def __init__(self):
@@ -38304,6 +38543,7 @@
         self.SubCmd = 0x70
         self.ActNum = 0
         self.LoginAward = 0
+        self.LoginAwardEx = 0
         return
 
     def GetLength(self):
@@ -38317,13 +38557,15 @@
                                 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
 

--
Gitblit v1.8.0