From 0d2578daffd3b32fb0fa05e7dd92e88aa2d92ffa Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 01 三月 2019 16:23:06 +0800
Subject: [PATCH] 3039 【主干】【1.6】合服定制活动期间资源找回异常

---
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py |  295 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 208 insertions(+), 87 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index f1b67ab..0110c0b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -7283,9 +7283,10 @@
     ClassLV = 0    #(BYTE ClassLV)//过滤阶数,0为不限制
     SpecItemIDCount = 0    #(BYTE SpecItemIDCount)//指定物品ID个数
     SpecItemIDList = list()    #(vector<DWORD> SpecItemIDList)//指定物品ID
-    FromNum = 0    #(WORD FromNum)//查询起始数 (从1开始)
+    FromItemGUID = ""    #(char FromItemGUID[40])//从哪个物品开始查询
+    QueryDir = 0    #(BYTE QueryDir)//查询方向,1-往后查,2-往前查,3-定位查询
     QueryCount = 0    #(BYTE QueryCount)//查询个数,0为全部
-    QueryTotalCount = 0    #(WORD QueryTotalCount)//查询条件实际总个数
+    QueryRemainlCount = 0    #(WORD QueryRemainlCount)//查询条件对应查询方向剩余个数
     AuctionItemCount = 0    #(BYTE AuctionItemCount)//返回拍品数量
     AuctionItemList = list()    #(vector<tagGCAuctionItem> AuctionItemList)//返回拍品列表
     data = None
@@ -7309,9 +7310,10 @@
         for i in range(self.SpecItemIDCount):
             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
             self.SpecItemIDList.append(value)
-        self.FromNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.QueryTotalCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.QueryRemainlCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         for i in range(self.AuctionItemCount):
             temAuctionItemList = tagGCAuctionItem()
@@ -7330,9 +7332,10 @@
         self.ClassLV = 0
         self.SpecItemIDCount = 0
         self.SpecItemIDList = list()
-        self.FromNum = 0
+        self.FromItemGUID = ""
+        self.QueryDir = 0
         self.QueryCount = 0
-        self.QueryTotalCount = 0
+        self.QueryRemainlCount = 0
         self.AuctionItemCount = 0
         self.AuctionItemList = list()
         return
@@ -7346,7 +7349,8 @@
         length += 1
         length += 1
         length += 4 * self.SpecItemIDCount
-        length += 2
+        length += 40
+        length += 1
         length += 1
         length += 2
         length += 1
@@ -7366,9 +7370,10 @@
         data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
         for i in range(self.SpecItemIDCount):
             data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
-        data = CommFunc.WriteWORD(data, self.FromNum)
+        data = CommFunc.WriteString(data, 40, self.FromItemGUID)
+        data = CommFunc.WriteBYTE(data, self.QueryDir)
         data = CommFunc.WriteBYTE(data, self.QueryCount)
-        data = CommFunc.WriteWORD(data, self.QueryTotalCount)
+        data = CommFunc.WriteWORD(data, self.QueryRemainlCount)
         data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
         for i in range(self.AuctionItemCount):
             data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
@@ -7383,9 +7388,10 @@
                                 ClassLV:%d,
                                 SpecItemIDCount:%d,
                                 SpecItemIDList:%s,
-                                FromNum:%d,
+                                FromItemGUID:%s,
+                                QueryDir:%d,
                                 QueryCount:%d,
