From da731f6c88057f8b5ab7c5f8888a7545f8c977e1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 13 六月 2024 17:28:12 +0800
Subject: [PATCH] 10178 【越南】【香港】【主干】挂机奖励(B109封包修改)

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py |  142 ++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 115 insertions(+), 27 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index eb80339..3d7a6f8 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -45187,6 +45187,84 @@
 #------------------------------------------------------
 # B1 09 玩家挂机系统信息 #tagMCGuajiInfo
 
+class  tagMCGuajiMoney(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(tagMCGuajiMoney)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 09 玩家挂机系统信息 //tagMCGuajiInfo:
+                                MoneyType:%d,
+                                MoneyValue:%d
+                                '''\
+                                %(
+                                self.MoneyType,
+                                self.MoneyValue
+                                )
+        return DumpString
+
+
+class  tagMCGuajiItem(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("ItemID", c_int),    
+                  ("Count", c_ushort),    
+                  ]
+
+    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
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCGuajiItem)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''// B1 09 玩家挂机系统信息 //tagMCGuajiInfo:
+                                ItemID:%d,
+                                Count:%d
+                                '''\
+                                %(
+                                self.ItemID,
+                                self.Count
+                                )
+        return DumpString
+
+
 class  tagMCGuajiInfo(Structure):
     Head = tagHead()
     QuickAwardCount = 0    #(BYTE QuickAwardCount)// 今日已快速挂机收益次数
@@ -45194,10 +45272,10 @@
     AwardSeconds = 0    #(DWORD AwardSeconds)// 已累计收益时长,秒
     Exp = 0    #(DWORD Exp)// 已累计经验,求余亿部分
     ExpPoint = 0    #(DWORD ExpPoint)// 已累计经验,整除亿部分
-    MoneyInfoLen = 0    #(BYTE MoneyInfoLen)
-    MoneyInfo = ""    #(String MoneyInfo)// 已累计货币 [[货币类型, 货币值], ...]
-    ItemInfoLen = 0    #(WORD ItemInfoLen)
-    ItemInfo = ""    #(String ItemInfo)// 已累计物品 [[物品ID, 个数], ...]
+    MoneyLen = 0    #(BYTE MoneyLen)
+    MoneyList = list()    #(vector<tagMCGuajiMoney> MoneyList)// 已累计货币
+    ItemLen = 0    #(BYTE ItemLen)
+    ItemList = list()    #(vector<tagMCGuajiItem> ItemList)// 已累计物品
     data = None
 
     def __init__(self):
@@ -45214,10 +45292,16 @@
         self.AwardSeconds,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.MoneyInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.MoneyInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.MoneyInfoLen)
-        self.ItemInfoLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemInfoLen)
+        self.MoneyLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.MoneyLen):
+            temMoneyList = tagMCGuajiMoney()
+            _pos = temMoneyList.ReadData(_lpData, _pos)
+            self.MoneyList.append(temMoneyList)
+        self.ItemLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.ItemLen):
+            temItemList = tagMCGuajiItem()
+            _pos = temItemList.ReadData(_lpData, _pos)
+            self.ItemList.append(temItemList)
         return _pos
 
     def Clear(self):
@@ -45230,10 +45314,10 @@
         self.AwardSeconds = 0
         self.Exp = 0
         self.ExpPoint = 0
-        self.MoneyInfoLen = 0
-        self.MoneyInfo = ""
-        self.ItemInfoLen = 0
-        self.ItemInfo = ""
+        self.MoneyLen = 0
+        self.MoneyList = list()
+        self.ItemLen = 0
+        self.ItemList = list()
         return
 
     def GetLength(self):
@@ -45245,9 +45329,11 @@
         length += 4
         length += 4
         length += 1
-        length += len(self.MoneyInfo)
-        length += 2
-        length += len(self.ItemInfo)
+        for i in range(self.MoneyLen):
+            length += self.MoneyList[i].GetLength()
+        length += 1
+        for i in range(self.ItemLen):
+            length += self.ItemList[i].GetLength()
 
         return length
 
@@ -45259,10 +45345,12 @@
         data = CommFunc.WriteDWORD(data, self.AwardSeconds)
         data = CommFunc.WriteDWORD(data, self.Exp)
         data = CommFunc.WriteDWORD(data, self.ExpPoint)
-        data = CommFunc.WriteBYTE(data, self.MoneyInfoLen)
-        data = CommFunc.WriteString(data, self.MoneyInfoLen, self.MoneyInfo)
-        data = CommFunc.WriteWORD(data, self.ItemInfoLen)
-        data = CommFunc.WriteString(data, self.ItemInfoLen, self.ItemInfo)
+        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())
         return data
 
     def OutputString(self):
@@ -45273,10 +45361,10 @@
                                 AwardSeconds:%d,
                                 Exp:%d,
                                 ExpPoint:%d,
-                                MoneyInfoLen:%d,
-                                MoneyInfo:%s,
-                                ItemInfoLen:%d,
-                                ItemInfo:%s
+                                MoneyLen:%d,
+                                MoneyList:%s,
+                                ItemLen:%d,
+                                ItemList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
@@ -45285,10 +45373,10 @@
                                 self.AwardSeconds,
                                 self.Exp,
                                 self.ExpPoint,
-                                self.MoneyInfoLen,
-                                self.MoneyInfo,
-                                self.ItemInfoLen,
-                                self.ItemInfo
+                                self.MoneyLen,
+                                "...",
+                                self.ItemLen,
+                                "..."
                                 )
         return DumpString
 

--
Gitblit v1.8.0