From 3e464fe2ec8c40fc317e3ec3d6a4c3d9788cf41a Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 13 六月 2024 17:27:18 +0800
Subject: [PATCH] 10178 【越南】【香港】【主干】挂机奖励(B109封包修改)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py | 23 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 142 +++++++++++++++++++----
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 142 +++++++++++++++++++----
3 files changed, 249 insertions(+), 58 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index d433514..ab31c97 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -44984,6 +44984,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)// 今日已快速挂机收益次数
@@ -44991,10 +45069,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):
@@ -45011,10 +45089,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):
@@ -45027,10 +45111,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):
@@ -45042,9 +45126,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
@@ -45056,10 +45142,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):
@@ -45070,10 +45158,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(),
@@ -45082,10 +45170,10 @@
self.AwardSeconds,
self.Exp,
self.ExpPoint,
- self.MoneyInfoLen,
- self.MoneyInfo,
- self.ItemInfoLen,
- self.ItemInfo
+ self.MoneyLen,
+ "...",
+ self.ItemLen,
+ "..."
)
return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index d433514..ab31c97 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -44984,6 +44984,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)// 今日已快速挂机收益次数
@@ -44991,10 +45069,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):
@@ -45011,10 +45089,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):
@@ -45027,10 +45111,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):
@@ -45042,9 +45126,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
@@ -45056,10 +45142,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):
@@ -45070,10 +45158,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(),
@@ -45082,10 +45170,10 @@
self.AwardSeconds,
self.Exp,
self.ExpPoint,
- self.MoneyInfoLen,
- self.MoneyInfo,
- self.ItemInfoLen,
- self.ItemInfo
+ self.MoneyLen,
+ "...",
+ self.ItemLen,
+ "..."
)
return DumpString
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
index 123b6c9..1535efe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerGuaji.py
@@ -415,10 +415,25 @@
clientPack.AwardSeconds = awardSeconds
clientPack.Exp = exp % ChConfig.Def_PerPointValue
clientPack.ExpPoint = exp / ChConfig.Def_PerPointValue
- clientPack.MoneyInfo = str([[moneyType, moneyValue] for moneyType, moneyValue in moneyDict.items()]).replace(" ", "") if moneyDict else "[]"
- clientPack.MoneyInfoLen = len(clientPack.MoneyInfo)
- clientPack.ItemInfo = str([[itemID, itemCount] for itemID, itemCount in itemDict.items()]).replace(" ", "") if itemDict else "[]"
- clientPack.ItemInfoLen = len(clientPack.ItemInfo)
+
+ clientPack.MoneyList = []
+ if moneyDict:
+ for moneyType, moneyValue in moneyDict.items():
+ money = ChPyNetSendPack.tagMCGuajiMoney()
+ money.MoneyType = moneyType
+ money.MoneyValue = moneyValue
+ clientPack.MoneyList.append(money)
+ clientPack.MoneyLen = len(clientPack.MoneyList)
+
+ clientPack.ItemList = []
+ if itemDict:
+ for itemID, itemCount in itemDict.items():
+ item = ChPyNetSendPack.tagMCGuajiItem()
+ item.ItemID = itemID
+ item.Count = itemCount
+ clientPack.ItemList.append(item)
+ clientPack.ItemLen = len(clientPack.ItemList)
+
NetPackCommon.SendFakePack(curPlayer, clientPack)
return
--
Gitblit v1.8.0