-                                QueryTotalCount:%d,
+                                QueryRemainlCount:%d,
                                 AuctionItemCount:%d,
                                 AuctionItemList:%s
                                 '''\
@@ -7397,9 +7403,10 @@
                                 self.ClassLV,
                                 self.SpecItemIDCount,
                                 "...",
-                                self.FromNum,
+                                self.FromItemGUID,
+                                self.QueryDir,
                                 self.QueryCount,
-                                self.QueryTotalCount,
+                                self.QueryRemainlCount,
                                 self.AuctionItemCount,
                                 "..."
                                 )
@@ -7692,7 +7699,8 @@
     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
     UserDataLen = 0    #(WORD UserDataLen)
     UserData = ""    #(String UserData)//自定义数据
-    CanGetMoney = 0    #(BYTE CanGetMoney)//可否获得收益
+    FamilyPlayerIDLen = 0    #(WORD FamilyPlayerIDLen)
+    FamilyPlayerIDInfo = ""    #(String FamilyPlayerIDInfo)//可获得收益的仙盟玩家ID信息
     AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
     data = None
 
@@ -7710,7 +7718,8 @@
         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
-        self.CanGetMoney,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.FamilyPlayerIDLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.FamilyPlayerIDInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyPlayerIDLen)
         self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         return _pos
 
@@ -7723,7 +7732,8 @@
         self.BidderPrice = 0
         self.UserDataLen = 0
         self.UserData = ""
-        self.CanGetMoney = 0
+        self.FamilyPlayerIDLen = 0
+        self.FamilyPlayerIDInfo = ""
         self.AuctionType = 0
         return
 
@@ -7737,7 +7747,8 @@
         length += 2
         length += 2
         length += len(self.UserData)
-        length += 1
+        length += 2
+        length += len(self.FamilyPlayerIDInfo)
         length += 1
 
         return length
@@ -7752,7 +7763,8 @@
         data = CommFunc.WriteWORD(data, self.BidderPrice)
         data = CommFunc.WriteWORD(data, self.UserDataLen)
         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
-        data = CommFunc.WriteBYTE(data, self.CanGetMoney)
+        data = CommFunc.WriteWORD(data, self.FamilyPlayerIDLen)
+        data = CommFunc.WriteString(data, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo)
         data = CommFunc.WriteBYTE(data, self.AuctionType)
         return data
 
@@ -7766,7 +7778,8 @@
                                 BidderPrice:%d,
                                 UserDataLen:%d,
                                 UserData:%s,
-                                CanGetMoney:%d,
+                                FamilyPlayerIDLen:%d,
+                                FamilyPlayerIDInfo:%s,
                                 AuctionType:%d
                                 '''\
                                 %(
@@ -7778,7 +7791,8 @@
                                 self.BidderPrice,
                                 self.UserDataLen,
                                 self.UserData,
-                                self.CanGetMoney,
+                                self.FamilyPlayerIDLen,
+                                self.FamilyPlayerIDInfo,
                                 self.AuctionType
                                 )
         return DumpString
@@ -8012,9 +8026,11 @@
 class  tagGCPlayerAuctionRecord(Structure):
     ItemGUID = ""    #(char ItemGUID[40])
     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
-    RecordType = 0    #(BYTE RecordType)//记录类型 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
+    RecordType = 0    #(BYTE RecordType)//记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
+    RecordResult = 0    #(BYTE RecordResult)//记录结果 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
     RecordTime = ""    #(char RecordTime[19])//记录时间 yyyy-MM-dd hh:mm:ss
-    RecordPrice = 0    #(WORD RecordPrice)//记录价格
+    BidderPrice = 0    #(DWORD BidderPrice)//成交价格
+    BidderName = ""    #(char BidderName[33])//成交玩家名
     ItemID = 0    #(DWORD ItemID)
     ItemCount = 0    #(WORD ItemCount)
     UserDataLen = 0    #(WORD UserDataLen)
@@ -8030,8 +8046,10 @@
         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.RecordResult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.RecordTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
-        self.RecordPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.BidderName,_pos = CommFunc.ReadString(_lpData, _pos,33)
         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -8042,8 +8060,10 @@
         self.ItemGUID = ""
         self.FamilyID = 0
         self.RecordType = 0
+        self.RecordResult = 0
         self.RecordTime = ""
-        self.RecordPrice = 0
+        self.BidderPrice = 0
+        self.BidderName = ""
         self.ItemID = 0
         self.ItemCount = 0
         self.UserDataLen = 0
@@ -8055,8 +8075,10 @@
         length += 40
         length += 4
         length += 1
+        length += 1
         length += 19
-        length += 2
+        length += 4
+        length += 33
         length += 4
         length += 2
         length += 2
@@ -8069,8 +8091,10 @@
         data = CommFunc.WriteString(data, 40, self.ItemGUID)
         data = CommFunc.WriteDWORD(data, self.FamilyID)
         data = CommFunc.WriteBYTE(data, self.RecordType)
+        data = CommFunc.WriteBYTE(data, self.RecordResult)
         data = CommFunc.WriteString(data, 19, self.RecordTime)
