6373 【后端】【2.0】删除无用功能代码、封包、配置(页游特惠活动相关)
| | |
| | | PacketSubCMD_1=0x09
|
| | | PacketCallFunc_1=OnFamilyStoreDel
|
| | |
|
| | | ;特惠活动
|
| | | [GameWorldActionTeHui]
|
| | | ScriptName = GameWorldLogic\GameWorldActionTeHui.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 1
|
| | |
|
| | | PacketCMD_1=0xAD
|
| | | PacketSubCMD_1=0x01
|
| | | PacketCallFunc_1=ClientRequestTeHuiActivity
|
| | |
|
| | |
|
| | | ;邮件(补偿)
|
| | | [Compensation]
|
| | | ScriptName = Player\PlayerCompensation
|
| | |
| | | ShareDefine.Def_BT_ZhuXianTower : 100, #诛仙塔榜
|
| | | ShareDefine.Def_BT_HighLadder : 1000, #玩家天梯竞技场排行
|
| | | ShareDefine.Def_BT_HighLadder_Yester : 1000, #玩家天梯竞技场昨日排行
|
| | | ShareDefine.Def_BT_RechargeTeHuiLast : 20, #充值特惠活动排行榜-上一期记录 |
| | | ShareDefine.Def_BT_RechargeTeHui : 20, #充值特惠活动排行榜-当前期记录 |
| | | |
| | | ShareDefine.Def_BT_CostTeHui : 10, #消费特惠排行榜
|
| | | ShareDefine.Def_BT_CostTeHuiLast : 10, #消费特惠排行榜上一期
|
| | | }
|
| | |
|
| | | #排行榜保存类型(和BillboardType匹配), 默认保存, 如果不保存,可配置进去
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AD 01 查询特惠活动信息 #tagCGQueryTeHuiActivetyInfo
|
| | |
|
| | | class tagCGQueryTeHuiActivetyInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActivityType", c_ubyte), # 活动类型
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | 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 = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | self.ActivityType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGQueryTeHuiActivetyInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AD 01 查询特惠活动信息 //tagCGQueryTeHuiActivetyInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActivityType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActivityType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryTeHuiActivetyInfo=tagCGQueryTeHuiActivetyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeHuiActivetyInfo.Cmd,m_NAtagCGQueryTeHuiActivetyInfo.SubCmd))] = m_NAtagCGQueryTeHuiActivetyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AE 07 运镖时间倒计时结束 #tagCGTruckTimeEnd
|
| | |
|
| | | class tagCGTruckTimeEnd(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 08 购买自定义商店物品 #tagCMBuyShopItem
|
| | |
|
| | | class tagCMBuyShopItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ("ItemShopIndex", c_ushort), |
| | | ("BuyCount", c_ushort), #购买数量
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x08
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x08
|
| | | self.ShopID = 0
|
| | | self.ItemShopIndex = 0
|
| | | self.BuyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMBuyShopItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 08 购买自定义商店物品 //tagCMBuyShopItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d,
|
| | | ItemShopIndex:%d,
|
| | | BuyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID,
|
| | | self.ItemShopIndex,
|
| | | self.BuyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMBuyShopItem=tagCMBuyShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyShopItem.Cmd,m_NAtagCMBuyShopItem.SubCmd))] = m_NAtagCMBuyShopItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 10 清除副本CD#tagCMClearFBCD
|
| | |
|
| | | class tagCMClearFBCD(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 07 请求自定义商店物品信息 #tagCMQueryShopItem
|
| | |
|
| | | class tagCMQueryShopItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x07
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x07
|
| | | self.ShopID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMQueryShopItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 07 请求自定义商店物品信息 //tagCMQueryShopItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMQueryShopItem=tagCMQueryShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryShopItem.Cmd,m_NAtagCMQueryShopItem.SubCmd))] = m_NAtagCMQueryShopItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 06 快速完成任务#tagCMQuickFinishMission
|
| | |
|
| | | class tagCMQuickFinishMission(Structure):
|
| | |
| | |
|
| | | m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem
|
| | |
|
| | | class tagCMRefreshShopItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x14
|
| | | self.ShopID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRefreshShopItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 14 刷新定时神秘商店物品//tagCMRefreshShopItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRefreshShopItem=tagCMRefreshShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshShopItem.Cmd,m_NAtagCMRefreshShopItem.SubCmd))] = m_NAtagCMRefreshShopItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 02 领取升阶功能特惠奖励 #tagCMGetClassUPDayAward
|
| | |
|
| | | class tagCMGetClassUPDayAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayType", c_ubyte), # 升阶日类型
|
| | | ("ClassLV", c_ubyte), # 阶级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x02
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x02
|
| | | self.DayType = 0
|
| | | self.ClassLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetClassUPDayAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 02 领取升阶功能特惠奖励 //tagCMGetClassUPDayAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayType:%d,
|
| | | ClassLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayType,
|
| | | self.ClassLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetClassUPDayAward=tagCMGetClassUPDayAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetClassUPDayAward.Cmd,m_NAtagCMGetClassUPDayAward.SubCmd))] = m_NAtagCMGetClassUPDayAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 04 领取消费奖励 #tagCMGetCostAward
|
| | |
|
| | | class tagCMGetCostAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("Index", c_ubyte), # 索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | self.ActionID = 0
|
| | | self.Index = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetCostAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 04 领取消费奖励 //tagCMGetCostAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | Index:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.Index
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetCostAward=tagCMGetCostAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCostAward.Cmd,m_NAtagCMGetCostAward.SubCmd))] = m_NAtagCMGetCostAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 03 领取充值特惠奖励 #tagCMGetRechargeTeHuiAward
|
| | |
|
| | | class tagCMGetRechargeTeHuiAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("Index", c_ubyte), # 规则索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | self.ActionID = 0
|
| | | self.Index = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetRechargeTeHuiAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 03 领取充值特惠奖励 //tagCMGetRechargeTeHuiAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | Index:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.Index
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetRechargeTeHuiAward=tagCMGetRechargeTeHuiAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetRechargeTeHuiAward.Cmd,m_NAtagCMGetRechargeTeHuiAward.SubCmd))] = m_NAtagCMGetRechargeTeHuiAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 07 定时商店刷新倒计时 #tagGCShopRefreshTimeList
|
| | |
|
| | | class tagGCShopRefreshTime(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), # 商店ID
|
| | | ("RemainSecond", c_int), # 多少秒后刷新
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA9
|
| | | self.SubCmd = 0x07
|
| | | 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 = 0xA9
|
| | | self.SubCmd = 0x07
|
| | | self.ShopID = 0
|
| | | self.RemainSecond = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCShopRefreshTime)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A9 07 定时商店刷新倒计时 //tagGCShopRefreshTimeList:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d,
|
| | | RemainSecond:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID,
|
| | | self.RemainSecond
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCShopRefreshTimeList(Structure):
|
| | | Head = tagHead()
|
| | | ShopCnt = 0 #(BYTE ShopCnt)//商店信息个数
|
| | | ShopTimeInfoList = list() #(vector<tagGCShopRefreshTime> ShopTimeInfoList)//商店信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ShopCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ShopCnt):
|
| | | temShopTimeInfoList = tagGCShopRefreshTime()
|
| | | _pos = temShopTimeInfoList.ReadData(_lpData, _pos)
|
| | | self.ShopTimeInfoList.append(temShopTimeInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x07
|
| | | self.ShopCnt = 0
|
| | | self.ShopTimeInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.ShopCnt):
|
| | | length += self.ShopTimeInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ShopCnt)
|
| | | for i in range(self.ShopCnt):
|
| | | data = CommFunc.WriteString(data, self.ShopTimeInfoList[i].GetLength(), self.ShopTimeInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ShopCnt:%d,
|
| | | ShopTimeInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ShopCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCShopRefreshTimeList=tagGCShopRefreshTimeList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCShopRefreshTimeList.Head.Cmd,m_NAtagGCShopRefreshTimeList.Head.SubCmd))] = m_NAtagGCShopRefreshTimeList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
|
| | |
|
| | | class tagGCStoreServerBuyCnt(Structure):
|
| | |
| | |
|
| | | m_NAtagGCXMZZFightInfo=tagGCXMZZFightInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXMZZFightInfo.Head.Cmd,m_NAtagGCXMZZFightInfo.Head.SubCmd))] = m_NAtagGCXMZZFightInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AD 01 特惠活动信息 #tagGCTeHuiActivityInfoList
|
| | |
|
| | | class tagGCTeHuiActivityInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActivityType", c_ubyte), # 活动类型
|
| | | ("ActivityValue", c_int), # 活动值
|
| | | ("StartDate", c_int), # 开始时间time
|
| | | ("EndDate", c_int), # 结束时间time
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | 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 = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | self.ActivityType = 0
|
| | | self.ActivityValue = 0
|
| | | self.StartDate = 0
|
| | | self.EndDate = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCTeHuiActivityInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AD 01 特惠活动信息 //tagGCTeHuiActivityInfoList:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActivityType:%d,
|
| | | ActivityValue:%d,
|
| | | StartDate:%d,
|
| | | EndDate:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActivityType,
|
| | | self.ActivityValue,
|
| | | self.StartDate,
|
| | | self.EndDate
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCTeHuiActivityInfoList(Structure):
|
| | | Head = tagHead()
|
| | | ActivityCount = 0 #(BYTE ActivityCount)//活动信息个数
|
| | | ActivityInfoList = list() #(vector<tagGCTeHuiActivityInfo> ActivityInfoList)//活动信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAD
|
| | | self.Head.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActivityCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityCount):
|
| | | temActivityInfoList = tagGCTeHuiActivityInfo()
|
| | | _pos = temActivityInfoList.ReadData(_lpData, _pos)
|
| | | self.ActivityInfoList.append(temActivityInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAD
|
| | | self.Head.SubCmd = 0x01
|
| | | self.ActivityCount = 0
|
| | | self.ActivityInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.ActivityCount):
|
| | | length += self.ActivityInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityCount)
|
| | | for i in range(self.ActivityCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityInfoList[i].GetLength(), self.ActivityInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActivityCount:%d,
|
| | | ActivityInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActivityCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCTeHuiActivityInfoList=tagGCTeHuiActivityInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeHuiActivityInfoList.Head.Cmd,m_NAtagGCTeHuiActivityInfoList.Head.SubCmd))] = m_NAtagGCTeHuiActivityInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 04 通知商店限购物品已购买次数信息 # tagMCShopItemBuyCntInfoList
|
| | |
|
| | | class tagMCShopItemBuyCntInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ShopID", c_int), |
| | | ("ItemShopIndex", c_ushort), |
| | | ("ItemID", c_int), |
| | | ("BuyCnt", c_int), # 个人已购买数
|
| | | ("ServerBuyCnt", 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.ShopID = 0
|
| | | self.ItemShopIndex = 0
|
| | | self.ItemID = 0
|
| | | self.BuyCnt = 0
|
| | | self.ServerBuyCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCShopItemBuyCntInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 04 通知商店限购物品已购买次数信息 // tagMCShopItemBuyCntInfoList:
|
| | | ShopID:%d,
|
| | | ItemShopIndex:%d,
|
| | | ItemID:%d,
|
| | | BuyCnt:%d,
|
| | | ServerBuyCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ShopID,
|
| | | self.ItemShopIndex,
|
| | | self.ItemID,
|
| | | self.BuyCnt,
|
| | | self.ServerBuyCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCShopItemBuyCntInfoList(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//通知个数
|
| | | BuyCntList = list() #(vector<tagMCShopItemBuyCntInfo> BuyCntList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temBuyCntList = tagMCShopItemBuyCntInfo()
|
| | | _pos = temBuyCntList.ReadData(_lpData, _pos)
|
| | | self.BuyCntList.append(temBuyCntList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x04
|
| | | self.Count = 0
|
| | | self.BuyCntList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.BuyCntList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | BuyCntList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShopItemBuyCntInfoList=tagMCShopItemBuyCntInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemBuyCntInfoList.Head.Cmd,m_NAtagMCShopItemBuyCntInfoList.Head.SubCmd))] = m_NAtagMCShopItemBuyCntInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
|
| | |
|
| | | class tagMCShopItemDayBuyCnt(Structure):
|
| | |
| | |
|
| | | m_NAtagMCShopItemDayBuyCntInfo=tagMCShopItemDayBuyCntInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemDayBuyCntInfo.Head.Cmd,m_NAtagMCShopItemDayBuyCntInfo.Head.SubCmd))] = m_NAtagMCShopItemDayBuyCntInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 03 通知自定义商店物品信息 #tagMCShopItemInfoList
|
| | |
|
| | | class tagMCShopItemInfo(Structure):
|
| | | ShopID = 0 #(DWORD ShopID)
|
| | | ItemShopIndex = 0 #(WORD ItemShopIndex)
|
| | | DataSize = 0 #(DWORD DataSize)
|
| | | ItemList = "" #(String ItemList)//物品列表[[物品ID,数量,是否绑定,是否定制]]
|
| | | PriceType = 0 #(BYTE PriceType)
|
| | | Price = 0 #(DWORD Price)
|
| | | OriginalPrice = 0 #(DWORD OriginalPrice)// 原价
|
| | | PlayerLVLimit = 0 #(WORD PlayerLVLimit)// 购买等级限制
|
| | | FamilyLVLimit = 0 #(BYTE FamilyLVLimit)// 购买战盟等级限制
|
| | | MaxBuyCnt = 0 #(DWORD MaxBuyCnt)// 个人限购数
|
| | | ServerMaxBuyCnt = 0 #(DWORD ServerMaxBuyCnt)// 全服限购数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ShopID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ItemShopIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ItemList,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
|
| | | self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Price,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.OriginalPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerLVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.FamilyLVLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerMaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ShopID = 0
|
| | | self.ItemShopIndex = 0
|
| | | self.DataSize = 0
|
| | | self.ItemList = ""
|
| | | self.PriceType = 0
|
| | | self.Price = 0
|
| | | self.OriginalPrice = 0
|
| | | self.PlayerLVLimit = 0
|
| | | self.FamilyLVLimit = 0
|
| | | self.MaxBuyCnt = 0
|
| | | self.ServerMaxBuyCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += len(self.ItemList)
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.ShopID)
|
| | | data = CommFunc.WriteWORD(data, self.ItemShopIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.DataSize)
|
| | | data = CommFunc.WriteString(data, self.DataSize, self.ItemList)
|
| | | data = CommFunc.WriteBYTE(data, self.PriceType)
|
| | | data = CommFunc.WriteDWORD(data, self.Price)
|
| | | data = CommFunc.WriteDWORD(data, self.OriginalPrice)
|
| | | data = CommFunc.WriteWORD(data, self.PlayerLVLimit)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyLVLimit)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxBuyCnt)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerMaxBuyCnt)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ShopID:%d,
|
| | | ItemShopIndex:%d,
|
| | | DataSize:%d,
|
| | | ItemList:%s,
|
| | | PriceType:%d,
|
| | | Price:%d,
|
| | | OriginalPrice:%d,
|
| | | PlayerLVLimit:%d,
|
| | | FamilyLVLimit:%d,
|
| | | MaxBuyCnt:%d,
|
| | | ServerMaxBuyCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ShopID,
|
| | | self.ItemShopIndex,
|
| | | self.DataSize,
|
| | | self.ItemList,
|
| | | self.PriceType,
|
| | | self.Price,
|
| | | self.OriginalPrice,
|
| | | self.PlayerLVLimit,
|
| | | self.FamilyLVLimit,
|
| | | self.MaxBuyCnt,
|
| | | self.ServerMaxBuyCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCShopItemInfoList(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//通知个数
|
| | | ShopItemList = list() #(vector<tagMCShopItemInfo> ShopItemList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temShopItemList = tagMCShopItemInfo()
|
| | | _pos = temShopItemList.ReadData(_lpData, _pos)
|
| | | self.ShopItemList.append(temShopItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x03
|
| | | self.Count = 0
|
| | | self.ShopItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ShopItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ShopItemList[i].GetLength(), self.ShopItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ShopItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShopItemInfoList=tagMCShopItemInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemInfoList.Head.Cmd,m_NAtagMCShopItemInfoList.Head.SubCmd))] = m_NAtagMCShopItemInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 05 通知神秘商店刷新次数 #tagMCShopRefreshCnt
|
| | |
|
| | | class tagMCShopRefreshCnt(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), #商店ID
|
| | | ("RefreshCnt", c_ushort), #已手动刷新次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA8
|
| | | self.SubCmd = 0x05
|
| | | 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 = 0xA8
|
| | | self.SubCmd = 0x05
|
| | | self.ShopID = 0
|
| | | self.RefreshCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCShopRefreshCnt)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 05 通知神秘商店刷新次数 //tagMCShopRefreshCnt:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d,
|
| | | RefreshCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID,
|
| | | self.RefreshCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShopRefreshCnt=tagMCShopRefreshCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopRefreshCnt.Cmd,m_NAtagMCShopRefreshCnt.SubCmd))] = m_NAtagMCShopRefreshCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCAllPeoplePartyInfo=tagMCAllPeoplePartyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllPeoplePartyInfo.Head.Cmd,m_NAtagMCAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCAllPeoplePartyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 03 升阶功能特惠奖励记录 #tagMCClassUPDayAwardRecordList
|
| | |
|
| | | class tagMCClassUPDayAwardRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayType", c_ubyte), # 奖励日类型
|
| | | ("Record", c_int), # 奖励记录
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | self.DayType = 0
|
| | | self.Record = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCClassUPDayAwardRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 03 升阶功能特惠奖励记录 //tagMCClassUPDayAwardRecordList:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayType:%d,
|
| | | Record:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayType,
|
| | | self.Record
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCClassUPDayAwardRecordList(Structure):
|
| | | Head = tagHead()
|
| | | RecordCount = 0 #(BYTE RecordCount)//记录个数
|
| | | RecordInfoList = list() #(vector<tagMCClassUPDayAwardRecord> RecordInfoList)//记录列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RecordCount):
|
| | | temRecordInfoList = tagMCClassUPDayAwardRecord()
|
| | | _pos = temRecordInfoList.ReadData(_lpData, _pos)
|
| | | self.RecordInfoList.append(temRecordInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x03
|
| | | self.RecordCount = 0
|
| | | self.RecordInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.RecordCount):
|
| | | length += self.RecordInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.RecordCount)
|
| | | for i in range(self.RecordCount):
|
| | | data = CommFunc.WriteString(data, self.RecordInfoList[i].GetLength(), self.RecordInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RecordCount:%d,
|
| | | RecordInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RecordCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCClassUPDayAwardRecordList=tagMCClassUPDayAwardRecordList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClassUPDayAwardRecordList.Head.Cmd,m_NAtagMCClassUPDayAwardRecordList.Head.SubCmd))] = m_NAtagMCClassUPDayAwardRecordList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 06 消费奖励信息 #tagMCCostProfitInfo
|
| | |
|
| | | class tagMCCostProfitInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("TotalCost", c_int), # 总消费
|
| | | ("AwardState", c_int), # 奖励领取状态
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x06
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x06
|
| | | self.ActionID = 0
|
| | | self.TotalCost = 0
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCostProfitInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 06 消费奖励信息 //tagMCCostProfitInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | TotalCost:%d,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.TotalCost,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCostProfitInfo=tagMCCostProfitInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostProfitInfo.Cmd,m_NAtagMCCostProfitInfo.SubCmd))] = m_NAtagMCCostProfitInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 07 消费排行特惠信息 #tagMCCostRankTeHuiInfo
|
| | |
|
| | | class tagMCCostRankTeHuiInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("TotalCost", c_int), # 总累计消费钻石
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x07
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x07
|
| | | self.ActionID = 0
|
| | | self.TotalCost = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCostRankTeHuiInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 07 消费排行特惠信息 //tagMCCostRankTeHuiInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | TotalCost:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.TotalCost
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCostRankTeHuiInfo=tagMCCostRankTeHuiInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRankTeHuiInfo.Cmd,m_NAtagMCCostRankTeHuiInfo.SubCmd))] = m_NAtagMCCostRankTeHuiInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo
|
| | |
|
| | | class tagMCRechargeRankTeHuiInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("TotalGold", c_int), # 总累计充值元宝
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x05
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x05
|
| | | self.ActionID = 0
|
| | | self.TotalGold = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCRechargeRankTeHuiInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 05 充值排行特惠信息 //tagMCRechargeRankTeHuiInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | TotalGold:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.TotalGold
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRechargeRankTeHuiInfo=tagMCRechargeRankTeHuiInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRankTeHuiInfo.Cmd,m_NAtagMCRechargeRankTeHuiInfo.SubCmd))] = m_NAtagMCRechargeRankTeHuiInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 04 充值特惠信息 #tagMCRechargeTeHuiInfoList
|
| | |
|
| | | class tagMCRechargeTeHuiInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("GotCnt", c_ubyte), # 已领取次数
|
| | | ("CanGetCnt", c_ubyte), # 当前可领取次数
|
| | | ("CurTotalGold", c_int), # 当前规则累计充值元宝-仅针对累充规则
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | self.GotCnt = 0
|
| | | self.CanGetCnt = 0
|
| | | self.CurTotalGold = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCRechargeTeHuiInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 04 充值特惠信息 //tagMCRechargeTeHuiInfoList:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | GotCnt:%d,
|
| | | CanGetCnt:%d,
|
| | | CurTotalGold:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.GotCnt,
|
| | | self.CanGetCnt,
|
| | | self.CurTotalGold
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCRechargeTeHuiInfoList(Structure):
|
| | | Head = tagHead()
|
| | | ActionID = 0 #(DWORD ActionID)// 活动ID
|
| | | TotalGold = 0 #(DWORD TotalGold)// 总累计充值元宝
|
| | | InfoCnt = 0 #(BYTE InfoCnt)// 信息个数
|
| | | InfoList = list() #(vector<tagMCRechargeTeHuiInfo> InfoList)// 信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActionID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TotalGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.InfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.InfoCnt):
|
| | | temInfoList = tagMCRechargeTeHuiInfo()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x04
|
| | | self.ActionID = 0
|
| | | self.TotalGold = 0
|
| | | self.InfoCnt = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.InfoCnt):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.ActionID)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalGold)
|
| | | data = CommFunc.WriteBYTE(data, self.InfoCnt)
|
| | | for i in range(self.InfoCnt):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActionID:%d,
|
| | | TotalGold:%d,
|
| | | InfoCnt:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActionID,
|
| | | self.TotalGold,
|
| | | self.InfoCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRechargeTeHuiInfoList=tagMCRechargeTeHuiInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeTeHuiInfoList.Head.Cmd,m_NAtagMCRechargeTeHuiInfoList.Head.SubCmd))] = m_NAtagMCRechargeTeHuiInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | SendEventPack("CompensationEntire", dataDict)
|
| | | return
|
| | |
|
| | | ## 发送充值排行榜特惠活动奖励邮件记录流向
|
| | | # @param curPlayerID: 玩家ID
|
| | | # @param GUID: |
| | | # @param actionID: 活动ID
|
| | | # @param actionValue: 活动编号
|
| | | # @param order: 奖励排名
|
| | | # @param rewardItemList: 奖励物品列表
|
| | | # @return None
|
| | | def DR_SendRechareRankTeHuiRewardMail(curPlayerID, GUID, actionID, actionValue, order, rewardItemList):
|
| | | |
| | | dataDict = {'PlayerID':curPlayerID, 'GUID':GUID, 'ActionID':actionID, 'ActionValue':actionValue,
|
| | | 'Order':order, 'ItemList':rewardItemList}
|
| | |
|
| | | #发送封包
|
| | | SendEventPack("SendRechareRankTeHuiRewardMail", dataDict)
|
| | | return
|
| | |
|
| | | ## 发送消费排行榜特惠活动奖励邮件记录流向
|
| | | # @param curPlayerID: 玩家ID
|
| | | # @param GUID: |
| | | # @param actionID: 活动ID
|
| | | # @param actionValue: 活动编号
|
| | | # @param order: 奖励排名
|
| | | # @param rewardItemList: 奖励物品列表
|
| | | # @return None
|
| | | def DR_SendCostRankTeHuiRewardMail(curPlayerID, GUID, actionID, actionValue, order, rewardItemList):
|
| | | |
| | | dataDict = {'PlayerID':curPlayerID, 'GUID':GUID, 'ActionID':actionID, 'ActionValue':actionValue,
|
| | | 'Order':order, 'ItemList':rewardItemList}
|
| | |
|
| | | #发送封包
|
| | | SendEventPack("SendCostRankTeHuiRewardMail", dataDict)
|
| | | return
|
| | |
|
| | |
| | | import ShareDefine
|
| | | import PlayerBillboard
|
| | | import PlayerUniversalGameRec
|
| | | import GameWorldActionTeHui
|
| | | import GameWorldProcess
|
| | | import GameWorldBoss
|
| | | import GMCommon
|
| | |
| | | # GameWorld.GetHightLadderMgr().ClearAllPlayer()
|
| | | # HighLadder.Sync_HightLadderCanFightPlayer(curPlayer, curPlayer.GetPlayerID())
|
| | | # curPlayer.Sync_HightLadderTopPlayer(3)
|
| | | |
| | | # 清除特惠活动数据
|
| | | GameWorldActionTeHui.OnGMClearTeHui()
|
| | |
|
| | | # 清除Rec
|
| | | delRecTypeList = []
|
| | |
| | | import PlayerGeTui
|
| | | #import PlayerManorWar
|
| | | import GameWorldBoss
|
| | | #import GameWorldActionTeHui
|
| | | #import HighLadder
|
| | | import PlayerCompensation
|
| | | #import GameWorldShopItem
|
| | | import ReadChConfig
|
| | | import EventReport
|
| | | #import ReloadModule
|
| | |
| | | Dispose_DataBase_GMShell(tick)
|
| | | ##处理重开服务器后, 活动继续开启逻辑根据天数
|
| | | #GameWorldActionControl.Dispose_Action_GoOn_ByDay(tick)
|
| | | #定时神秘商店刷新
|
| | | #GameWorldShopItem.Dispose_ShopItemRefresh(tick)
|
| | |
|
| | | #定时向RouteServer发送消息
|
| | | Dispose_SendMsg_RouteServer(tick)
|
| | |
| | | CrossRealmPK.OnGameServerInitOK()
|
| | | #世界boss被杀次数重置
|
| | | #GameWorldBoss.CheckResetBossKilledCntOnServerInit()
|
| | | #GameWorldActionTeHui.OnGameServerInitOK() # 特惠活动初始化
|
| | |
|
| | | __Func_HighPrecisionProcess(tick) # 主动触发一次高精度的调用,确保服务器启动后一些功能活动等的数据会被加载
|
| | |
|
| | |
| | | GameWorldFamilyWar.OnMapServerInitOK()
|
| | | # 领地争夺战
|
| | | #PlayerManorWar.OnMapServerInitOK()
|
| | | |
| | | # 特惠活动
|
| | | #GameWorldActionTeHui.OnMapServerInitOK()
|
| | | |
| | | # 商店信息
|
| | | #GameWorldShopItem.OnMapServerInitOK()
|
| | |
|
| | | # 跨服服务器状态
|
| | | isCrossServerOpen = GameWorld.GetGameWorld().GetDictByKey(ShareDefine.Def_Notify_WorldKey_CrossServerOpen)
|
| | |
| | | import PlayerBourse
|
| | | import PlayerZhuXianBoss
|
| | | import PlayerXMZZ
|
| | | import GameWorldShopItem
|
| | | import PlayerTruck
|
| | | import HighLadder
|
| | | import EventReport
|
| | |
| | | def ViewBillboardRangeByObjID(index, clientData, tick):
|
| | | return
|
| | |
|
| | | ## 更新充值特惠排行榜
|
| | | # @param cmdList
|
| | | # @return None
|
| | | def MapServer_UpdateRechargeRankBillboard(cmdList):
|
| | | playerID, playerName, playerOpInfo, playerJob, playerLV, familyName, actionID, actionNum, updateGold = cmdList
|
| | | # 排行榜上榜限制
|
| | | RechargeRankInfoDict = ReadChConfig.GetEvalChConfig("TeHuiAction_RechargeRank")
|
| | | gameWorld = GameWorld.GetGameWorld()
|
| | | actionNumKey = ShareDefine.Def_Notify_WorldKey_DayAction_RechargeRank
|
| | | curActionNum = gameWorld.GetDictByKey(actionNumKey)
|
| | | curActionID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_DayAction_ID % actionNumKey)
|
| | | GameWorld.DebugLog("MapServer_UpdateRechargeRankBillboard...")
|
| | | GameWorld.DebugLog(" actionID=%s,actionNum=%s,updateGold=%s,curActionID=%s,curActionNum=%s," |
| | | % (actionID, actionNum, updateGold, curActionID, curActionNum), playerID)
|
| | | |
| | | # 非当前活动,不更新
|
| | | if actionNum not in RechargeRankInfoDict or actionNum != curActionNum or actionID != curActionID:
|
| | | GameWorld.DebugLog(" 非当前充值特惠排行榜活动,不更新...", playerID)
|
| | | return
|
| | | |
| | | rechargeRankInfoList = RechargeRankInfoDict[actionNum]
|
| | | if len(rechargeRankInfoList) <= 0:
|
| | | return
|
| | | |
| | | limitGold = rechargeRankInfoList[0] # 限制上榜充值数
|
| | | if updateGold < limitGold:
|
| | | GameWorld.DebugLog(" 未达到最低上榜充值数=%s,不更新..." % limitGold, playerID)
|
| | | return
|
| | | |
| | | #排行榜
|
| | | cmpValue = updateGold
|
| | | isOk = UpdatePlayerBillboard(playerID, playerName, familyName, ShareDefine.Def_BT_RechargeTeHui,
|
| | | playerJob, playerLV, updateGold, cmpValue)
|
| | | GameWorld.DebugLog(" 更新充值特惠排行榜 isOk=%s" % isOk, playerID)
|
| | | return
|
| | |
|
| | | ## 更新消费特惠排行榜
|
| | | # @param cmdList
|
| | | # @return None
|
| | | def MapServer_UpdateCostRankBillboard(cmdList):
|
| | | playerID, playerName, playerOpInfo, playerJob, playerLV, familyName, actionID, actionNum, updateGold = cmdList
|
| | | # 排行榜上榜限制
|
| | | costRankInfoDict = ReadChConfig.GetEvalChConfig("TeHuiAction_CostRank")
|
| | | gameWorld = GameWorld.GetGameWorld()
|
| | | actionNumKey = ShareDefine.Def_Notify_WorldKey_DayAction_CostRank
|
| | | curActionNum = gameWorld.GetDictByKey(actionNumKey)
|
| | | curActionID = gameWorld.GetDictByKey(ShareDefine.Def_Notify_WorldKey_DayAction_ID % actionNumKey)
|
| | | GameWorld.DebugLog("MapServer_UpdateCostRankBillboard...")
|
| | | GameWorld.DebugLog(" actionID=%s,actionNum=%s,updateGold=%s,curActionID=%s,curActionNum=%s," |
| | | % (actionID, actionNum, updateGold, curActionID, curActionNum), playerID)
|
| | | |
| | | # 非当前活动,不更新
|
| | | if actionNum not in costRankInfoDict or actionNum != curActionNum or actionID != curActionID:
|
| | | GameWorld.DebugLog(" 非当前消费特惠排行榜活动,不更新...", playerID)
|
| | | return
|
| | | |
| | | costRankInfoList = costRankInfoDict[actionNum]
|
| | | if len(costRankInfoList) <= 0:
|
| | | return
|
| | | |
| | | limitGold = costRankInfoList[0] # 限制上榜消费数
|
| | | if updateGold < limitGold:
|
| | | GameWorld.DebugLog(" 未达到最低上榜消费数=%s,不更新..." % limitGold, playerID)
|
| | | return
|
| | | |
| | | #排行榜
|
| | | cmpValue = updateGold
|
| | | isOk = UpdatePlayerBillboard(playerID, playerName, familyName, ShareDefine.Def_BT_CostTeHui, |
| | | playerJob, playerLV, 0, cmpValue)
|
| | | GameWorld.DebugLog(" 更新消费特惠排行榜 isOk=%s" % isOk, playerID)
|
| | | return
|
| | |
|
| | | ## 排行榜更新是否受等级限制
|
| | | def IsBillboardLVLimit(playerLV, billboardType):
|
| | | # 等级判断已由地图处理掉,这里不再做判断
|
| | |
| | | # 本服红包产出数
|
| | | Def_RedPacketOutput = "RedPacketOutput"
|
| | |
|
| | | Def_TeHuiRepeatOrderKey = "DA_DayRepeatOrder" # 特惠循环顺序key
|
| | | Def_TeHuiRepeatNumKey = "DA_DayRepeatNum" # 今日特惠循环编号
|
| | |
|
| | | Def_BossRefreshTime = 'BossRefreshTime_%s' # boss刷新时间, 参数为NPCID
|
| | |
|
| | | #世界等级计算额外时间参数
|
| | |
| | | GameWorld.DebugLog(' 玩家战盟名变更处理, newFamilyName=%s' % familyName, playerID)
|
| | | #不处理排行榜
|
| | | needChangeFamilyBillboardList = [
|
| | | #ShareDefine.Def_BT_RechargeTeHui, # 充值特惠活动排行榜-当前期记录
|
| | | ]
|
| | | billboardMgr = GameWorld.GetBillboard()
|
| | | for billboardIndex in needChangeFamilyBillboardList:
|
| | |
| | | import GameWorldOpenServerCampaign
|
| | | import ShareDefine
|
| | | import GameDataRecord
|
| | | import GameWorldShopItem
|
| | | import PlayerCompensation
|
| | | import PlayerFB
|
| | | import UpdatePlayerName
|
| | |
| | | PlayerFamily.MapServer_PyAddFamilyInfoValue(curPlayer, eval(resultName))
|
| | | return
|
| | |
|
| | | if callName == 'UpdRechargeRankBillboard': #地图服务器更新玩家通知特惠累计充值排行榜
|
| | | PlayerBillboard.MapServer_UpdateRechargeRankBillboard(eval(resultName))
|
| | | return
|
| | | |
| | | if callName == 'UpdCostRankBillboard': #地图服务器更新玩家通知特惠累计消费排行榜
|
| | | PlayerBillboard.MapServer_UpdateCostRankBillboard(eval(resultName))
|
| | | return
|
| | | |
| | | if callName == 'UpdateTotalRechargeBillboard': #地图服务器更新玩家充值总数排行榜
|
| | | PlayerBillboard.MapServer_UpdateTotalRechargeBillboard(eval(resultName))
|
| | | return
|
| | |
| | | # 全局击杀数统计
|
| | | if callName =="GlobalKillCount":
|
| | | GameWorldProcess.UpdGlobalKillCount(eval(resultName))
|
| | | return
|
| | | |
| | | # 自定义商店全服限购次数清空
|
| | | if callName =="ShopItemClearBuyCnt":
|
| | | shopID = eval(resultName)[0]
|
| | | GameWorldShopItem.DoShopItemClearBuyCnt(shopID)
|
| | | return
|
| | |
|
| | | # 新手指导员天数
|
| | |
| | | # if not curPlayer:
|
| | | # return
|
| | | # resultName = '%s' % PlayerFamilyStore.DoMapServerFamilyStore(curPlayer, eval(resultName), tick)
|
| | | |
| | | # 自定义商店物品
|
| | | if callName == "ShopItem":
|
| | | curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(srcPlayerID)
|
| | | resultName = '%s' % GameWorldShopItem.DoShopItemQueryResult(curPlayer, eval(resultName))
|
| | |
|
| | | # 玩家天梯奖励
|
| | | if callName == "HighLadderReward":
|
| | |
| | | Def_Notify_WorldKey_ManorWarLastFamilyID = 'ManorWarLastFamilyID_%s' # 领地争夺上次占领的战盟id,%s地图id
|
| | | Def_Notify_WorldKey_ManorWarServerDay = 'ManorWarServerDay' # 领地战活动时的开服天数
|
| | |
|
| | | Def_Notify_WorldKey_DayAction_ID = "%s_ID" # 按天开启的活动唯一id,参数为活动标识key
|
| | | Def_Notify_WorldKey_DayAction_BeginTime = "%s_BT" # 按天开启的活动开始时间,参数为活动标识key
|
| | | Def_Notify_WorldKey_DayAction_EndTime = "%s_ET" # 按天开启的活动结束时间,参数为活动标识key
|
| | | Def_Notify_WorldKey_DayAction_ClassUPNum = "DA_ClassUPNum" # 按天开启的活动标识key - 升阶特惠活动编号
|
| | | Def_Notify_WorldKey_DayAction_Recharge = "DA_Recharge" # 按天开启的活动标识key - 充值特惠
|
| | | Def_Notify_WorldKey_DayAction_DiscountShop = "DA_DiscountShop" # 按天开启的活动标识key - 折扣店
|
| | | Def_Notify_WorldKey_DayAction_RechargeRank = "DA_RechargeRank" # 按天开启的活动标识key - 充值排行榜特惠
|
| | | Def_Notify_WorldKey_DayAction_MixDiscountShop = "DA_MixDiscountShop" # 按天开启的活动标识key - 合服折扣店
|
| | | Def_Notify_WorldKey_DayAction_CostProfit = "DA_CostProfit" # 按天开启的活动标识key - 消费返利
|
| | | Def_Notify_WorldKey_DayAction_CostRank = "DA_CostRank" # 按天开启的活动标识key - 消费特惠排行榜
|
| | |
|
| | | Def_Notify_WorldKey_ShopState = 'ShopState_%s' # 自定义商店开启状态, 参数为ShopID
|
| | | Def_Notify_WorldKey_TimeShopRefreshTime = 'TimeShopRefreshTime_%s' # 定时商店上次全服刷新时间
|
| | | Def_Notify_WorldKey_ActionBuffState = 'ActionBuffState_%s' # 活动玩家buff状态, 1-可加,0-不可添加; 参数为buffID
|
| | |
|
| | | Def_Notify_WorldKey_LoginAwardStartDate = 'LoginAwardStartDate_%s' # 登录领取奖励开始时间,参数为活动类型
|
| | |
| | |
|
| | | Def_BT_HighLadder, #天梯竞技场排行
|
| | | Def_BT_HighLadder_Yester, #天梯竞技场昨日排行
|
| | | Def_BT_RechargeTeHuiLast, #充值特惠活动排行榜-上一期记录
|
| | | Def_BT_RechargeTeHui, #充值特惠活动排行榜-当前期记录
|
| | | |
| | | Def_BT_CostTeHui, #消费特惠排行榜
|
| | | Def_BT_CostTeHuiLast, #消费特惠排行榜上一期
|
| | |
|
| | | Def_BT_Max, #排行榜最大类型
|
| | | ) = range(0, 30 + 2) |
| | | ) = range(0, 26 + 2) |
| | |
|
| | | #职业对应战力排行榜类型
|
| | | JobFightPowerBillboardDict = {
|
| | |
| | | Def_UniversalGameRecType_32,
|
| | | Def_UniversalGameRecType_ManorWarInfo, # 领地争夺战占领结果33
|
| | | Def_UniversalGameRecType_34,
|
| | | Def_UniversalGameRecType_ShopItem, # 自定义商店全服限购数据35
|
| | | Def_UniversalGameRecType_35,
|
| | | Def_UniversalGameRecType_36,
|
| | | Def_UniversalGameRecType_37,
|
| | | Def_UniversalGameRecType_38,
|
| | |
| | | Difficulty_Elite, # 精英
|
| | | Difficulty_Hero, # 英雄
|
| | | ) = range(3)
|
| | |
|
| | | # 称号类型定义,需与\PySysDB\tagDienstgrad.txt表中的类型Type一致,从1开始
|
| | | (
|
| | | Def_DienstgradType_Flower, # 鲜花称号
|
| | | ) = range(1, 2)
|
| | |
|
| | | # 特惠活动类型
|
| | | TeHuiActivityList = (
|
| | | TeHuiActivity_Recharge, # 0充值特惠
|
| | | TeHuiActivity_ClassUP, # 功能升阶特惠
|
| | | TeHuiActivity_DiscountShop, # 折扣店特惠
|
| | | TeHuiActivity_RechargeRank, # 充值排行特惠/合服每日充值排行榜
|
| | | TeHuiActivity_MixDiscountShop, # 合服折扣店特惠
|
| | | TeHuiActivity_CostProfit, # 5消费返利
|
| | | TeHuiActivity_CostRank, # 消费排行榜
|
| | | ) = range(1, 7 + 1)
|
| | |
|
| | |
|
| | | # 特惠活动类型对应的Key
|
| | | TeHuiTypeKeyDict = {
|
| | | TeHuiActivity_Recharge:Def_Notify_WorldKey_DayAction_Recharge,
|
| | | TeHuiActivity_ClassUP:Def_Notify_WorldKey_DayAction_ClassUPNum,
|
| | | TeHuiActivity_DiscountShop:Def_Notify_WorldKey_DayAction_DiscountShop,
|
| | | TeHuiActivity_RechargeRank:Def_Notify_WorldKey_DayAction_RechargeRank,
|
| | | TeHuiActivity_MixDiscountShop:Def_Notify_WorldKey_DayAction_MixDiscountShop,
|
| | | TeHuiActivity_CostProfit:Def_Notify_WorldKey_DayAction_CostProfit,
|
| | | TeHuiActivity_CostRank:Def_Notify_WorldKey_DayAction_CostRank,
|
| | | }
|
| | |
|
| | | # 功能升阶日类型
|
| | | ClassUPDayList = (
|
| | | ClassUPDay_Horse, # 坐骑
|
| | | ClassUPDay_Wing, # 翅膀
|
| | | ClassUPDay_Office # 官爵
|
| | | ) = range(1, 3 + 1)
|
| | |
|
| | | # 总动员类型
|
| | | Def_ZDY_List = (
|
| | | Def_ZDY_Horse, # 坐骑
|
| | | Def_ZDY_Wing, # 翅膀
|
| | | Def_ZDY_Office, # 官爵
|
| | | Def_ZDY_Pet, # 宠物
|
| | | Def_ZDY_FightPower, # 战力
|
| | | ) = range(1, 5 + 1)
|
| | |
|
| | | # 自定义商店查询定义
|
| | | (
|
| | | Def_ShopItem_QueryServerBuyCnt, # 查询全部全服限购数据
|
| | | Def_ShopItem_BuyItem, # 购买物品
|
| | | Def_ShopItem_ClearBuyCnt, # 重置全服限购数据
|
| | | Def_ShopItem_SyncServerBuyCnt, # 同步单品全服限购数据
|
| | | ) = range(4)
|
| | |
|
| | |
|
| | | # 每日活动编号定义
|
| | | DailyActionIDList = (
|
| | |
| | | PacketSubCMD_1=0x22
|
| | | PacketCallFunc_1=UpdatePlayerName
|
| | |
|
| | | ;特惠活动
|
| | | [PlayerTeHui]
|
| | | ScriptName = Player\PlayerTeHui.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 3
|
| | |
|
| | | PacketCMD_1=0xAA
|
| | | PacketSubCMD_1=0x02
|
| | | PacketCallFunc_1=ClientGetClassUPDayAward
|
| | |
|
| | | PacketCMD_2=0xAA
|
| | | PacketSubCMD_2=0x03
|
| | | PacketCallFunc_2=ClientGetRechargeTeHuiAward
|
| | |
|
| | | PacketCMD_3=0xAA
|
| | | PacketSubCMD_3=0x04
|
| | | PacketCallFunc_3=OnGetCostProfitAward
|
| | |
|
| | | ;自定义商店物品
|
| | | [ShopItemManage]
|
| | | ScriptName = Event\EventSrc\ShopItemManage.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 3
|
| | |
|
| | | PacketCMD_1=0xA2
|
| | | PacketSubCMD_1=0x07
|
| | | PacketCallFunc_1=QueryShopItem
|
| | |
|
| | | PacketCMD_2=0xA2
|
| | | PacketSubCMD_2=0x08
|
| | | PacketCallFunc_2=BuyShopItem
|
| | |
|
| | | PacketCMD_3=0xA2
|
| | | PacketSubCMD_3=0x14
|
| | | PacketCallFunc_3=RefreshShopItem
|
| | |
|
| | | ;天梯竞技场
|
| | | [HighLadder]
|
| | | ScriptName = Player\HighLadderTube
|
| | |
| | | Def_PDictType_Wing, # 翅膀
|
| | | Def_PDictType_FB, # 副本相关
|
| | | Def_PDictType_FightPower, # 战斗力15
|
| | | Def_PDictType_TeHuiAction, # 特惠活动
|
| | | Def_PDictType_16,
|
| | | Def_PDictType_Activity, # 活跃度
|
| | | Def_PDictType_GoldInvest, # 投资理财
|
| | | Def_PDictType_19,
|
| | |
| | | Def_PDict_MysticalShopGoods = "MysticalShopGoods_%s" # 神秘商店商品ID,索引
|
| | | Def_PDict_MysticalShopRefreshCnt = "MysticalShopRefreshCnt" # 神秘商店已手动刷新次数
|
| | | Def_PDict_MysticalShopLVRefreshCnt = "MysticalShopLVRefreshCnt" # 神秘商店等级段刷新次数
|
| | | Def_PDict_ShopItemBuyCnt = "ShopItemBuyCnt_%s_%s" # 自定义商品已购买次数,(shopID, itemIndex)
|
| | | Def_PDict_ShopItemOpenState = "ShopItemOpenState_%s_%s" # 自定义神秘商店物品开启状态,(shopID, keyNum)
|
| | | Def_PDict_TimeShopRefreshCnt = "TimeShopRefreshCnt_%s" # 自定义神秘商店已手动刷新次数,(shopID)
|
| | | Def_PDict_TimeShopLastGlobalRefreshTime = "TimeShopLastGlobalRTime_%s" # 玩家上次刷新神秘商店是的全服标记,(shopID)
|
| | | Def_PDict_HighLadderFightCnt = "HighLadderFightCnt" #天梯每日挑战次数记录
|
| | | Def_PDict_HighLadderAddCnt = "HighLadderAddCnt" #天梯已购买次数
|
| | | Def_PDict_HighLadder_Currency = "HighLadderCurrency" #天梯积分
|
| | |
| | | Def_PDict_FightPower_Horse = "FightPower_Horse" # 坐骑战斗力
|
| | |
|
| | | Def_PDict_FightPower_List = [Def_PDict_FightPower_Total, Def_PDict_FightPower_Horse]
|
| | |
|
| | |
|
| | | # 特惠活动 Def_PDictType_TeHuiAction
|
| | | Def_PDict_TeHui_ActionID = "%s_ID" # 玩家身上的特惠活动id,参数为GameServer同步的活动标识
|
| | | Def_PDict_TeHui_ClassUPAwardRecord = "TH_ClassUPAwardRecord_%s" # 升阶特惠奖励记录,参数(升阶特惠类型)
|
| | | Def_PDict_TeHui_RechargeGotCnt = "TH_RechargeGotCnt_%s" # 充值特惠奖励已领取次数,参数(规则索引,从0开始)
|
| | | Def_PDict_TeHui_RechargeCanGetCnt = "TH_RechargeCanGetCnt_%s" # 充值特惠奖励可领取次数,参数同上
|
| | | Def_PDict_TeHui_RechargeCurTotalGold = "TH_RechargeCurTotalGold_%s" # 充值特惠奖励累计充值钻石,参数同上
|
| | | Def_PDict_TeHui_RechargeTotalGold = "TH_RechargeTotalGold_%s" # 充值特惠奖励总累计充值钻石,有参数,但是没给参数值,有一定几率更新不了key值,改为没参数的
|
| | | Def_PDict_TeHui_RechargeTotalGoldEx = "TH_RechargeTotalGold" # 充值特惠奖励总累计充值钻石
|
| | | Def_PDict_TeHui_LastRechargeNum = "TH_LastRechargeNum" # 上次充值特惠活动标识, 用于补发上次未领取的奖励
|
| | | Def_PDict_TeHui_RechargeRankTotalGold = "TH_RechargeRankTGold_%s" # 充值排行特惠奖励总累计充值钻石,有参数,但是没给参数值,有一定几率更新不了key值,改为没参数的
|
| | | Def_PDict_TeHui_RechargeRankTotalGoldEx = "TH_RechargeRankTGold" # 充值排行特惠奖励总累计充值钻石
|
| | | Def_PDict_TeHui_CostTotalGold = "TH_CostTotalGold" # 消费返利总累计消费钻石
|
| | | Def_PDict_TeHui_CostAwardState = "TH_CostAwardState" # 消费奖励领取状态
|
| | | Def_PDict_TeHui_LastCostIndex = "TH_LastCostIndex" # 上次消费返利活动标识, 用于补发上次未领取的奖励
|
| | | Def_PDict_TeHui_CostRankTotalGold = "TH_CostRankTGold_%s" # 消费排行特惠奖励总累计充值钻石,有参数,但是没给参数值,有一定几率更新不了key值,改为没参数的
|
| | | Def_PDict_TeHui_CostRankTotalGoldEx = "TH_CostRankTGold" # 消费排行特惠奖励总累计充值钻石
|
| | |
|
| | | # 每日活跃度 Def_PDictType_Activity
|
| | | Def_PDict_Activity_FinishCnt = "Activity_FinishCnt_%s" # 活跃度类型对应完成次数
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AD 01 查询特惠活动信息 #tagCGQueryTeHuiActivetyInfo
|
| | |
|
| | | class tagCGQueryTeHuiActivetyInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActivityType", c_ubyte), # 活动类型
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | 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 = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | self.ActivityType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCGQueryTeHuiActivetyInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AD 01 查询特惠活动信息 //tagCGQueryTeHuiActivetyInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActivityType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActivityType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCGQueryTeHuiActivetyInfo=tagCGQueryTeHuiActivetyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCGQueryTeHuiActivetyInfo.Cmd,m_NAtagCGQueryTeHuiActivetyInfo.SubCmd))] = m_NAtagCGQueryTeHuiActivetyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AE 07 运镖时间倒计时结束 #tagCGTruckTimeEnd
|
| | |
|
| | | class tagCGTruckTimeEnd(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 08 购买自定义商店物品 #tagCMBuyShopItem
|
| | |
|
| | | class tagCMBuyShopItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ("ItemShopIndex", c_ushort), |
| | | ("BuyCount", c_ushort), #购买数量
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x08
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x08
|
| | | self.ShopID = 0
|
| | | self.ItemShopIndex = 0
|
| | | self.BuyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMBuyShopItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 08 购买自定义商店物品 //tagCMBuyShopItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d,
|
| | | ItemShopIndex:%d,
|
| | | BuyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID,
|
| | | self.ItemShopIndex,
|
| | | self.BuyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMBuyShopItem=tagCMBuyShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMBuyShopItem.Cmd,m_NAtagCMBuyShopItem.SubCmd))] = m_NAtagCMBuyShopItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 10 清除副本CD#tagCMClearFBCD
|
| | |
|
| | | class tagCMClearFBCD(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 07 请求自定义商店物品信息 #tagCMQueryShopItem
|
| | |
|
| | | class tagCMQueryShopItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | self.SubCmd = 0x07
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x07
|
| | | self.ShopID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMQueryShopItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 07 请求自定义商店物品信息 //tagCMQueryShopItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMQueryShopItem=tagCMQueryShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMQueryShopItem.Cmd,m_NAtagCMQueryShopItem.SubCmd))] = m_NAtagCMQueryShopItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 06 快速完成任务#tagCMQuickFinishMission
|
| | |
|
| | | class tagCMQuickFinishMission(Structure):
|
| | |
| | |
|
| | | m_NAtagCMRefreshMysticalShop=tagCMRefreshMysticalShop()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshMysticalShop.Cmd,m_NAtagCMRefreshMysticalShop.SubCmd))] = m_NAtagCMRefreshMysticalShop
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A2 14 刷新定时神秘商店物品#tagCMRefreshShopItem
|
| | |
|
| | | class tagCMRefreshShopItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA2
|
| | | 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 = 0xA2
|
| | | self.SubCmd = 0x14
|
| | | self.ShopID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMRefreshShopItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A2 14 刷新定时神秘商店物品//tagCMRefreshShopItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMRefreshShopItem=tagCMRefreshShopItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMRefreshShopItem.Cmd,m_NAtagCMRefreshShopItem.SubCmd))] = m_NAtagCMRefreshShopItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagCMFlashSaleAppointment=tagCMFlashSaleAppointment()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMFlashSaleAppointment.Cmd,m_NAtagCMFlashSaleAppointment.SubCmd))] = m_NAtagCMFlashSaleAppointment
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 02 领取升阶功能特惠奖励 #tagCMGetClassUPDayAward
|
| | |
|
| | | class tagCMGetClassUPDayAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayType", c_ubyte), # 升阶日类型
|
| | | ("ClassLV", c_ubyte), # 阶级
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x02
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x02
|
| | | self.DayType = 0
|
| | | self.ClassLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetClassUPDayAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 02 领取升阶功能特惠奖励 //tagCMGetClassUPDayAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayType:%d,
|
| | | ClassLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayType,
|
| | | self.ClassLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetClassUPDayAward=tagCMGetClassUPDayAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetClassUPDayAward.Cmd,m_NAtagCMGetClassUPDayAward.SubCmd))] = m_NAtagCMGetClassUPDayAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 04 领取消费奖励 #tagCMGetCostAward
|
| | |
|
| | | class tagCMGetCostAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("Index", c_ubyte), # 索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | self.ActionID = 0
|
| | | self.Index = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetCostAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 04 领取消费奖励 //tagCMGetCostAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | Index:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.Index
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetCostAward=tagCMGetCostAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetCostAward.Cmd,m_NAtagCMGetCostAward.SubCmd))] = m_NAtagCMGetCostAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 03 领取充值特惠奖励 #tagCMGetRechargeTeHuiAward
|
| | |
|
| | | class tagCMGetRechargeTeHuiAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("Index", c_ubyte), # 规则索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | self.ActionID = 0
|
| | | self.Index = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMGetRechargeTeHuiAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 03 领取充值特惠奖励 //tagCMGetRechargeTeHuiAward:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | Index:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.Index
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMGetRechargeTeHuiAward=tagCMGetRechargeTeHuiAward()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMGetRechargeTeHuiAward.Cmd,m_NAtagCMGetRechargeTeHuiAward.SubCmd))] = m_NAtagCMGetRechargeTeHuiAward
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 07 定时商店刷新倒计时 #tagGCShopRefreshTimeList
|
| | |
|
| | | class tagGCShopRefreshTime(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), # 商店ID
|
| | | ("RemainSecond", c_int), # 多少秒后刷新
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA9
|
| | | self.SubCmd = 0x07
|
| | | 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 = 0xA9
|
| | | self.SubCmd = 0x07
|
| | | self.ShopID = 0
|
| | | self.RemainSecond = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCShopRefreshTime)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A9 07 定时商店刷新倒计时 //tagGCShopRefreshTimeList:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d,
|
| | | RemainSecond:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID,
|
| | | self.RemainSecond
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCShopRefreshTimeList(Structure):
|
| | | Head = tagHead()
|
| | | ShopCnt = 0 #(BYTE ShopCnt)//商店信息个数
|
| | | ShopTimeInfoList = list() #(vector<tagGCShopRefreshTime> ShopTimeInfoList)//商店信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ShopCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ShopCnt):
|
| | | temShopTimeInfoList = tagGCShopRefreshTime()
|
| | | _pos = temShopTimeInfoList.ReadData(_lpData, _pos)
|
| | | self.ShopTimeInfoList.append(temShopTimeInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA9
|
| | | self.Head.SubCmd = 0x07
|
| | | self.ShopCnt = 0
|
| | | self.ShopTimeInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.ShopCnt):
|
| | | length += self.ShopTimeInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ShopCnt)
|
| | | for i in range(self.ShopCnt):
|
| | | data = CommFunc.WriteString(data, self.ShopTimeInfoList[i].GetLength(), self.ShopTimeInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ShopCnt:%d,
|
| | | ShopTimeInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ShopCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCShopRefreshTimeList=tagGCShopRefreshTimeList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCShopRefreshTimeList.Head.Cmd,m_NAtagGCShopRefreshTimeList.Head.SubCmd))] = m_NAtagGCShopRefreshTimeList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
|
| | |
|
| | | class tagGCStoreServerBuyCnt(Structure):
|
| | |
| | |
|
| | | m_NAtagGCXMZZFightInfo=tagGCXMZZFightInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXMZZFightInfo.Head.Cmd,m_NAtagGCXMZZFightInfo.Head.SubCmd))] = m_NAtagGCXMZZFightInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AD 01 特惠活动信息 #tagGCTeHuiActivityInfoList
|
| | |
|
| | | class tagGCTeHuiActivityInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActivityType", c_ubyte), # 活动类型
|
| | | ("ActivityValue", c_int), # 活动值
|
| | | ("StartDate", c_int), # 开始时间time
|
| | | ("EndDate", c_int), # 结束时间time
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | 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 = 0xAD
|
| | | self.SubCmd = 0x01
|
| | | self.ActivityType = 0
|
| | | self.ActivityValue = 0
|
| | | self.StartDate = 0
|
| | | self.EndDate = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCTeHuiActivityInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AD 01 特惠活动信息 //tagGCTeHuiActivityInfoList:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActivityType:%d,
|
| | | ActivityValue:%d,
|
| | | StartDate:%d,
|
| | | EndDate:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActivityType,
|
| | | self.ActivityValue,
|
| | | self.StartDate,
|
| | | self.EndDate
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCTeHuiActivityInfoList(Structure):
|
| | | Head = tagHead()
|
| | | ActivityCount = 0 #(BYTE ActivityCount)//活动信息个数
|
| | | ActivityInfoList = list() #(vector<tagGCTeHuiActivityInfo> ActivityInfoList)//活动信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAD
|
| | | self.Head.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActivityCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityCount):
|
| | | temActivityInfoList = tagGCTeHuiActivityInfo()
|
| | | _pos = temActivityInfoList.ReadData(_lpData, _pos)
|
| | | self.ActivityInfoList.append(temActivityInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAD
|
| | | self.Head.SubCmd = 0x01
|
| | | self.ActivityCount = 0
|
| | | self.ActivityInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.ActivityCount):
|
| | | length += self.ActivityInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityCount)
|
| | | for i in range(self.ActivityCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityInfoList[i].GetLength(), self.ActivityInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActivityCount:%d,
|
| | | ActivityInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActivityCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCTeHuiActivityInfoList=tagGCTeHuiActivityInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeHuiActivityInfoList.Head.Cmd,m_NAtagGCTeHuiActivityInfoList.Head.SubCmd))] = m_NAtagGCTeHuiActivityInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 53 法宝特权数据 #tagMCMWPrivilegeDataInfo
|
| | |
|
| | | class tagMCMWPrivilegeData(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("PriID", c_int), # 特权ID
|
| | | ("State", c_ubyte), #激活状态
|
| | | ("CurValue", c_int), #当前总进度
|
| | | ("GotValue", c_int), #已领取进度
|
| | | ("ItemAwardState", 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.PriID = 0
|
| | | self.State = 0
|
| | | self.CurValue = 0
|
| | | self.GotValue = 0
|
| | | self.ItemAwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCMWPrivilegeData)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
|
| | | PriID:%d,
|
| | | State:%d,
|
| | | CurValue:%d,
|
| | | GotValue:%d,
|
| | | ItemAwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.PriID,
|
| | | self.State,
|
| | | self.CurValue,
|
| | | self.GotValue,
|
| | | self.ItemAwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCMWPrivilegeDataInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)// 信息个数
|
| | | InfoList = list() #(vector<tagMCMWPrivilegeData> InfoList)// 信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x53
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temInfoList = tagMCMWPrivilegeData()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x53
|
| | | self.Count = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCMWPrivilegeDataInfo=tagMCMWPrivilegeDataInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMWPrivilegeDataInfo.Head.Cmd,m_NAtagMCMWPrivilegeDataInfo.Head.SubCmd))] = m_NAtagMCMWPrivilegeDataInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 26 NPCID已采集次数信息 #tagMCNPCIDCollectionCntInfo
|
| | |
|
| | | class tagMCNPCIDCollectionCnt(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 04 通知商店限购物品已购买次数信息 # tagMCShopItemBuyCntInfoList
|
| | |
|
| | | class tagMCShopItemBuyCntInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ShopID", c_int), |
| | | ("ItemShopIndex", c_ushort), |
| | | ("ItemID", c_int), |
| | | ("BuyCnt", c_int), # 个人已购买数
|
| | | ("ServerBuyCnt", 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.ShopID = 0
|
| | | self.ItemShopIndex = 0
|
| | | self.ItemID = 0
|
| | | self.BuyCnt = 0
|
| | | self.ServerBuyCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCShopItemBuyCntInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 04 通知商店限购物品已购买次数信息 // tagMCShopItemBuyCntInfoList:
|
| | | ShopID:%d,
|
| | | ItemShopIndex:%d,
|
| | | ItemID:%d,
|
| | | BuyCnt:%d,
|
| | | ServerBuyCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ShopID,
|
| | | self.ItemShopIndex,
|
| | | self.ItemID,
|
| | | self.BuyCnt,
|
| | | self.ServerBuyCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCShopItemBuyCntInfoList(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//通知个数
|
| | | BuyCntList = list() #(vector<tagMCShopItemBuyCntInfo> BuyCntList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temBuyCntList = tagMCShopItemBuyCntInfo()
|
| | | _pos = temBuyCntList.ReadData(_lpData, _pos)
|
| | | self.BuyCntList.append(temBuyCntList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x04
|
| | | self.Count = 0
|
| | | self.BuyCntList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.BuyCntList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | BuyCntList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShopItemBuyCntInfoList=tagMCShopItemBuyCntInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemBuyCntInfoList.Head.Cmd,m_NAtagMCShopItemBuyCntInfoList.Head.SubCmd))] = m_NAtagMCShopItemBuyCntInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
|
| | |
|
| | | class tagMCShopItemDayBuyCnt(Structure):
|
| | |
| | |
|
| | | m_NAtagMCShopItemDayBuyCntInfo=tagMCShopItemDayBuyCntInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemDayBuyCntInfo.Head.Cmd,m_NAtagMCShopItemDayBuyCntInfo.Head.SubCmd))] = m_NAtagMCShopItemDayBuyCntInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 03 通知自定义商店物品信息 #tagMCShopItemInfoList
|
| | |
|
| | | class tagMCShopItemInfo(Structure):
|
| | | ShopID = 0 #(DWORD ShopID)
|
| | | ItemShopIndex = 0 #(WORD ItemShopIndex)
|
| | | DataSize = 0 #(DWORD DataSize)
|
| | | ItemList = "" #(String ItemList)//物品列表[[物品ID,数量,是否绑定,是否定制]]
|
| | | PriceType = 0 #(BYTE PriceType)
|
| | | Price = 0 #(DWORD Price)
|
| | | OriginalPrice = 0 #(DWORD OriginalPrice)// 原价
|
| | | PlayerLVLimit = 0 #(WORD PlayerLVLimit)// 购买等级限制
|
| | | FamilyLVLimit = 0 #(BYTE FamilyLVLimit)// 购买战盟等级限制
|
| | | MaxBuyCnt = 0 #(DWORD MaxBuyCnt)// 个人限购数
|
| | | ServerMaxBuyCnt = 0 #(DWORD ServerMaxBuyCnt)// 全服限购数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ShopID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ItemShopIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ItemList,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
|
| | | self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Price,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.OriginalPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerLVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.FamilyLVLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerMaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ShopID = 0
|
| | | self.ItemShopIndex = 0
|
| | | self.DataSize = 0
|
| | | self.ItemList = ""
|
| | | self.PriceType = 0
|
| | | self.Price = 0
|
| | | self.OriginalPrice = 0
|
| | | self.PlayerLVLimit = 0
|
| | | self.FamilyLVLimit = 0
|
| | | self.MaxBuyCnt = 0
|
| | | self.ServerMaxBuyCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += len(self.ItemList)
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.ShopID)
|
| | | data = CommFunc.WriteWORD(data, self.ItemShopIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.DataSize)
|
| | | data = CommFunc.WriteString(data, self.DataSize, self.ItemList)
|
| | | data = CommFunc.WriteBYTE(data, self.PriceType)
|
| | | data = CommFunc.WriteDWORD(data, self.Price)
|
| | | data = CommFunc.WriteDWORD(data, self.OriginalPrice)
|
| | | data = CommFunc.WriteWORD(data, self.PlayerLVLimit)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyLVLimit)
|
| | | data = CommFunc.WriteDWORD(data, self.MaxBuyCnt)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerMaxBuyCnt)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ShopID:%d,
|
| | | ItemShopIndex:%d,
|
| | | DataSize:%d,
|
| | | ItemList:%s,
|
| | | PriceType:%d,
|
| | | Price:%d,
|
| | | OriginalPrice:%d,
|
| | | PlayerLVLimit:%d,
|
| | | FamilyLVLimit:%d,
|
| | | MaxBuyCnt:%d,
|
| | | ServerMaxBuyCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.ShopID,
|
| | | self.ItemShopIndex,
|
| | | self.DataSize,
|
| | | self.ItemList,
|
| | | self.PriceType,
|
| | | self.Price,
|
| | | self.OriginalPrice,
|
| | | self.PlayerLVLimit,
|
| | | self.FamilyLVLimit,
|
| | | self.MaxBuyCnt,
|
| | | self.ServerMaxBuyCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCShopItemInfoList(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//通知个数
|
| | | ShopItemList = list() #(vector<tagMCShopItemInfo> ShopItemList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temShopItemList = tagMCShopItemInfo()
|
| | | _pos = temShopItemList.ReadData(_lpData, _pos)
|
| | | self.ShopItemList.append(temShopItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x03
|
| | | self.Count = 0
|
| | | self.ShopItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ShopItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ShopItemList[i].GetLength(), self.ShopItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ShopItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShopItemInfoList=tagMCShopItemInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemInfoList.Head.Cmd,m_NAtagMCShopItemInfoList.Head.SubCmd))] = m_NAtagMCShopItemInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 05 通知神秘商店刷新次数 #tagMCShopRefreshCnt
|
| | |
|
| | | class tagMCShopRefreshCnt(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShopID", c_int), #商店ID
|
| | | ("RefreshCnt", c_ushort), #已手动刷新次数
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA8
|
| | | self.SubCmd = 0x05
|
| | | 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 = 0xA8
|
| | | self.SubCmd = 0x05
|
| | | self.ShopID = 0
|
| | | self.RefreshCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCShopRefreshCnt)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 05 通知神秘商店刷新次数 //tagMCShopRefreshCnt:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShopID:%d,
|
| | | RefreshCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShopID,
|
| | | self.RefreshCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShopRefreshCnt=tagMCShopRefreshCnt()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopRefreshCnt.Cmd,m_NAtagMCShopRefreshCnt.SubCmd))] = m_NAtagMCShopRefreshCnt
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCAllPeoplePartyInfo=tagMCAllPeoplePartyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllPeoplePartyInfo.Head.Cmd,m_NAtagMCAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCAllPeoplePartyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 03 升阶功能特惠奖励记录 #tagMCClassUPDayAwardRecordList
|
| | |
|
| | | class tagMCClassUPDayAwardRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayType", c_ubyte), # 奖励日类型
|
| | | ("Record", c_int), # 奖励记录
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x03
|
| | | self.DayType = 0
|
| | | self.Record = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCClassUPDayAwardRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 03 升阶功能特惠奖励记录 //tagMCClassUPDayAwardRecordList:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayType:%d,
|
| | | Record:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayType,
|
| | | self.Record
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCClassUPDayAwardRecordList(Structure):
|
| | | Head = tagHead()
|
| | | RecordCount = 0 #(BYTE RecordCount)//记录个数
|
| | | RecordInfoList = list() #(vector<tagMCClassUPDayAwardRecord> RecordInfoList)//记录列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RecordCount):
|
| | | temRecordInfoList = tagMCClassUPDayAwardRecord()
|
| | | _pos = temRecordInfoList.ReadData(_lpData, _pos)
|
| | | self.RecordInfoList.append(temRecordInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x03
|
| | | self.RecordCount = 0
|
| | | self.RecordInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.RecordCount):
|
| | | length += self.RecordInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.RecordCount)
|
| | | for i in range(self.RecordCount):
|
| | | data = CommFunc.WriteString(data, self.RecordInfoList[i].GetLength(), self.RecordInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RecordCount:%d,
|
| | | RecordInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.RecordCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCClassUPDayAwardRecordList=tagMCClassUPDayAwardRecordList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClassUPDayAwardRecordList.Head.Cmd,m_NAtagMCClassUPDayAwardRecordList.Head.SubCmd))] = m_NAtagMCClassUPDayAwardRecordList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 06 消费奖励信息 #tagMCCostProfitInfo
|
| | |
|
| | | class tagMCCostProfitInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("TotalCost", c_int), # 总消费
|
| | | ("AwardState", c_int), # 奖励领取状态
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x06
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x06
|
| | | self.ActionID = 0
|
| | | self.TotalCost = 0
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCostProfitInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 06 消费奖励信息 //tagMCCostProfitInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | TotalCost:%d,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.TotalCost,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCostProfitInfo=tagMCCostProfitInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostProfitInfo.Cmd,m_NAtagMCCostProfitInfo.SubCmd))] = m_NAtagMCCostProfitInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 07 消费排行特惠信息 #tagMCCostRankTeHuiInfo
|
| | |
|
| | | class tagMCCostRankTeHuiInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("TotalCost", c_int), # 总累计消费钻石
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x07
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x07
|
| | | self.ActionID = 0
|
| | | self.TotalCost = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCCostRankTeHuiInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 07 消费排行特惠信息 //tagMCCostRankTeHuiInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | TotalCost:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.TotalCost
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCCostRankTeHuiInfo=tagMCCostRankTeHuiInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRankTeHuiInfo.Cmd,m_NAtagMCCostRankTeHuiInfo.SubCmd))] = m_NAtagMCCostRankTeHuiInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo
|
| | |
|
| | | class tagMCRechargeRankTeHuiInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActionID", c_int), # 活动ID
|
| | | ("TotalGold", c_int), # 总累计充值元宝
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x05
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x05
|
| | | self.ActionID = 0
|
| | | self.TotalGold = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCRechargeRankTeHuiInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 05 充值排行特惠信息 //tagMCRechargeRankTeHuiInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActionID:%d,
|
| | | TotalGold:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActionID,
|
| | | self.TotalGold
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRechargeRankTeHuiInfo=tagMCRechargeRankTeHuiInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRankTeHuiInfo.Cmd,m_NAtagMCRechargeRankTeHuiInfo.SubCmd))] = m_NAtagMCRechargeRankTeHuiInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 04 充值特惠信息 #tagMCRechargeTeHuiInfoList
|
| | |
|
| | | class tagMCRechargeTeHuiInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("GotCnt", c_ubyte), # 已领取次数
|
| | | ("CanGetCnt", c_ubyte), # 当前可领取次数
|
| | | ("CurTotalGold", c_int), # 当前规则累计充值元宝-仅针对累充规则
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | self.GotCnt = 0
|
| | | self.CanGetCnt = 0
|
| | | self.CurTotalGold = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCRechargeTeHuiInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 04 充值特惠信息 //tagMCRechargeTeHuiInfoList:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | GotCnt:%d,
|
| | | CanGetCnt:%d,
|
| | | CurTotalGold:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.GotCnt,
|
| | | self.CanGetCnt,
|
| | | self.CurTotalGold
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCRechargeTeHuiInfoList(Structure):
|
| | | Head = tagHead()
|
| | | ActionID = 0 #(DWORD ActionID)// 活动ID
|
| | | TotalGold = 0 #(DWORD TotalGold)// 总累计充值元宝
|
| | | InfoCnt = 0 #(BYTE InfoCnt)// 信息个数
|
| | | InfoList = list() #(vector<tagMCRechargeTeHuiInfo> InfoList)// 信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActionID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TotalGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.InfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.InfoCnt):
|
| | | temInfoList = tagMCRechargeTeHuiInfo()
|
| | | _pos = temInfoList.ReadData(_lpData, _pos)
|
| | | self.InfoList.append(temInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x04
|
| | | self.ActionID = 0
|
| | | self.TotalGold = 0
|
| | | self.InfoCnt = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.InfoCnt):
|
| | | length += self.InfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.ActionID)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalGold)
|
| | | data = CommFunc.WriteBYTE(data, self.InfoCnt)
|
| | | for i in range(self.InfoCnt):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActionID:%d,
|
| | | TotalGold:%d,
|
| | | InfoCnt:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActionID,
|
| | | self.TotalGold,
|
| | | self.InfoCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRechargeTeHuiInfoList=tagMCRechargeTeHuiInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeTeHuiInfoList.Head.Cmd,m_NAtagMCRechargeTeHuiInfoList.Head.SubCmd))] = m_NAtagMCRechargeTeHuiInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | SendEventPack("CollectNPCOK", dataDict, curPlayer)
|
| | | return
|
| | |
|
| | | ## 玩家领取充值特惠活动奖励
|
| | | # @param curPlayer: 玩家实例
|
| | | # @param actionID: 活动id
|
| | | # @param actionNum: 活动编号
|
| | | # @param itemID: 物品id
|
| | | # @param itemCnt: 物品数量
|
| | | # @param isPutIn: 是否放入
|
| | | # @param prizeIndex: 奖励中的第x种奖励
|
| | | # @return |
| | | def DR_PlayerTeHuiRechargePrize(curPlayer, actionID, actionNum, itemID, itemCnt, isPutIn, prizeIndex):
|
| | | #MySql不识别 True False,改成1和0
|
| | | isPutIn = 1 if isPutIn else 0
|
| | | |
| | | dataDict = {'PlayerID':curPlayer.GetPlayerID(), "PlayerName":curPlayer.GetPlayerName(), |
| | | 'AccID':curPlayer.GetAccID(), 'ActionID':actionID, 'ActionNum':actionNum, |
| | | 'IsPutIn':isPutIn, "ItemID":itemID, "ItemCount":itemCnt, 'PrizeIndex':prizeIndex}
|
| | | |
| | | SendEventPack("TeHuiRechargePrize", dataDict, curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | | ## 领取投资回报
|
| | | # @param curPlayer: 玩家实例
|
| | |
| | | RunQuestEvent(curPlayer, "on_goldinvest", "on_goldinvest", Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "on_goldinvest", investType, Def_RunQuestType_Normal)
|
| | | return
|
| | | |
| | | def EventRespons_OnBuyTeHuiItem(curPlayer, shopID, itemShopIndex):
|
| | | # 购买特惠商店物品
|
| | | RunQuestEvent(curPlayer, "on_buy_tehuiitem", "on_buy_tehuiitem", Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "on_buy_tehuiitem", shopID, Def_RunQuestType_Normal)
|
| | | RunQuestEvent(curPlayer, "on_buy_tehuiitem", "%s_%s" % (shopID, itemShopIndex), Def_RunQuestType_Normal)
|
| | | return
|
| | |
|
| | | def EventRespons_OnActivatePet(curPlayer, petID):
|
| | | # 激活宠物
|
| | |
| | | #import PlayerCostVIP
|
| | | import GameFuncComm
|
| | | import IpyGameDataPY
|
| | | import ShopItemManage
|
| | | import PlayerPet
|
| | | import PlayerArrestTask
|
| | | import PlayerMagicWeapon
|
| | |
| | | return False
|
| | | return petPack.GetCount() > 0
|
| | | return PlayerPet.GetPetDataItemByNPCID(curPlayer, checkPetID) != None
|
| | |
|
| | | def ConditionType_Is_Buy_Tehuiitem(curPlayer, curMission, curConditionNode):
|
| | | # 判断是否购买过特惠商店物品
|
| | | # <Is_Buy_Tehuiitem shopID="1007" itemShopIndex="0,1,2"/> shopID暂定需指定商店ID, itemShopIndex可指定多个索引, 中间英文逗号隔开
|
| | | shopID = GameWorld.ToIntDef(curConditionNode.GetAttribute("shopID"), 0)
|
| | | if not shopID:
|
| | | return False
|
| | | indexList = []
|
| | | indexInfo = curConditionNode.GetAttribute("itemShopIndex")
|
| | | if indexInfo != '':
|
| | | indexList = eval('[' + indexInfo + ']')
|
| | | if not indexList:
|
| | | shopItemList = ShopItemManage.GetShopItemList(shopID)
|
| | | indexList = range(len(shopItemList))
|
| | | if not indexList:
|
| | | GameWorld.DebugLog("需指定判断的特惠商店物品索引编号!indexInfo=%s" % indexInfo)
|
| | | return False
|
| | | for i in indexList:
|
| | | buyCnt = ShopItemManage.__GetPlayerShopItemBuyCnt(curPlayer, shopID, i)
|
| | | if buyCnt > 0:
|
| | | return True
|
| | | return False
|
| | |
|
| | | ##竞技场是否达到多少名
|
| | | # @param curPlayer 玩家实例
|
| | |
| | | # # 采集NPC次数通知
|
| | | NPCCommon.SyncCollNPCTime(curPlayer)
|
| | | #
|
| | | # # 特惠活动
|
| | | # PlayerTeHui.PlayerLogin_TeHui(curPlayer)
|
| | | # |
| | | # # 自定义商店
|
| | | # ShopItemManage.DoOnLogin(curPlayer)
|
| | | # |
| | | # # 每日活跃度
|
| | | PlayerActivity.OnLogin(curPlayer)
|
| | | #
|
| | |
| | |
|
| | | #防止玩家读取地图时未触发OnDay,读取地图后再次验证(2009.9.11)
|
| | | PlayerEventCounter.UpdatePlayerLoginTime(curPlayer)
|
| | | |
| | | #特惠活动事件
|
| | | #PlayerTeHui.PlayerLoadMapOK(curPlayer)
|
| | |
|
| | | #设置阵营
|
| | | if curPlayer.GetFaction() != ChConfig.CampType_Neutral \
|
| | |
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "UpdateBillboardPlayerTruck",
|
| | | '%s' % (cmdList), len(str(cmdList)))
|
| | | return
|
| | |
|
| | | ## 更新充值排行特惠排行榜
|
| | | # @param playerID: 玩家ID
|
| | | # @return: |
| | | def UpdateRechargeRankBillboard(curPlayer, actionID, actionNum, updateGold):
|
| | | # if GameWorld.IsGM(curPlayer):
|
| | | # #GM不上榜
|
| | | # return
|
| | | |
| | | #排行榜需要数据[玩家ID, 玩家名字, 玩家职业, 击杀数]
|
| | | playerID = curPlayer.GetID()
|
| | | playerName = curPlayer.GetName()
|
| | | playerOpInfo = curPlayer.GetOperateInfo()
|
| | | playerJob = curPlayer.GetJob()
|
| | | playerLV = curPlayer.GetLV()
|
| | | familyName = curPlayer.GetFamilyName()
|
| | | GameWorld.DebugLog("更新特惠充值排行榜: actionID=%s,actionNum=%s,updateGold=%s" |
| | | % (actionID, actionNum, updateGold), curPlayer.GetPlayerID())
|
| | | sendMsg = '%s' % ([playerID, playerName, playerOpInfo, playerJob, playerLV, familyName, actionID, actionNum, updateGold]) |
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'UpdRechargeRankBillboard', \
|
| | | sendMsg, len(sendMsg))
|
| | | return
|
| | |
|
| | | ## 更新消费排行特惠排行榜
|
| | | # @param playerID: 玩家ID
|
| | | # @return: |
| | | def UpdateCostRankBillboard(curPlayer, actionID, actionNum, updateGold):
|
| | | # if GameWorld.IsGM(curPlayer):
|
| | | # #GM不上榜
|
| | | # return
|
| | | |
| | | #排行榜需要数据[玩家ID, 玩家名字, 玩家职业, 击杀数]
|
| | | playerID = curPlayer.GetID()
|
| | | playerName = curPlayer.GetName()
|
| | | playerOpInfo = curPlayer.GetOperateInfo()
|
| | | playerJob = curPlayer.GetJob()
|
| | | playerLV = curPlayer.GetLV()
|
| | | familyName = curPlayer.GetFamilyName()
|
| | | GameWorld.DebugLog("更新特惠消费排行榜: actionID=%s,actionNum=%s,updateGold=%s" |
| | | % (actionID, actionNum, updateGold), curPlayer.GetPlayerID())
|
| | | sendMsg = '%s' % ([playerID, playerName, playerOpInfo, playerJob, playerLV, familyName, actionID, actionNum, updateGold]) |
| | | GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'UpdCostRankBillboard', \
|
| | | sendMsg, len(sendMsg))
|
| | | return
|
| | |
|
| | | ##更新玩家充值排行榜
|
| | | # @param curPlayer 玩家实例
|
| | |
| | | import PassiveBuffEffMng
|
| | | import PlayerGameEvent
|
| | | import EventReport
|
| | | import PlayerTeHui
|
| | | import PlayerGatherSoul
|
| | | import PlayerSuccess
|
| | | import PlayerPet
|
| | |
| | | import FunctionNPCCommon
|
| | | import PlayerGoldGift
|
| | | import PlayerActivity
|
| | | import PlayerTeHui
|
| | | import PlayerBindJadeWheel
|
| | | import PlayerAction
|
| | | import FBCommon
|
| | | import PlayerSuccess
|
| | | import PlayerFreeGoods
|
| | | import PlayerMagicWeapon
|
| | | import ShopItemManage
|
| | | import ChItem
|
| | | import PlayerGoldInvest
|
| | | import PlayerNewGuyCard
|
| | |
| | | #elif key == ShareDefine.Def_Notify_WorldKey_ManorWar:
|
| | | # GameLogic_ManorWar.OnManorWarStateChange(value, tick)
|
| | |
|
| | | #定时商店刷新
|
| | | elif key.startswith(ShareDefine.Def_Notify_WorldKey_TimeShopRefreshTime[:-2]):
|
| | | ShopItemManage.OnTimeShopRefresh(key, value, tick)
|
| | | |
| | | # 跨服PK
|
| | | elif key == ShareDefine.Def_Notify_WorldKey_CrossPKSeasonID:
|
| | | PlayerCrossRealmPK.OnCrossRealmPKSeasonChange(value)
|
| | |
| | | # 王者仙盟
|
| | | elif key == ShareDefine.Def_Notify_WorldKey_ChampionFamilyID:
|
| | | GameLogic_FamilyWar.OnChampionFamilyIDChange()
|
| | | |
| | | # 特惠活动
|
| | | elif key in ShareDefine.TeHuiTypeKeyDict.values():
|
| | | PlayerTeHui.ChangeTeHuiActionState(key)
|
| | |
|
| | | # 活动buff状态变更
|
| | | elif key.startswith(ShareDefine.Def_Notify_WorldKey_ActionBuffState[:-2]):
|
| | |
| | | Def_Notify_WorldKey_ManorWarLastFamilyID = 'ManorWarLastFamilyID_%s' # 领地争夺上次占领的战盟id,%s地图id
|
| | | Def_Notify_WorldKey_ManorWarServerDay = 'ManorWarServerDay' # 领地战活动时的开服天数
|
| | |
|
| | | Def_Notify_WorldKey_DayAction_ID = "%s_ID" # 按天开启的活动唯一id,参数为活动标识key
|
| | | Def_Notify_WorldKey_DayAction_BeginTime = "%s_BT" # 按天开启的活动开始时间,参数为活动标识key
|
| | | Def_Notify_WorldKey_DayAction_EndTime = "%s_ET" # 按天开启的活动结束时间,参数为活动标识key
|
| | | Def_Notify_WorldKey_DayAction_ClassUPNum = "DA_ClassUPNum" # 按天开启的活动标识key - 升阶特惠活动编号
|
| | | Def_Notify_WorldKey_DayAction_Recharge = "DA_Recharge" # 按天开启的活动标识key - 充值特惠
|
| | | Def_Notify_WorldKey_DayAction_DiscountShop = "DA_DiscountShop" # 按天开启的活动标识key - 折扣店
|
| | | Def_Notify_WorldKey_DayAction_RechargeRank = "DA_RechargeRank" # 按天开启的活动标识key - 充值排行榜特惠
|
| | | Def_Notify_WorldKey_DayAction_MixDiscountShop = "DA_MixDiscountShop" # 按天开启的活动标识key - 合服折扣店
|
| | | Def_Notify_WorldKey_DayAction_CostProfit = "DA_CostProfit" # 按天开启的活动标识key - 消费返利
|
| | | Def_Notify_WorldKey_DayAction_CostRank = "DA_CostRank" # 按天开启的活动标识key - 消费特惠排行榜
|
| | |
|
| | | Def_Notify_WorldKey_ShopState = 'ShopState_%s' # 自定义商店开启状态, 参数为ShopID
|
| | | Def_Notify_WorldKey_TimeShopRefreshTime = 'TimeShopRefreshTime_%s' # 定时商店上次全服刷新时间
|
| | | Def_Notify_WorldKey_ActionBuffState = 'ActionBuffState_%s' # 活动玩家buff状态, 1-可加,0-不可添加; 参数为buffID
|
| | |
|
| | | Def_Notify_WorldKey_LoginAwardStartDate = 'LoginAwardStartDate_%s' # 登录领取奖励开始时间,参数为活动类型
|
| | |
| | |
|
| | | Def_BT_HighLadder, #天梯竞技场排行
|
| | | Def_BT_HighLadder_Yester, #天梯竞技场昨日排行
|
| | | Def_BT_RechargeTeHuiLast, #充值特惠活动排行榜-上一期记录
|
| | | Def_BT_RechargeTeHui, #充值特惠活动排行榜-当前期记录
|
| | | |
| | | Def_BT_CostTeHui, #消费特惠排行榜
|
| | | Def_BT_CostTeHuiLast, #消费特惠排行榜上一期
|
| | |
|
| | | Def_BT_Max, #排行榜最大类型
|
| | | ) = range(0, 30 + 2) |
| | | ) = range(0, 26 + 2) |
| | |
|
| | | #职业对应战力排行榜类型
|
| | | JobFightPowerBillboardDict = {
|
| | |
| | | Def_UniversalGameRecType_32,
|
| | | Def_UniversalGameRecType_ManorWarInfo, # 领地争夺战占领结果33
|
| | | Def_UniversalGameRecType_34,
|
| | | Def_UniversalGameRecType_ShopItem, # 自定义商店全服限购数据35
|
| | | Def_UniversalGameRecType_35,
|
| | | Def_UniversalGameRecType_36,
|
| | | Def_UniversalGameRecType_37,
|
| | | Def_UniversalGameRecType_38,
|
| | |
| | | Difficulty_Elite, # 精英
|
| | | Difficulty_Hero, # 英雄
|
| | | ) = range(3)
|
| | |
|
| | | # 称号类型定义,需与\PySysDB\tagDienstgrad.txt表中的类型Type一致,从1开始
|
| | | (
|
| | | Def_DienstgradType_Flower, # 鲜花称号
|
| | | ) = range(1, 2)
|
| | |
|
| | | # 特惠活动类型
|
| | | TeHuiActivityList = (
|
| | | TeHuiActivity_Recharge, # 0充值特惠
|
| | | TeHuiActivity_ClassUP, # 功能升阶特惠
|
| | | TeHuiActivity_DiscountShop, # 折扣店特惠
|
| | | TeHuiActivity_RechargeRank, # 充值排行特惠/合服每日充值排行榜
|
| | | TeHuiActivity_MixDiscountShop, # 合服折扣店特惠
|
| | | TeHuiActivity_CostProfit, # 5消费返利
|
| | | TeHuiActivity_CostRank, # 消费排行榜
|
| | | ) = range(1, 7 + 1)
|
| | |
|
| | |
|
| | | # 特惠活动类型对应的Key
|
| | | TeHuiTypeKeyDict = {
|
| | | TeHuiActivity_Recharge:Def_Notify_WorldKey_DayAction_Recharge,
|
| | | TeHuiActivity_ClassUP:Def_Notify_WorldKey_DayAction_ClassUPNum,
|
| | | TeHuiActivity_DiscountShop:Def_Notify_WorldKey_DayAction_DiscountShop,
|
| | | TeHuiActivity_RechargeRank:Def_Notify_WorldKey_DayAction_RechargeRank,
|
| | | TeHuiActivity_MixDiscountShop:Def_Notify_WorldKey_DayAction_MixDiscountShop,
|
| | | TeHuiActivity_CostProfit:Def_Notify_WorldKey_DayAction_CostProfit,
|
| | | TeHuiActivity_CostRank:Def_Notify_WorldKey_DayAction_CostRank,
|
| | | }
|
| | |
|
| | | # 功能升阶日类型
|
| | | ClassUPDayList = (
|
| | | ClassUPDay_Horse, # 坐骑
|
| | | ClassUPDay_Wing, # 翅膀
|
| | | ClassUPDay_Office # 官爵
|
| | | ) = range(1, 3 + 1)
|
| | |
|
| | | # 总动员类型
|
| | | Def_ZDY_List = (
|
| | | Def_ZDY_Horse, # 坐骑
|
| | | Def_ZDY_Wing, # 翅膀
|
| | | Def_ZDY_Office, # 官爵
|
| | | Def_ZDY_Pet, # 宠物
|
| | | Def_ZDY_FightPower, # 战力
|
| | | ) = range(1, 5 + 1)
|
| | |
|
| | | # 自定义商店查询定义
|
| | | (
|
| | | Def_ShopItem_QueryServerBuyCnt, # 查询全部全服限购数据
|
| | | Def_ShopItem_BuyItem, # 购买物品
|
| | | Def_ShopItem_ClearBuyCnt, # 重置全服限购数据
|
| | | Def_ShopItem_SyncServerBuyCnt, # 同步单品全服限购数据
|
| | | ) = range(4)
|
| | |
|
| | |
|
| | | # 每日活动编号定义
|
| | | DailyActionIDList = (
|