From bff1837b1f805a35dc99ca4439f27112a986747f Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期六, 13 十月 2018 17:12:12 +0800
Subject: [PATCH] 4075 【后端】限时抢购开发-预约通知修改
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py | 38 ++++++++----
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 58 +++++++++++++++++-
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 58 +++++++++++++++++-
3 files changed, 131 insertions(+), 23 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 51d6d86..c9d94d8 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -20179,10 +20179,50 @@
#------------------------------------------------------
# AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo
+class tagMCFlashSaleAppointmentState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GoodsMark", c_int), # 商品标识
+ ("State", 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.GoodsMark = 0
+ self.State = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFlashSaleAppointmentState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 18 限时抢购活动玩家预约信息 //tagMCFlashSaleAppointmentInfo:
+ GoodsMark:%d,
+ State:%d
+ '''\
+ %(
+ self.GoodsMark,
+ self.State
+ )
+ return DumpString
+
+
class tagMCFlashSaleAppointmentInfo(Structure):
Head = tagHead()
+ IsAll = 0 #(BYTE IsAll)// 是否全部
GoodsCount = 0 #(WORD GoodsCount)// 商品数
- GoodsList = list() #(vector<DWORD> GoodsList)// 预约的商品
+ GoodsList = list() #(vector<tagMCFlashSaleAppointmentState> GoodsList)// 预约的商品
data = None
def __init__(self):
@@ -20194,10 +20234,12 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
+ self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.GoodsCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.GoodsCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.GoodsList.append(value)
+ temGoodsList = tagMCFlashSaleAppointmentState()
+ _pos = temGoodsList.ReadData(_lpData, _pos)
+ self.GoodsList.append(temGoodsList)
return _pos
def Clear(self):
@@ -20205,6 +20247,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x18
+ self.IsAll = 0
self.GoodsCount = 0
self.GoodsList = list()
return
@@ -20212,27 +20255,32 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 2
- length += 4 * self.GoodsCount
+ for i in range(self.GoodsCount):
+ length += self.GoodsList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IsAll)
data = CommFunc.WriteWORD(data, self.GoodsCount)
for i in range(self.GoodsCount):
- data = CommFunc.WriteDWORD(data, self.GoodsList[i])
+ data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
+ IsAll:%d,
GoodsCount:%d,
GoodsList:%s
'''\
%(
self.Head.OutputString(),
+ self.IsAll,
self.GoodsCount,
"..."
)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 51d6d86..c9d94d8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -20179,10 +20179,50 @@
#------------------------------------------------------
# AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo
+class tagMCFlashSaleAppointmentState(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("GoodsMark", c_int), # 商品标识
+ ("State", 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.GoodsMark = 0
+ self.State = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFlashSaleAppointmentState)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 18 限时抢购活动玩家预约信息 //tagMCFlashSaleAppointmentInfo:
+ GoodsMark:%d,
+ State:%d
+ '''\
+ %(
+ self.GoodsMark,
+ self.State
+ )
+ return DumpString
+
+
class tagMCFlashSaleAppointmentInfo(Structure):
Head = tagHead()
+ IsAll = 0 #(BYTE IsAll)// 是否全部
GoodsCount = 0 #(WORD GoodsCount)// 商品数
- GoodsList = list() #(vector<DWORD> GoodsList)// 预约的商品
+ GoodsList = list() #(vector<tagMCFlashSaleAppointmentState> GoodsList)// 预约的商品
data = None
def __init__(self):
@@ -20194,10 +20234,12 @@
def ReadData(self, _lpData, _pos=0, _Len=0):
self.Clear()
_pos = self.Head.ReadData(_lpData, _pos)
+ self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.GoodsCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
for i in range(self.GoodsCount):
- value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
- self.GoodsList.append(value)
+ temGoodsList = tagMCFlashSaleAppointmentState()
+ _pos = temGoodsList.ReadData(_lpData, _pos)
+ self.GoodsList.append(temGoodsList)
return _pos
def Clear(self):
@@ -20205,6 +20247,7 @@
self.Head.Clear()
self.Head.Cmd = 0xAA
self.Head.SubCmd = 0x18
+ self.IsAll = 0
self.GoodsCount = 0
self.GoodsList = list()
return
@@ -20212,27 +20255,32 @@
def GetLength(self):
length = 0
length += self.Head.GetLength()
+ length += 1
length += 2
- length += 4 * self.GoodsCount
+ for i in range(self.GoodsCount):
+ length += self.GoodsList[i].GetLength()
return length
def GetBuffer(self):
data = ''
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.IsAll)
data = CommFunc.WriteWORD(data, self.GoodsCount)
for i in range(self.GoodsCount):
- data = CommFunc.WriteDWORD(data, self.GoodsList[i])
+ data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
return data
def OutputString(self):
DumpString = '''
Head:%s,
+ IsAll:%d,
GoodsCount:%d,
GoodsList:%s
'''\
%(
self.Head.OutputString(),
+ self.IsAll,
self.GoodsCount,
"..."
)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py
index 8b8b8dc..c067a93 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashSale.py
@@ -226,11 +226,11 @@
if not cfgID:
return
PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashSaleYY % goodsID, packData.State, ChConfig.Def_PDictType_FlashSale)
- Sync_FlashSaleAppointmentInfo(curPlayer)
+ Sync_FlashSaleAppointmentInfo(curPlayer, goodsID)
return
-def Sync_FlashSaleAppointmentInfo(curPlayer):
+def Sync_FlashSaleAppointmentInfo(curPlayer, goodsID=0):
##通知限时抢购预约情况
actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashSale, {})
if not actInfo:
@@ -243,17 +243,29 @@
return
packInfo = ChPyNetSendPack.tagMCFlashSaleAppointmentInfo()
packInfo.GoodsList = []
- shopTypeList = flashSaleIpyData.GetShopTypeList()
- for dayIndex, shopList in enumerate(shopTypeList):
- for timeIndex, shopType in enumerate(shopList):
- shopItemIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType}, True, True)
- if not shopItemIpyDataList:
- continue
- for i in xrange(len(shopItemIpyDataList)):
- goodsMark = dayIndex * 10000 + timeIndex * 100 + i #商品标识
- isAppointment = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleYY % goodsMark, 0, ChConfig.Def_PDictType_FlashSale)
- if isAppointment:
- packInfo.GoodsList.append(goodsMark)
+ if goodsID == 0:
+ packInfo.IsAll = 1
+ shopTypeList = flashSaleIpyData.GetShopTypeList()
+ for dayIndex, shopList in enumerate(shopTypeList):
+ for timeIndex, shopType in enumerate(shopList):
+ shopItemIpyDataList = IpyGameDataPY.GetIpyGameDataByCondition("Store", {"ShopType":shopType}, True, True)
+ if not shopItemIpyDataList:
+ continue
+ for i in xrange(len(shopItemIpyDataList)):
+ goodsMark = dayIndex * 10000 + timeIndex * 100 + i #商品标识
+ isAppointment = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleYY % goodsMark, 0, ChConfig.Def_PDictType_FlashSale)
+ if isAppointment:
+ appoinetmentPack = ChPyNetSendPack.tagMCFlashSaleAppointmentState()
+ appoinetmentPack.GoodsMark = goodsMark
+ appoinetmentPack.State = 1
+ packInfo.GoodsList.append(appoinetmentPack)
+ else:
+ packInfo.IsAll = 0
+ isAppointment = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashSaleYY % goodsID, 0, ChConfig.Def_PDictType_FlashSale)
+ appoinetmentPack = ChPyNetSendPack.tagMCFlashSaleAppointmentState()
+ appoinetmentPack.GoodsMark = goodsID
+ appoinetmentPack.State = isAppointment
+ packInfo.GoodsList.append(appoinetmentPack)
packInfo.GoodsCount = len(packInfo.GoodsList)
NetPackCommon.SendFakePack(curPlayer, packInfo)
return
--
Gitblit v1.8.0