-        data = CommFunc.WriteWORD(data, self.RecordPrice)
+        data = CommFunc.WriteDWORD(data, self.BidderPrice)
+        data = CommFunc.WriteString(data, 33, self.BidderName)
         data = CommFunc.WriteDWORD(data, self.ItemID)
         data = CommFunc.WriteWORD(data, self.ItemCount)
         data = CommFunc.WriteWORD(data, self.UserDataLen)
@@ -8082,8 +8106,10 @@
                                 ItemGUID:%s,
                                 FamilyID:%d,
                                 RecordType:%d,
+                                RecordResult:%d,
                                 RecordTime:%s,
-                                RecordPrice:%d,
+                                BidderPrice:%d,
+                                BidderName:%s,
                                 ItemID:%d,
                                 ItemCount:%d,
                                 UserDataLen:%d,
@@ -8093,8 +8119,10 @@
                                 self.ItemGUID,
                                 self.FamilyID,
                                 self.RecordType,
+                                self.RecordResult,
                                 self.RecordTime,
-                                self.RecordPrice,
+                                self.BidderPrice,
+                                self.BidderName,
                                 self.ItemID,
                                 self.ItemCount,
                                 self.UserDataLen,
@@ -8170,18 +8198,78 @@
 
 
 #------------------------------------------------------
-# B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItem
+# B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItemInfo
 
 class  tagGCRefreshAuctionItem(Structure):
-    Head = tagHead()
     ItemGUID = ""    #(char ItemGUID[40])
-    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
-    ItemID = 0    #(DWORD ItemID)
-    ItemCount = 0    #(WORD ItemCount)
-    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
-    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
-    UserDataLen = 0    #(WORD UserDataLen)
-    UserData = ""    #(String UserData)//自定义数据
+    AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
+    AddTime = ""    #(char AddTime[19])//上架时间
+    BidderID = 0    #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID    
+    BidderPrice = 0    #(DWORD BidderPrice)//最高竞拍价格
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
+        self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
+        self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.ItemGUID = ""
+        self.AuctionType = 0
+        self.AddTime = ""
+        self.BidderID = 0
+        self.BidderPrice = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 40
+        length += 1
+        length += 19
+        length += 4
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, 40, self.ItemGUID)
+        data = CommFunc.WriteBYTE(data, self.AuctionType)
+        data = CommFunc.WriteString(data, 19, self.AddTime)
+        data = CommFunc.WriteDWORD(data, self.BidderID)
+        data = CommFunc.WriteDWORD(data, self.BidderPrice)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                ItemGUID:%s,
+                                AuctionType:%d,
+                                AddTime:%s,
+                                BidderID:%d,
+                                BidderPrice:%d
+                                '''\
+                                %(
+                                self.ItemGUID,
+                                self.AuctionType,
+                                self.AddTime,
+                                self.BidderID,
+                                self.BidderPrice
+                                )
+        return DumpString
+
+
+class  tagGCRefreshAuctionItemInfo(Structure):
+    Head = tagHead()
+    RefreshCount = 0    #(BYTE RefreshCount)
+    RefreshAuctionItemList = list()    #(vector<tagGCRefreshAuctionItem> RefreshAuctionItemList)
     data = None
 
     def __init__(self):
@@ -8193,14 +8281,11 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
-        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
-        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
-        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
+        self.RefreshCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.RefreshCount):
+            temRefreshAuctionItemList = tagGCRefreshAuctionItem()
+            _pos = temRefreshAuctionItemList.ReadData(_lpData, _pos)
+            self.RefreshAuctionItemList.append(temRefreshAuctionItemList)
         return _pos
 
     def Clear(self):
@@ -8208,71 +8293,43 @@
         self.Head.Clear()
         self.Head.Cmd = 0xB5
         self.Head.SubCmd = 0x08
-        self.ItemGUID = ""
-        self.FamilyID = 0
-        self.ItemID = 0
-        self.ItemCount = 0
-        self.AddTime = ""
-        self.BidderPrice = 0
-        self.UserDataLen = 0
-        self.UserData = ""
+        self.RefreshCount = 0
+        self.RefreshAuctionItemList = list()
         return
 
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
-        length += 40
-        length += 4
-        length += 4
-        length += 2
-        length += 19
-        length += 2
-        length += 2
-        length += len(self.UserData)
+        length += 1
+        for i in range(self.RefreshCount):
+            length += self.RefreshAuctionItemList[i].GetLength()
 
         return length
 
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteString(data, 40, self.ItemGUID)
-        data = CommFunc.WriteDWORD(data, self.FamilyID)
-        data = CommFunc.WriteDWORD(data, self.ItemID)
-        data = CommFunc.WriteWORD(data, self.ItemCount)
-        data = CommFunc.WriteString(data, 19, self.AddTime)
-        data = CommFunc.WriteWORD(data, self.BidderPrice)
-        data = CommFunc.WriteWORD(data, self.UserDataLen)
-        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
+        data = CommFunc.WriteBYTE(data, self.RefreshCount)
+        for i in range(self.RefreshCount):
+            data = CommFunc.WriteString(data, self.RefreshAuctionItemList[i].GetLength(), self.RefreshAuctionItemList[i].GetBuffer())
         return data
 
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
-                                ItemGUID:%s,
-                                FamilyID:%d,
-                                ItemID:%d,
-                                ItemCount:%d,
-                                AddTime:%s,
-                                BidderPrice:%d,
-                                UserDataLen:%d,
-                                UserData:%s
+                                RefreshCount:%d,
+                                RefreshAuctionItemList:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
-                                self.ItemGUID,
-                                self.FamilyID,
-                                self.ItemID,
-                                self.ItemCount,
-                                self.AddTime,
-                                self.BidderPrice,
-                                self.UserDataLen,
-                                self.UserData
+                                self.RefreshCount,
+                                "..."
                                 )
         return DumpString
 
 
-m_NAtagGCRefreshAuctionItem=tagGCRefreshAuctionItem()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItem.Head.Cmd,m_NAtagGCRefreshAuctionItem.Head.SubCmd))] = m_NAtagGCRefreshAuctionItem
+m_NAtagGCRefreshAuctionItemInfo=tagGCRefreshAuctionItemInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItemInfo.Head.Cmd,m_NAtagGCRefreshAuctionItemInfo.Head.SubCmd))] = m_NAtagGCRefreshAuctionItemInfo
 
 
 #------------------------------------------------------
@@ -30548,6 +30605,70 @@
 
 
 #------------------------------------------------------
+#B4 14 根据类型来决定移动的方式 #tagMCMoveByType
+
+class  tagMCMoveByType(Structure):
+    _pack_ = 1
+    _fields_ = [
+                  ("Cmd", c_ubyte),
+                  ("SubCmd", c_ubyte),
+                  ("ID", c_int),    #玩家ID
+                  ("PosX", c_ushort),    # 目标X
+                  ("PosY", c_ushort),    # 目标Y
+                  ("MoveType", c_ubyte),    #移动方式
+                  ]
+
+    def __init__(self):
+        self.Clear()
+        self.Cmd = 0xB4
+        self.SubCmd = 0x14
+        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 = 0xB4
+        self.SubCmd = 0x14
+        self.ID = 0
+        self.PosX = 0
+        self.PosY = 0
+        self.MoveType = 0
+        return
+
+    def GetLength(self):
+        return sizeof(tagMCMoveByType)
+
+    def GetBuffer(self):
+        return string_at(addressof(self), self.GetLength())
+
+    def OutputString(self):
+        DumpString = '''//B4 14 根据类型来决定移动的方式 //tagMCMoveByType:
+                                Cmd:%s,
+                                SubCmd:%s,
+                                ID:%d,
+                                PosX:%d,
+                                PosY:%d,
+                                MoveType:%d
+                                '''\
+                                %(
+                                self.Cmd,
+                                self.SubCmd,
+                                self.ID,
+                                self.PosX,
+                                self.PosY,
+                                self.MoveType
+                                )
+        return DumpString
+
+
+m_NAtagMCMoveByType=tagMCMoveByType()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMoveByType.Cmd,m_NAtagMCMoveByType.SubCmd))] = m_NAtagMCMoveByType
+
+
+#------------------------------------------------------
 #B4 07 被动技能页选择(功法) # tagMCPassivePage
 
 class  tagMCPassivePage(Structure):

--
Gitblit v1.8.0