10256 【越南】【砍树】排行榜名次加入积分限制(仙匣秘境;古宝养成;boss历练)
| | |
| | | BYTE Rank; //名次
|
| | | list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励
|
| | | list MemAwardItemList; //仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...]
|
| | | DWORD NeedScore; //上榜所需积分
|
| | | dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
|
| | | };
|
| | |
|
| | | //Boss历练跨服活动表
|
| | |
| | | list NotifyInfoLoop; //全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]]
|
| | | BYTE IsDayReset; //是否每天重置
|
| | | BYTE ResetType; //重置类型,0-0点重置;1-5点重置
|
| | | list RankLimitList; //上榜个数限制 个人|仙盟
|
| | | WORD PersonalTemplateID; //个人排行模板编号
|
| | | WORD FamilyTemplateID; //仙盟排行模板编号
|
| | | };
|
| | |
| | | char EndDate; //结束日期
|
| | | char JoinStartTime; //参与开始时间点
|
| | | char JoinEndTime; //参与结束时间点
|
| | | WORD RankLimitPersonal; //个人上榜积分限制
|
| | | WORD PersonalTemplateID; //个人排行模板编号
|
| | | };
|
| | |
|
| | |
| | | DWORD _TemplateID; //模板编号
|
| | | BYTE Rank; //名次
|
| | | list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
|
| | | DWORD NeedScore; //上榜所需积分
|
| | | dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
|
| | | };
|
| | |
|
| | | //仙匣秘境活动时间表
|
| | |
| | | char JoinStartTime; //参与开始时间点
|
| | | char JoinEndTime; //参与结束时间点
|
| | | BYTE IsDayReset; //是否每天重置
|
| | | WORD RankLimitPersonal; //个人上榜积分限制
|
| | | WORD PersonalTemplateID; //个人排行模板编号
|
| | | };
|
| | |
|
| | |
| | | DWORD _TemplateID; //模板编号
|
| | | BYTE Rank; //名次
|
| | | list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
|
| | | DWORD NeedScore; //上榜所需积分
|
| | | dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
|
| | | };
|
| | |
|
| | | //天帝礼包活动时间表
|
| | |
| | | BYTE Rank; //名次
|
| | | list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励
|
| | | list MemAwardItemList; //仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...]
|
| | | DWORD NeedScore; //上榜所需积分
|
| | | dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
|
| | | };
|
| | |
|
| | | //骑宠养成活动时间表
|
| | |
| | | DWORD _TemplateID; //模板编号
|
| | | BYTE Rank; //名次
|
| | | list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
|
| | | DWORD NeedScore; //上榜所需积分
|
| | | dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
|
| | | };
|
| | |
|
| | | //仙匣秘境活动时间表
|
| | |
| | | DWORD _TemplateID; //模板编号
|
| | | BYTE Rank; //名次
|
| | | list AwardItemList; //奖励物品列表[[物品ID,个数,是否拍品], ...]
|
| | | DWORD NeedScore; //上榜所需积分
|
| | | dict ScoreAwardEx; //达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...}
|
| | | };
|
| | |
|
| | | //仙匣秘境奖池表
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActBossTrialAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActBossTrialItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActBossTrialBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
|
| | | MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
|
| | | MemAwardItemList = list() #(vector<tagMCActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temMemAwardItemList = tagMCActBossTrialItem()
|
| | | _pos = temMemAwardItemList.ReadData(_lpData, _pos)
|
| | | self.MemAwardItemList.append(temMemAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCActBossTrialAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.AwardItemList = list()
|
| | | self.MemCount = 0
|
| | | self.MemAwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.MemCount):
|
| | | length += self.MemAwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.MemCount)
|
| | | for i in range(self.MemCount):
|
| | | data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | MemCount:%d,
|
| | | MemAwardItemList:%s
|
| | | MemAwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.MemCount,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | class tagMCActGubaoAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActGubaoItem()
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCActGubaoAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActGubaoItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCActGubaoAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | class tagMCActXianXiaMJAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActXianXiaMJItem()
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActXianXiaMJItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCActXianXiaMJAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActBossTrialAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActBossTrialItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActBossTrialBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
|
| | | MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
|
| | | MemAwardItemList = list() #(vector<tagMCCrossActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCCrossActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temMemAwardItemList = tagMCCrossActBossTrialItem()
|
| | | _pos = temMemAwardItemList.ReadData(_lpData, _pos)
|
| | | self.MemAwardItemList.append(temMemAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCCrossActBossTrialAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.AwardItemList = list()
|
| | | self.MemCount = 0
|
| | | self.MemAwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.MemCount):
|
| | | length += self.MemAwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.MemCount)
|
| | | for i in range(self.MemCount):
|
| | | data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | MemCount:%d,
|
| | | MemAwardItemList:%s
|
| | | MemAwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.MemCount,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜个数保底限制;
|
| | | RankLimitFamily = 0 #(WORD RankLimitFamily)// 仙盟榜上榜个数保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActBossTrialBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | FamilyBillCount = 0 #(BYTE FamilyBillCount)
|
| | |
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RankLimitFamily,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActBossTrialBillard()
|
| | |
| | | self.JoinEndTime = ""
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.RankLimitPersonal = 0
|
| | | self.RankLimitFamily = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | self.FamilyBillCount = 0
|
| | |
| | | length += 5
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteWORD(data, self.RankLimitFamily)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | |
| | | JoinEndTime:%s,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | RankLimitPersonal:%d,
|
| | | RankLimitFamily:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s,
|
| | | FamilyBillCount:%d,
|
| | |
| | | self.JoinEndTime,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.RankLimitPersonal,
|
| | | self.RankLimitFamily,
|
| | | self.PersonalBillCount,
|
| | | "...",
|
| | | self.FamilyBillCount,
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | class tagMCCrossActGubaoAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActGubaoItem()
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCCrossActGubaoAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActGubaoItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCCrossActGubaoAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
|
| | | JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActGubaoBillard()
|
| | |
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.RankLimitPersonal = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | return
|
| | |
| | | length += 10
|
| | | length += 5
|
| | | length += 5
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinStartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | |
| | | EndtDate:%s,
|
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | RankLimitPersonal:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | |
| | | self.EndtDate,
|
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.RankLimitPersonal,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | class tagMCCrossActXianXiaMJAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActXianXiaMJItem()
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCCrossActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActXianXiaMJItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCCrossActXianXiaMJAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
|
| | | JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
| | | self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActXianXiaMJBillard()
|
| | |
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.IsDayReset = 0
|
| | | self.RankLimitPersonal = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | return
|
| | |
| | | length += 5
|
| | | length += 5
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, 5, self.JoinStartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | |
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | IsDayReset:%d,
|
| | | RankLimitPersonal:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | |
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.IsDayReset,
|
| | | self.RankLimitPersonal,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "删除榜单假数据: BillboardData 类型")
|
| | | GameWorld.DebugAnswer(curPlayer, "榜单类型:0-战力,1-龙魂,2-灵瑶,4-等级,5-坐骑,6-灵宠,7-符印,8-脱机,9-境界,19-助战")
|
| | | GameWorld.DebugAnswer(curPlayer, "开服活动榜类型:11-强化,12-坐骑,13-宝石,14-冲级,15-境界,16-战力,18-符印,20-神兵,21-充值,22-灵宠,24-灵根,25-升星")
|
| | | GameWorld.DebugAnswer(curPlayer, "运营活动榜类型:17-仙界盛典,23-仙界盛典2,33-boss凭证,36-boss凭证仙盟")
|
| | | GameWorld.DebugAnswer(curPlayer, "运营活动榜类型:17-仙界盛典,23-仙界盛典2,33-boss凭证,36-boss凭证仙盟,38-仙匣,39-古宝,40-骑宠")
|
| | | GameWorld.DebugAnswer(curPlayer, "魅力榜单类型:30-总榜,31-周榜,32-日榜")
|
| | | return
|
| | |
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, errInfo)
|
| | | GameWorld.DebugAnswer(curPlayer, "新增跨服榜单假数据: BillboardDataCross 类型 分组值1 分组值2 条数 比较值1 可选参数(比较值2 常规值1~5)")
|
| | | GameWorld.DebugAnswer(curPlayer, "删除跨服榜单假数据: BillboardDataCross 类型 分组值1 分组值2")
|
| | | GameWorld.DebugAnswer(curPlayer, "跨服运营活动榜类型:150-充值(分组值1配置ID)")
|
| | | GameWorld.DebugAnswer(curPlayer, "运营活动榜类型:150-充值(分组值1配置ID)")
|
| | | GameWorld.DebugAnswer(curPlayer, "运营活动榜类型:158-boss凭证,160-凭证仙盟,162-仙匣,163-古宝,164-骑宠")
|
| | | GameWorld.DebugAnswer(curPlayer, "古神战场榜类型:151-参与榜,152-召集榜,153-积分榜")
|
| | | GameWorld.DebugAnswer(curPlayer, "逐鹿万界榜类型:156-单场榜,157-周榜")
|
| | | GameWorld.DebugAnswer(curPlayer, "注:如果没有特殊说明,分组值1为分区ID,分组2为0")
|
| | | return
|
| | |
|
| | | ## 执行逻辑
|
| | |
| | | ("BYTE", "Rank", 0),
|
| | | ("list", "AwardItemList", 0),
|
| | | ("list", "MemAwardItemList", 0),
|
| | | ("DWORD", "NeedScore", 0),
|
| | | ("dict", "ScoreAwardEx", 0),
|
| | | ),
|
| | |
|
| | | "CrossActBossTrial":(
|
| | |
| | | ("list", "NotifyInfoLoop", 0),
|
| | | ("BYTE", "IsDayReset", 0),
|
| | | ("BYTE", "ResetType", 0),
|
| | | ("list", "RankLimitList", 0),
|
| | | ("WORD", "PersonalTemplateID", 0),
|
| | | ("WORD", "FamilyTemplateID", 0),
|
| | | ),
|
| | |
| | | ("char", "EndDate", 0),
|
| | | ("char", "JoinStartTime", 0),
|
| | | ("char", "JoinEndTime", 0),
|
| | | ("WORD", "RankLimitPersonal", 0),
|
| | | ("WORD", "PersonalTemplateID", 0),
|
| | | ),
|
| | |
|
| | |
| | | ("DWORD", "TemplateID", 1),
|
| | | ("BYTE", "Rank", 0),
|
| | | ("list", "AwardItemList", 0),
|
| | | ("DWORD", "NeedScore", 0),
|
| | | ("dict", "ScoreAwardEx", 0),
|
| | | ),
|
| | |
|
| | | "ActXianXiaMJ":(
|
| | |
| | | ("char", "JoinStartTime", 0),
|
| | | ("char", "JoinEndTime", 0),
|
| | | ("BYTE", "IsDayReset", 0),
|
| | | ("WORD", "RankLimitPersonal", 0),
|
| | | ("WORD", "PersonalTemplateID", 0),
|
| | | ),
|
| | |
|
| | |
| | | ("DWORD", "TemplateID", 1),
|
| | | ("BYTE", "Rank", 0),
|
| | | ("list", "AwardItemList", 0),
|
| | | ("DWORD", "NeedScore", 0),
|
| | | ("dict", "ScoreAwardEx", 0),
|
| | | ),
|
| | |
|
| | | "ActGodGift":(
|
| | |
| | | def GetRank(self): return self.attrTuple[1] # 名次 BYTE
|
| | | def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励 list
|
| | | def GetMemAwardItemList(self): return self.attrTuple[3] # 仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...] list |
| | | def GetNeedScore(self): return self.attrTuple[4] # 上榜所需积分 DWORD
|
| | | def GetScoreAwardEx(self): return self.attrTuple[5] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict |
| | | |
| | | # Boss历练跨服活动表 |
| | | class IPY_CrossActBossTrial(): |
| | |
| | | def GetNotifyInfoLoop(self): return self.attrTuple[10] # 全服提示信息 - 循环广播[循环分钟, 广播key, [广播参数列表可选]] list
|
| | | def GetIsDayReset(self): return self.attrTuple[11] # 是否每天重置 BYTE
|
| | | def GetResetType(self): return self.attrTuple[12] # 重置类型,0-0点重置;1-5点重置 BYTE
|
| | | def GetRankLimitList(self): return self.attrTuple[13] # 上榜个数限制 个人|仙盟 list
|
| | | def GetPersonalTemplateID(self): return self.attrTuple[14] # 个人排行模板编号 WORD
|
| | | def GetFamilyTemplateID(self): return self.attrTuple[15] # 仙盟排行模板编号 WORD |
| | | def GetPersonalTemplateID(self): return self.attrTuple[13] # 个人排行模板编号 WORD
|
| | | def GetFamilyTemplateID(self): return self.attrTuple[14] # 仙盟排行模板编号 WORD |
| | | |
| | | # 骑宠养成活动时间表 |
| | | class IPY_ActHorsePetTrain(): |
| | |
| | | def GetEndDate(self): return self.attrTuple[5] # 结束日期 char
|
| | | def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
|
| | | def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
|
| | | def GetRankLimitPersonal(self): return self.attrTuple[8] # 个人上榜积分限制 WORD
|
| | | def GetPersonalTemplateID(self): return self.attrTuple[9] # 个人排行模板编号 WORD |
| | | def GetPersonalTemplateID(self): return self.attrTuple[8] # 个人排行模板编号 WORD |
| | | |
| | | # 古宝养成榜单模版表 |
| | | class IPY_ActGubaoBillTemp(): |
| | |
| | | def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
|
| | | def GetRank(self): return self.attrTuple[1] # 名次 BYTE
|
| | | def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list |
| | | def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
|
| | | def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict |
| | | |
| | | # 仙匣秘境活动时间表 |
| | | class IPY_ActXianXiaMJ(): |
| | |
| | | def GetJoinStartTime(self): return self.attrTuple[6] # 参与开始时间点 char
|
| | | def GetJoinEndTime(self): return self.attrTuple[7] # 参与结束时间点 char
|
| | | def GetIsDayReset(self): return self.attrTuple[8] # 是否每天重置 BYTE
|
| | | def GetRankLimitPersonal(self): return self.attrTuple[9] # 个人上榜积分限制 WORD
|
| | | def GetPersonalTemplateID(self): return self.attrTuple[10] # 个人排行模板编号 WORD |
| | | def GetPersonalTemplateID(self): return self.attrTuple[9] # 个人排行模板编号 WORD |
| | | |
| | | # 仙匣秘境榜单模版表 |
| | | class IPY_ActXianXiaMJBillTemp(): |
| | |
| | | def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
|
| | | def GetRank(self): return self.attrTuple[1] # 名次 BYTE
|
| | | def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list |
| | | def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
|
| | | def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict |
| | | |
| | | # 天帝礼包活动时间表 |
| | | class IPY_ActGodGift(): |
| | |
| | | if not templateID: |
| | | GameWorld.Log("本次活动没有个人榜奖励!") |
| | | return |
| | | tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID) |
| | | if not tempIpyDataList: |
| | | billboardDataCount = billBoard.GetCount() |
| | | billBoard.Sort() |
| | | |
| | | GameWorld.Log("结算个人榜单奖励: billboardType=%s,templateID=%s,billboardDataCount=%s" % (billboardType, templateID, billboardDataCount)) |
| | | |
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID) |
| | | if not orderIpyDataList: |
| | | return |
| | | |
| | | rankAwardDict = {} |
| | | for tempIpyData in tempIpyDataList: |
| | | rankAwardDict[tempIpyData.GetRank()] = tempIpyData.GetAwardItemList() |
| | | rankPre = 0 |
| | | billboardIndex = 0 |
| | | for ipyData in orderIpyDataList: |
| | | rank = ipyData.GetRank() |
| | | needScore = ipyData.GetNeedScore() |
| | | scoreAwardEx = ipyData.GetScoreAwardEx() |
| | | scoreAwardExList = scoreAwardEx.keys() |
| | | scoreAwardExList.sort() |
| | | awardItemList = ipyData.GetAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | | |
| | | GameWorld.Log("结算个人榜单奖励: templateID=%s,rankAwardDict=%s" % (templateID, rankAwardDict)) |
| | | billBoard.Sort() |
| | | for index in xrange(billBoard.GetCount()): |
| | | billBoardData = billBoard.At(index) |
| | | if not billBoardData: |
| | | continue |
| | | |
| | | rank = index + 1 |
| | | |
| | | awardItemList = GameWorld.GetOrderValueByDict(rankAwardDict, rank, False) |
| | | if not awardItemList: |
| | | for index in xrange(billboardIndex, billboardDataCount): |
| | | if orderCountTotal <= 0: |
| | | break |
| | | |
| | | billBoardData = billBoard.At(index) |
| | | playerID = billBoardData.GetID() |
| | | name2 = billBoardData.GetName2() |
| | | cmpValue = billBoardData.GetCmpValue() |
| | | |
| | | GameWorld.Log(" 发放boss历练个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s" |
| | | % (rank, playerID, cmpValue, awardItemList, name2)) |
| | | if cmpValue < needScore: |
| | | GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore)) |
| | | break |
| | | |
| | | PlayerCompensation.SendMailByKey("BossTrialMail10", [playerID], awardItemList, [rank]) |
| | | awardItemExList = [] |
| | | for scoreEx in scoreAwardExList: |
| | | if cmpValue < scoreEx: |
| | | break |
| | | awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档 |
| | | finalAwardItemList = awardItemList + awardItemExList |
| | | |
| | | playerRank = rank - orderCountTotal + 1 |
| | | GameWorld.Log(" 发放boss历练个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s" |
| | | % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("BossTrialMail10", [playerID], finalAwardItemList, [playerRank]) |
| | | |
| | | orderCountTotal -= 1 |
| | | billboardIndex += 1 |
| | | |
| | | return |
| | | |
| | |
| | | if not familyTemplateID: |
| | | GameWorld.Log("本次活动没有仙盟榜奖励!") |
| | | return |
| | | tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", familyTemplateID) |
| | | if not tempIpyDataList: |
| | | return |
| | | |
| | | rankAwardDict = {} |
| | | for tempIpyData in tempIpyDataList: |
| | | rankAwardDict[tempIpyData.GetRank()] = [tempIpyData.GetAwardItemList(), tempIpyData.GetMemAwardItemList()] |
| | | |
| | | GameWorld.Log("结算仙盟榜单奖励: familyTemplateID=%s,rankAwardDict=%s" % (familyTemplateID, rankAwardDict)) |
| | | billboardDataCount = billBoard.GetCount() |
| | | billBoard.Sort() |
| | | |
| | | GameWorld.Log("结算仙盟榜单奖励: billboardType=%s,familyTemplateID=%s,billboardDataCount=%s" % (billboardType, familyTemplateID, billboardDataCount)) |
| | | |
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", familyTemplateID) |
| | | if not orderIpyDataList: |
| | | return |
| | | |
| | | familyManager = GameWorld.GetFamilyManager() |
| | | for index in xrange(billBoard.GetCount()): |
| | | billBoardData = billBoard.At(index) |
| | | if not billBoardData: |
| | | continue |
| | | rankPre = 0 |
| | | billboardIndex = 0 |
| | | for ipyData in orderIpyDataList: |
| | | rank = ipyData.GetRank() |
| | | needScore = ipyData.GetNeedScore() |
| | | leaderAwardItemList = ipyData.GetAwardItemList() |
| | | memAwardItemList = ipyData.GetMemAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | | |
| | | familyRank = index + 1 |
| | | awardInfo = GameWorld.GetOrderValueByDict(rankAwardDict, familyRank, False) |
| | | if not awardInfo: |
| | | for index in xrange(billboardIndex, billboardDataCount): |
| | | if orderCountTotal <= 0: |
| | | break |
| | | leaderAwardItemList, memAwardItemList = awardInfo |
| | | |
| | | billBoardData = billBoard.At(index) |
| | | familyID = billBoardData.GetID() |
| | | cmpValue = billBoardData.GetCmpValue() |
| | | |
| | | if cmpValue < needScore: |
| | | GameWorld.Log(" 不足该榜单所需提交数,跳过该名次: index=%s,rank=%s,familyID=%s,cmpValue=%s < %s" % (index, rank, familyID, cmpValue, needScore)) |
| | | break |
| | | |
| | | familyRank = rank - orderCountTotal + 1 |
| | | orderCountTotal -= 1 |
| | | billboardIndex += 1 |
| | | |
| | | family = familyManager.FindFamily(familyID) |
| | | if not family: |
| | |
| | | PlayerCompensation.SendMailByKey("BossTrialFamilyLeader", [leaderID], leaderAwardItemList, paramList) |
| | | |
| | | PlayerCompensation.SendMailByKey("BossTrialFamilyMember", awardMemIDList, memAwardItemList, paramList) |
| | | GameWorld.Log("发放boss历练活动仙盟榜单奖励本服: familyID=%s,名次=%s,总提交个数=%s,updAwardState=%s,awardMemIDList=%s,memSubCountDict=%s" |
| | | % (familyID, familyRank, cmpValue, updAwardState, awardMemIDList, memSubCountDict)) |
| | | GameWorld.Log("发放boss历练活动仙盟榜单奖励本服: index=%s,rank=%s,familyID=%s,名次=%s,总提交个数=%s,updAwardState=%s,awardMemIDList=%s,memSubCountDict=%s" |
| | | % (index, rank, familyID, familyRank, cmpValue, updAwardState, awardMemIDList, memSubCountDict)) |
| | | |
| | | return |
| | | |
| | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("CrossActBossTrial", cfgID) |
| | | if not ipyData: |
| | | return |
| | | personlLimit, familyLimit = ipyData.GetRankLimitList() |
| | | personlLimit, familyLimit = 0, 0 |
| | | |
| | | PersonalTemplateID = ipyData.GetPersonalTemplateID() |
| | | pRankIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", PersonalTemplateID) if PersonalTemplateID else None |
| | | if pRankIpyDataList: |
| | | lastRankIpyData = pRankIpyDataList[-1] # 取最后一个为最低上榜积分限制 |
| | | personlLimit = lastRankIpyData.GetNeedScore() |
| | | |
| | | FamilyTemplateID = ipyData.GetFamilyTemplateID() |
| | | fRankIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", FamilyTemplateID) if FamilyTemplateID else None |
| | | if fRankIpyDataList: |
| | | lastRankIpyData = fRankIpyDataList[-1] # 取最后一个为最低上榜积分限制 |
| | | familyLimit = lastRankIpyData.GetNeedScore() |
| | | |
| | | playerID = playerInfo["playerID"] |
| | | playerName = playerInfo["playerName"] |
| | |
| | | % (billboardType, zoneID, cfgID, templateID, billboardDataCount)) |
| | | |
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID) |
| | | if orderIpyDataList: |
| | | if not orderIpyDataList: |
| | | return |
| | | |
| | | rankPre = 0 |
| | | billboardIndex = 0 |
| | | for ipyData in orderIpyDataList: |
| | | rank = ipyData.GetRank() |
| | | needScore = ipyData.GetNeedScore() |
| | | scoreAwardEx = ipyData.GetScoreAwardEx() |
| | | scoreAwardExList = scoreAwardEx.keys() |
| | | scoreAwardExList.sort() |
| | | awardItemList = ipyData.GetAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | | orderCount = 0 |
| | | |
| | | for index in xrange(billboardIndex, billboardDataCount): |
| | | if orderCount >= orderCountTotal: |
| | | if orderCountTotal <= 0: |
| | | break |
| | | |
| | | billboardData = billboardObj.At(index) |
| | | playerID = billboardData.ID |
| | | name2 = billboardData.Name2 |
| | | cmpValue = billboardData.CmpValue |
| | | if cmpValue < needScore: |
| | | GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore)) |
| | | break |
| | | |
| | | playerRank = index + 1 |
| | | GameWorld.Log(" 发放boss历练个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s" |
| | | % (rank, playerID, cmpValue, awardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("BossTrialCrossPlayer", [playerID], awardItemList, [playerRank], crossMail=True) |
| | | awardItemExList = [] |
| | | for scoreEx in scoreAwardExList: |
| | | if cmpValue < scoreEx: |
| | | break |
| | | awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档 |
| | | finalAwardItemList = awardItemList + awardItemExList |
| | | |
| | | orderCount += 1 |
| | | playerRank = rank - orderCountTotal + 1 |
| | | GameWorld.Log(" 发放boss历练个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s" |
| | | % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("BossTrialCrossPlayer", [playerID], finalAwardItemList, [playerRank], crossMail=True) |
| | | |
| | | orderCountTotal -= 1 |
| | | billboardIndex += 1 |
| | | |
| | | return |
| | |
| | | % (billboardType, zoneID, cfgID, templateID, billboardDataCount)) |
| | | |
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActBossTrialTemplate", templateID) |
| | | if orderIpyDataList: |
| | | if not orderIpyDataList: |
| | | return |
| | | |
| | | awardFamilyList = [] |
| | | rankPre = 0 |
| | | billboardIndex = 0 |
| | | for ipyData in orderIpyDataList: |
| | | rank = ipyData.GetRank() |
| | | needScore = ipyData.GetNeedScore() |
| | | leaderAwardItemList = ipyData.GetAwardItemList() |
| | | memAwardItemList = ipyData.GetMemAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | | orderCount = 0 |
| | | |
| | | for index in xrange(billboardIndex, billboardDataCount): |
| | | if orderCount >= orderCountTotal: |
| | | if orderCountTotal <= 0: |
| | | break |
| | | |
| | | billboardData = billboardObj.At(index) |
| | | familyID = billboardData.ID |
| | | familySubmitTotal = billboardData.CmpValue |
| | | |
| | | familyRank = index + 1 |
| | | GameWorld.Log(" familyID=%s,名次=%s,总提交个数=%s" % (familyID, familyRank, familySubmitTotal)) |
| | | if familySubmitTotal < needScore: |
| | | GameWorld.Log(" 不足该榜单所需提交数,跳过该名次: index=%s,rank=%s,familyID=%s,familySubmitTotal=%s < %s" % (index, rank, familyID, familySubmitTotal, needScore)) |
| | | break |
| | | |
| | | familyRank = rank - orderCountTotal + 1 |
| | | GameWorld.Log(" index=%s,rank=%s,familyID=%s,名次=%s,总提交个数=%s" % (index, rank, familyID, familyRank, familySubmitTotal)) |
| | | awardFamilyList.append([familyID, familyRank, familySubmitTotal, leaderAwardItemList, memAwardItemList]) |
| | | orderCount += 1 |
| | | |
| | | orderCountTotal -= 1 |
| | | billboardIndex += 1 |
| | | |
| | | # 广播子服发放奖励 |
| | | sendMsg = {"cfgID":cfgID, "zoneID":zoneID, "templateID":templateID, "awardFamilyList":awardFamilyList} |
| | | CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_CrossBossTrialFamilyAward, sendMsg) |
| | | |
| | | return |
| | | |
| | |
| | | if not templateID: |
| | | GameWorld.Log("本次活动没有个人榜奖励!") |
| | | return |
| | | tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", templateID) |
| | | if not tempIpyDataList: |
| | | billboardDataCount = billBoard.GetCount() |
| | | billBoard.Sort() |
| | | |
| | | GameWorld.Log("结算个人榜单奖励: billboardType=%s,templateID=%s,billboardDataCount=%s" % (billboardType, templateID, billboardDataCount)) |
| | | |
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", templateID) |
| | | if not orderIpyDataList: |
| | | return |
| | | |
| | | rankAwardDict = {} |
| | | for tempIpyData in tempIpyDataList: |
| | | rankAwardDict[tempIpyData.GetRank()] = tempIpyData.GetAwardItemList() |
| | | rankPre = 0 |
| | | billboardIndex = 0 |
| | | for ipyData in orderIpyDataList: |
| | | rank = ipyData.GetRank() |
| | | needScore = ipyData.GetNeedScore() |
| | | scoreAwardEx = ipyData.GetScoreAwardEx() |
| | | scoreAwardExList = scoreAwardEx.keys() |
| | | scoreAwardExList.sort() |
| | | awardItemList = ipyData.GetAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | | |
| | | GameWorld.Log("结算个人榜单奖励: templateID=%s,rankAwardDict=%s" % (templateID, rankAwardDict)) |
| | | billBoard.Sort() |
| | | for index in xrange(billBoard.GetCount()): |
| | | billBoardData = billBoard.At(index) |
| | | if not billBoardData: |
| | | continue |
| | | |
| | | rank = index + 1 |
| | | |
| | | awardItemList = GameWorld.GetOrderValueByDict(rankAwardDict, rank, False) |
| | | if not awardItemList: |
| | | for index in xrange(billboardIndex, billboardDataCount): |
| | | if orderCountTotal <= 0: |
| | | break |
| | | |
| | | billBoardData = billBoard.At(index) |
| | | playerID = billBoardData.GetID() |
| | | name2 = billBoardData.GetName2() |
| | | cmpValue = billBoardData.GetCmpValue() |
| | | |
| | | GameWorld.Log(" 发放古宝养成个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s" |
| | | % (rank, playerID, cmpValue, awardItemList, name2)) |
| | | if cmpValue < needScore: |
| | | GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore)) |
| | | break |
| | | |
| | | PlayerCompensation.SendMailByKey("ActGubaoPlayer", [playerID], awardItemList, [rank]) |
| | | awardItemExList = [] |
| | | for scoreEx in scoreAwardExList: |
| | | if cmpValue < scoreEx: |
| | | break |
| | | awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档 |
| | | finalAwardItemList = awardItemList + awardItemExList |
| | | |
| | | playerRank = rank - orderCountTotal + 1 |
| | | GameWorld.Log(" 发放古宝养成个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s" |
| | | % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("ActGubaoPlayer", [playerID], finalAwardItemList, [playerRank]) |
| | | |
| | | orderCountTotal -= 1 |
| | | billboardIndex += 1 |
| | | |
| | | return |
| | | |
| | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("CrossActGubao", cfgID) |
| | | if not ipyData: |
| | | return |
| | | personlLimit = ipyData.GetRankLimitPersonal() |
| | | PersonalTemplateID = ipyData.GetPersonalTemplateID() |
| | | rankIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", PersonalTemplateID) |
| | | if not rankIpyDataList: |
| | | return |
| | | lastRankIpyData = rankIpyDataList[-1] # 取最后一个为最低上榜积分限制 |
| | | personlLimit = lastRankIpyData.GetNeedScore() |
| | | |
| | | playerID = playerInfo["playerID"] |
| | | playerName = playerInfo["playerName"] |
| | |
| | | if playerScore >= personlLimit: |
| | | name2, type2, value1, value2 = accID, job, realmLV, 0 |
| | | CrossBillboard.UpdCrossBillboard(ShareDefine.Def_CBT_GubaoScore, groupValue1, playerID, playerName, |
| | | name2, type2, value1, value2, playerScore) |
| | | name2, type2, value1, value2, playerScore, autoSort=False) |
| | | return |
| | | |
| | | def OnCrossActIDChange(cfgID, zoneID, ipyData, state): |
| | |
| | | % (billboardType, zoneID, cfgID, templateID, billboardDataCount)) |
| | | |
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActGubaoBillTemp", templateID) |
| | | if orderIpyDataList: |
| | | if not orderIpyDataList: |
| | | return |
| | | |
| | | rankPre = 0 |
| | | billboardIndex = 0 |
| | | for ipyData in orderIpyDataList: |
| | | rank = ipyData.GetRank() |
| | | needScore = ipyData.GetNeedScore() |
| | | scoreAwardEx = ipyData.GetScoreAwardEx() |
| | | scoreAwardExList = scoreAwardEx.keys() |
| | | scoreAwardExList.sort() |
| | | awardItemList = ipyData.GetAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | | orderCount = 0 |
| | | |
| | | for index in xrange(billboardIndex, billboardDataCount): |
| | | if orderCount >= orderCountTotal: |
| | | if orderCountTotal <= 0: |
| | | break |
| | | |
| | | billboardData = billboardObj.At(index) |
| | | playerID = billboardData.ID |
| | | name2 = billboardData.Name2 |
| | | cmpValue = billboardData.CmpValue |
| | | if cmpValue < needScore: |
| | | GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore)) |
| | | break |
| | | |
| | | playerRank = index + 1 |
| | | GameWorld.Log(" 发放古宝养成个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s" |
| | | % (rank, playerID, cmpValue, awardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("ActGubaoCrossPlayer", [playerID], awardItemList, [playerRank], crossMail=True) |
| | | awardItemExList = [] |
| | | for scoreEx in scoreAwardExList: |
| | | if cmpValue < scoreEx: |
| | | break |
| | | awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档 |
| | | finalAwardItemList = awardItemList + awardItemExList |
| | | |
| | | orderCount += 1 |
| | | playerRank = rank - orderCountTotal + 1 |
| | | GameWorld.Log(" 发放古宝养成个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s" |
| | | % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("ActGubaoCrossPlayer", [playerID], finalAwardItemList, [playerRank], crossMail=True) |
| | | |
| | | orderCountTotal -= 1 |
| | | billboardIndex += 1 |
| | | |
| | | return |
| | |
| | | needScore = ipyData.GetNeedScore() |
| | | scoreAwardEx = ipyData.GetScoreAwardEx() |
| | | scoreAwardExList = scoreAwardEx.keys() |
| | | scoreAwardExList.sort() |
| | | awardItemList = ipyData.GetAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | |
| | | needScore = ipyData.GetNeedScore() |
| | | scoreAwardEx = ipyData.GetScoreAwardEx() |
| | | scoreAwardExList = scoreAwardEx.keys() |
| | | scoreAwardExList.sort() |
| | | awardItemList = ipyData.GetAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | |
| | | if not templateID: |
| | | GameWorld.Log("本次活动没有个人榜奖励!") |
| | | return |
| | | tempIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActXianXiaMJBillTemp", templateID) |
| | | if not tempIpyDataList: |
| | | billboardDataCount = billBoard.GetCount() |
| | | billBoard.Sort() |
| | | |
| | | GameWorld.Log("结算个人榜单奖励: billboardType=%s,templateID=%s,billboardDataCount=%s" % (billboardType, templateID, billboardDataCount)) |
| | | |
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActXianXiaMJBillTemp", templateID) |
| | | if not orderIpyDataList: |
| | | return |
| | | |
| | | rankAwardDict = {} |
| | | for tempIpyData in tempIpyDataList: |
| | | rankAwardDict[tempIpyData.GetRank()] = tempIpyData.GetAwardItemList() |
| | | rankPre = 0 |
| | | billboardIndex = 0 |
| | | for ipyData in orderIpyDataList: |
| | | rank = ipyData.GetRank() |
| | | needScore = ipyData.GetNeedScore() |
| | | scoreAwardEx = ipyData.GetScoreAwardEx() |
| | | scoreAwardExList = scoreAwardEx.keys() |
| | | scoreAwardExList.sort() |
| | | awardItemList = ipyData.GetAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | | |
| | | GameWorld.Log("结算个人榜单奖励: templateID=%s,rankAwardDict=%s" % (templateID, rankAwardDict)) |
| | | billBoard.Sort() |
| | | for index in xrange(billBoard.GetCount()): |
| | | billBoardData = billBoard.At(index) |
| | | if not billBoardData: |
| | | continue |
| | | |
| | | rank = index + 1 |
| | | |
| | | awardItemList = GameWorld.GetOrderValueByDict(rankAwardDict, rank, False) |
| | | if not awardItemList: |
| | | for index in xrange(billboardIndex, billboardDataCount): |
| | | if orderCountTotal <= 0: |
| | | break |
| | | |
| | | billBoardData = billBoard.At(index) |
| | | playerID = billBoardData.GetID() |
| | | name2 = billBoardData.GetName2() |
| | | cmpValue = billBoardData.GetCmpValue() |
| | | |
| | | GameWorld.Log(" 发放仙匣秘境个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s" |
| | | % (rank, playerID, cmpValue, awardItemList, name2)) |
| | | if cmpValue < needScore: |
| | | GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore)) |
| | | break |
| | | |
| | | PlayerCompensation.SendMailByKey("XianXiaMJPlayer", [playerID], awardItemList, [rank]) |
| | | awardItemExList = [] |
| | | for scoreEx in scoreAwardExList: |
| | | if cmpValue < scoreEx: |
| | | break |
| | | awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档 |
| | | finalAwardItemList = awardItemList + awardItemExList |
| | | |
| | | playerRank = rank - orderCountTotal + 1 |
| | | GameWorld.Log(" 发放仙匣秘境个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s" |
| | | % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("XianXiaMJPlayer", [playerID], finalAwardItemList, [playerRank]) |
| | | |
| | | orderCountTotal -= 1 |
| | | billboardIndex += 1 |
| | | |
| | | return |
| | | |
| | |
| | | ipyData = IpyGameDataPY.GetIpyGameData("CrossActXianXiaMJ", cfgID) |
| | | if not ipyData: |
| | | return |
| | | personlLimit = ipyData.GetRankLimitPersonal() |
| | | PersonalTemplateID = ipyData.GetPersonalTemplateID() |
| | | rankIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActXianXiaMJBillTemp", PersonalTemplateID) |
| | | if not rankIpyDataList: |
| | | return |
| | | lastRankIpyData = rankIpyDataList[-1] # 取最后一个为最低上榜积分限制 |
| | | personlLimit = lastRankIpyData.GetNeedScore() |
| | | |
| | | playerID = playerInfo["playerID"] |
| | | playerName = playerInfo["playerName"] |
| | |
| | | if playerLotteryScore >= personlLimit: |
| | | name2, type2, value1, value2 = accID, job, realmLV, 0 |
| | | CrossBillboard.UpdCrossBillboard(ShareDefine.Def_CBT_XianXiaMJScore, groupValue1, playerID, playerName, |
| | | name2, type2, value1, value2, playerLotteryScore) |
| | | name2, type2, value1, value2, playerLotteryScore, autoSort=False) |
| | | return |
| | | |
| | | def OnCrossActIDChange(cfgID, zoneID, ipyData, state): |
| | |
| | | % (billboardType, zoneID, cfgID, templateID, billboardDataCount)) |
| | | |
| | | orderIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActXianXiaMJBillTemp", templateID) |
| | | if orderIpyDataList: |
| | | if not orderIpyDataList: |
| | | return |
| | | |
| | | rankPre = 0 |
| | | billboardIndex = 0 |
| | | for ipyData in orderIpyDataList: |
| | | rank = ipyData.GetRank() |
| | | needScore = ipyData.GetNeedScore() |
| | | scoreAwardEx = ipyData.GetScoreAwardEx() |
| | | scoreAwardExList = scoreAwardEx.keys() |
| | | scoreAwardExList.sort() |
| | | awardItemList = ipyData.GetAwardItemList() |
| | | orderCountTotal = rank - rankPre # 奖励名次数量 |
| | | rankPre = rank |
| | | orderCount = 0 |
| | | |
| | | for index in xrange(billboardIndex, billboardDataCount): |
| | | if orderCount >= orderCountTotal: |
| | | if orderCountTotal <= 0: |
| | | break |
| | | |
| | | billboardData = billboardObj.At(index) |
| | | playerID = billboardData.ID |
| | | name2 = billboardData.Name2 |
| | | cmpValue = billboardData.CmpValue |
| | | if cmpValue < needScore: |
| | | GameWorld.Log(" 积分不足该榜单所需积分,跳过该名次: index=%s,rank=%s,playerID=%s,cmpValue=%s < %s" % (index, rank, playerID, cmpValue, needScore)) |
| | | break |
| | | |
| | | playerRank = index + 1 |
| | | GameWorld.Log(" 发放仙匣秘境个人榜单奖励: rank=%s,playerID=%s,cmpValue=%s,awardItemList=%s, %s" |
| | | % (rank, playerID, cmpValue, awardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("XianXiaMJCrossPlayer", [playerID], awardItemList, [playerRank], crossMail=True) |
| | | awardItemExList = [] |
| | | for scoreEx in scoreAwardExList: |
| | | if cmpValue < scoreEx: |
| | | break |
| | | awardItemExList = scoreAwardEx[scoreEx] # 取最大满足条件的一档 |
| | | finalAwardItemList = awardItemList + awardItemExList |
| | | |
| | | orderCount += 1 |
| | | playerRank = rank - orderCountTotal + 1 |
| | | GameWorld.Log(" 发放仙匣秘境个人榜单奖励: index=%s,rank=%s,playerRank=%s,playerID=%s,cmpValue=%s,awardItemList=%s,scoreAwardEx=%s,finalAwardItemList=%s, %s" |
| | | % (index, rank, playerRank, playerID, cmpValue, awardItemList, scoreAwardEx, finalAwardItemList, name2)) |
| | | PlayerCompensation.SendMailByKey("XianXiaMJCrossPlayer", [playerID], finalAwardItemList, [playerRank], crossMail=True) |
| | | |
| | | orderCountTotal -= 1 |
| | | billboardIndex += 1 |
| | | |
| | | return |
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActBossTrialAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActBossTrialItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActBossTrialBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
|
| | | MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
|
| | | MemAwardItemList = list() #(vector<tagMCActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temMemAwardItemList = tagMCActBossTrialItem()
|
| | | _pos = temMemAwardItemList.ReadData(_lpData, _pos)
|
| | | self.MemAwardItemList.append(temMemAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCActBossTrialAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.AwardItemList = list()
|
| | | self.MemCount = 0
|
| | | self.MemAwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.MemCount):
|
| | | length += self.MemAwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.MemCount)
|
| | | for i in range(self.MemCount):
|
| | | data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | MemCount:%d,
|
| | | MemAwardItemList:%s
|
| | | MemAwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.MemCount,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | class tagMCActGubaoAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActGubaoItem()
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCActGubaoAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActGubaoItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCActGubaoAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | class tagMCActXianXiaMJAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActXianXiaMJItem()
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCActXianXiaMJItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCActXianXiaMJAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActBossTrialAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActBossTrialItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActBossTrialBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励
|
| | | MemCount = 0 #(BYTE MemCount)// 成员奖励物品数
|
| | | MemAwardItemList = list() #(vector<tagMCCrossActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCCrossActBossTrialAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temMemAwardItemList = tagMCCrossActBossTrialItem()
|
| | | _pos = temMemAwardItemList.ReadData(_lpData, _pos)
|
| | | self.MemAwardItemList.append(temMemAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCCrossActBossTrialAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.AwardItemList = list()
|
| | | self.MemCount = 0
|
| | | self.MemAwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.MemCount):
|
| | | length += self.MemAwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.MemCount)
|
| | | for i in range(self.MemCount):
|
| | | data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | MemCount:%d,
|
| | | MemAwardItemList:%s
|
| | | MemAwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.MemCount,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜个数保底限制;
|
| | | RankLimitFamily = 0 #(WORD RankLimitFamily)// 仙盟榜上榜个数保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActBossTrialBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | FamilyBillCount = 0 #(BYTE FamilyBillCount)
|
| | |
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RankLimitFamily,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActBossTrialBillard()
|
| | |
| | | self.JoinEndTime = ""
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.RankLimitPersonal = 0
|
| | | self.RankLimitFamily = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | self.FamilyBillCount = 0
|
| | |
| | | length += 5
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteWORD(data, self.RankLimitFamily)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | |
| | | JoinEndTime:%s,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | RankLimitPersonal:%d,
|
| | | RankLimitFamily:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s,
|
| | | FamilyBillCount:%d,
|
| | |
| | | self.JoinEndTime,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.RankLimitPersonal,
|
| | | self.RankLimitFamily,
|
| | | self.PersonalBillCount,
|
| | | "...",
|
| | | self.FamilyBillCount,
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | class tagMCCrossActGubaoAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActGubaoItem()
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActGubaoBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCCrossActGubaoAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActGubaoItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCCrossActGubaoAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
|
| | | JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActGubaoBillard()
|
| | |
| | | self.EndtDate = ""
|
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.RankLimitPersonal = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | return
|
| | |
| | | length += 10
|
| | | length += 5
|
| | | length += 5
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinStartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | |
| | | EndtDate:%s,
|
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | RankLimitPersonal:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | |
| | | self.EndtDate,
|
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.RankLimitPersonal,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
| | |
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | class tagMCCrossActXianXiaMJAwardEx(Structure):
|
| | | NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分
|
| | | Count = 0 #(BYTE Count)// 额外奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 额外奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActXianXiaMJItem()
|
| | |
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.NeedScore = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | |
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | NeedScore:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.NeedScore,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCCrossActXianXiaMJBillard(Structure):
|
| | | Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名
|
| | | Count = 0 #(BYTE Count)// 奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表
|
| | | NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分
|
| | | CountEx = 0 #(BYTE CountEx)// 额外奖励数
|
| | | AwardItemExList = list() #(vector<tagMCCrossActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temAwardItemList = tagMCCrossActXianXiaMJItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CountEx):
|
| | | temAwardItemExList = tagMCCrossActXianXiaMJAwardEx()
|
| | | _pos = temAwardItemExList.ReadData(_lpData, _pos)
|
| | | self.AwardItemExList.append(temAwardItemExList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Rank = 0
|
| | | self.Count = 0
|
| | | self.AwardItemList = list()
|
| | | self.NeedScore = 0
|
| | | self.CountEx = 0
|
| | | self.AwardItemExList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.CountEx):
|
| | | length += self.AwardItemExList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.Rank)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.NeedScore)
|
| | | data = CommFunc.WriteBYTE(data, self.CountEx)
|
| | | for i in range(self.CountEx):
|
| | | data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Rank:%d,
|
| | | Count:%d,
|
| | | AwardItemList:%s,
|
| | | NeedScore:%d,
|
| | | CountEx:%d,
|
| | | AwardItemExList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Rank,
|
| | | self.Count,
|
| | | "...",
|
| | | self.NeedScore,
|
| | | self.CountEx,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | | JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss
|
| | | JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
|
| | | RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制;
|
| | | PersonalBillCount = 0 #(BYTE PersonalBillCount)
|
| | | PersonalBillboardInfoList = list() #(vector<tagMCCrossActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励
|
| | | data = None
|
| | |
| | | self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PersonalBillCount):
|
| | | temPersonalBillboardInfoList = tagMCCrossActXianXiaMJBillard()
|
| | |
| | | self.JoinStartTime = ""
|
| | | self.JoinEndTime = ""
|
| | | self.IsDayReset = 0
|
| | | self.RankLimitPersonal = 0
|
| | | self.PersonalBillCount = 0
|
| | | self.PersonalBillboardInfoList = list()
|
| | | return
|
| | |
| | | length += 5
|
| | | length += 5
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.PersonalBillCount):
|
| | | length += self.PersonalBillboardInfoList[i].GetLength()
|
| | |
| | | data = CommFunc.WriteString(data, 5, self.JoinStartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.JoinEndTime)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.RankLimitPersonal)
|
| | | data = CommFunc.WriteBYTE(data, self.PersonalBillCount)
|
| | | for i in range(self.PersonalBillCount):
|
| | | data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer())
|
| | |
| | | JoinStartTime:%s,
|
| | | JoinEndTime:%s,
|
| | | IsDayReset:%d,
|
| | | RankLimitPersonal:%d,
|
| | | PersonalBillCount:%d,
|
| | | PersonalBillboardInfoList:%s
|
| | | '''\
|
| | |
| | | self.JoinStartTime,
|
| | | self.JoinEndTime,
|
| | | self.IsDayReset,
|
| | | self.RankLimitPersonal,
|
| | | self.PersonalBillCount,
|
| | | "..."
|
| | | )
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package GM.Commands.ActNum
|
| | | #
|
| | | # @todo:活动
|
| | | # @author hxp
|
| | | # @date 2024-08-29
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 活动
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2024-08-29 16:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import PlayerActXianXiaMJ
|
| | | import PlayerActHorsePetTrain
|
| | | import PlayerActGubao
|
| | | import ShareDefine
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | #逻辑实现
|
| | |
|
| | | ## GM命令执行入口
|
| | | # @param curPlayer 当前玩家
|
| | | # @param msgList 参数列表
|
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, msgList):
|
| | | if not msgList:
|
| | | GameWorld.DebugAnswer(curPlayer, "仙匣秘境加积分: ActNum x actNum 加积分 是否同步跨服")
|
| | | GameWorld.DebugAnswer(curPlayer, "骑宠养成加积分: ActNum q actNum 加积分 是否同步跨服")
|
| | | GameWorld.DebugAnswer(curPlayer, "古宝养成加积分: ActNum g actNum 加积分 是否同步跨服")
|
| | | return
|
| | | |
| | | value1 = msgList[0]
|
| | | if value1 == "x":
|
| | | actNum = msgList[1] if len(msgList) > 1 else 0
|
| | | addScore = msgList[2] if len(msgList) > 2 else 1
|
| | | isRelationCrossAct = msgList[3] if len(msgList) > 3 else 0
|
| | | actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_XianXiaMJ, actNum)
|
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | GameWorld.DebugAnswer(curPlayer, "仙匣秘境非活动中! actNum:%s" % actNum)
|
| | | return
|
| | | updScore = PlayerActXianXiaMJ.AddPlayerLotteryScore(curPlayer, actNum, addScore, isRelationCrossAct)
|
| | | GameWorld.DebugAnswer(curPlayer, "仙匣秘境加分!actNum:%s,+%s,%s" % (actNum, addScore, updScore))
|
| | | return
|
| | | |
| | | if value1 == "q":
|
| | | actNum = msgList[1] if len(msgList) > 1 else 0
|
| | | addScore = msgList[2] if len(msgList) > 2 else 1
|
| | | isRelationCrossAct = msgList[3] if len(msgList) > 3 else 0
|
| | | actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_HorsePetTrain, actNum)
|
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | GameWorld.DebugAnswer(curPlayer, "骑宠养成非活动中! actNum:%s" % actNum)
|
| | | return
|
| | | updScore = PlayerActHorsePetTrain.AddPlayerScore(curPlayer, actNum, addScore, isRelationCrossAct)
|
| | | GameWorld.DebugAnswer(curPlayer, "骑宠养成加分!actNum:%s,+%s,%s" % (actNum, addScore, updScore))
|
| | | return
|
| | | |
| | | if value1 == "g":
|
| | | actNum = msgList[1] if len(msgList) > 1 else 0
|
| | | addScore = msgList[2] if len(msgList) > 2 else 1
|
| | | isRelationCrossAct = msgList[3] if len(msgList) > 3 else 0
|
| | | actInfo = GameWorld.GetActInfo(ShareDefine.OperationActionName_Gubao, actNum)
|
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | GameWorld.DebugAnswer(curPlayer, "古宝养成非活动中! actNum:%s" % actNum)
|
| | | return
|
| | | updScore = PlayerActGubao.AddPlayerScore(curPlayer, actNum, addScore, isRelationCrossAct)
|
| | | GameWorld.DebugAnswer(curPlayer, "古宝养成加分!actNum:%s,+%s,%s" % (actNum, addScore, updScore))
|
| | | return
|
| | | |
| | | return
|
| | |
|
| | |
|
| | |
| | | ("BYTE", "Rank", 0),
|
| | | ("list", "AwardItemList", 0),
|
| | | ("list", "MemAwardItemList", 0),
|
| | | ("DWORD", "NeedScore", 0),
|
| | | ("dict", "ScoreAwardEx", 0),
|
| | | ),
|
| | |
|
| | | "ActHorsePetTrain":(
|
| | |
| | | ("DWORD", "TemplateID", 1),
|
| | | ("BYTE", "Rank", 0),
|
| | | ("list", "AwardItemList", 0),
|
| | | ("DWORD", "NeedScore", 0),
|
| | | ("dict", "ScoreAwardEx", 0),
|
| | | ),
|
| | |
|
| | | "ActXianXiaMJ":(
|
| | |
| | | ("DWORD", "TemplateID", 1),
|
| | | ("BYTE", "Rank", 0),
|
| | | ("list", "AwardItemList", 0),
|
| | | ("DWORD", "NeedScore", 0),
|
| | | ("dict", "ScoreAwardEx", 0),
|
| | | ),
|
| | |
|
| | | "ActXianXiaMJAward":(
|
| | |
| | | def GetRank(self): return self.attrTuple[1] # 名次 BYTE
|
| | | def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] 仙盟榜时为盟主奖励,如果没有配置,则统一取成员奖励 list
|
| | | def GetMemAwardItemList(self): return self.attrTuple[3] # 仙盟榜成员奖励物品信息列表[[物品ID,个数,是否拍品], ...] list |
| | | def GetNeedScore(self): return self.attrTuple[4] # 上榜所需积分 DWORD
|
| | | def GetScoreAwardEx(self): return self.attrTuple[5] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict |
| | | |
| | | # 骑宠养成活动时间表 |
| | | class IPY_ActHorsePetTrain(): |
| | |
| | | def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
|
| | | def GetRank(self): return self.attrTuple[1] # 名次 BYTE
|
| | | def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list |
| | | def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
|
| | | def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict |
| | | |
| | | # 仙匣秘境活动时间表 |
| | | class IPY_ActXianXiaMJ(): |
| | |
| | | def GetTemplateID(self): return self.attrTuple[0] # 模板编号 DWORD
|
| | | def GetRank(self): return self.attrTuple[1] # 名次 BYTE
|
| | | def GetAwardItemList(self): return self.attrTuple[2] # 奖励物品列表[[物品ID,个数,是否拍品], ...] list |
| | | def GetNeedScore(self): return self.attrTuple[3] # 上榜所需积分 DWORD
|
| | | def GetScoreAwardEx(self): return self.attrTuple[4] # 达标积分额外奖励 {积分:[[物品ID,个数,是否拍品], ...], ...} dict |
| | | |
| | | # 仙匣秘境奖池表 |
| | | class IPY_ActXianXiaMJAward(): |
| | |
| | | rankInfo.MemAwardItemList.append(item) |
| | | rankInfo.MemCount = len(rankInfo.MemAwardItemList) |
| | | |
| | | rankInfo.NeedScore = tempIpyData.GetNeedScore() |
| | | rankInfo.AwardItemExList = [] |
| | | scoreAwardEx = tempIpyData.GetScoreAwardEx() |
| | | scoreExList = scoreAwardEx.keys() |
| | | scoreExList.sort() |
| | | for scoreEx in scoreExList: |
| | | itemExList = scoreAwardEx[scoreEx] |
| | | awardEx = ChPyNetSendPack.tagMCActBossTrialAwardEx() |
| | | awardEx.NeedScore = scoreEx |
| | | awardEx.AwardItemList = [] |
| | | for itemID, itemCount, isAuctionItem in itemExList: |
| | | item = ChPyNetSendPack.tagMCActBossTrialItem() |
| | | item.Clear() |
| | | item.ItemID = itemID |
| | | item.ItemCount = itemCount |
| | | item.IsBind = isAuctionItem |
| | | awardEx.AwardItemList.append(item) |
| | | awardEx.Count = len(awardEx.AwardItemList) |
| | | |
| | | rankInfo.AwardItemExList.append(awardEx) |
| | | rankInfo.CountEx = len(rankInfo.AwardItemExList) |
| | | |
| | | packBillList.append(rankInfo) |
| | | return packBillList |
| | | |
| | |
| | | actPack.JoinEndTime = ipyDataDict.get("JoinEndTime", "") |
| | | actPack.IsDayReset = ipyDataDict.get("IsDayReset", 0) |
| | | actPack.ResetType = ipyDataDict.get("ResetType", 0) |
| | | RankLimitList = ipyDataDict.get("RankLimitList", [0, 0]) |
| | | actPack.RankLimitPersonal = RankLimitList[0] |
| | | actPack.RankLimitFamily = RankLimitList[1] |
| | | |
| | | actPack.PersonalBillboardInfoList = __GetTempRankBillPackList(personalTempIpyDataList) |
| | | actPack.PersonalBillCount = len(actPack.PersonalBillboardInfoList) |
| | |
| | | clientPack.EndtDate = ipyDataDict.get("EndDate", "")
|
| | | clientPack.JoinStartTime = ipyDataDict.get("JoinStartTime", "")
|
| | | clientPack.JoinEndTime = ipyDataDict.get("JoinEndTime", "")
|
| | | clientPack.RankLimitPersonal = ipyDataDict.get("RankLimitPersonal", 0)
|
| | |
|
| | | clientPack.PersonalBillboardInfoList = __GetTempRankBillPackList(personalTempIpyDataList)
|
| | | clientPack.PersonalBillCount = len(clientPack.PersonalBillboardInfoList)
|
| | |
| | | # rankInfo.MemAwardItemList.append(item)
|
| | | # rankInfo.MemCount = len(rankInfo.MemAwardItemList)
|
| | |
|
| | | rankInfo.NeedScore = tempIpyData.GetNeedScore()
|
| | | rankInfo.AwardItemExList = []
|
| | | scoreAwardEx = tempIpyData.GetScoreAwardEx()
|
| | | scoreExList = scoreAwardEx.keys()
|
| | | scoreExList.sort()
|
| | | for scoreEx in scoreExList:
|
| | | itemExList = scoreAwardEx[scoreEx]
|
| | | awardEx = ChPyNetSendPack.tagMCActGubaoAwardEx()
|
| | | awardEx.NeedScore = scoreEx
|
| | | awardEx.AwardItemList = []
|
| | | for itemID, itemCount, isAuctionItem in itemExList:
|
| | | item = ChPyNetSendPack.tagMCActGubaoItem()
|
| | | item.Clear()
|
| | | item.ItemID = itemID
|
| | | item.ItemCount = itemCount
|
| | | item.IsBind = isAuctionItem
|
| | | awardEx.AwardItemList.append(item)
|
| | | awardEx.Count = len(awardEx.AwardItemList)
|
| | | |
| | | rankInfo.AwardItemExList.append(awardEx)
|
| | | rankInfo.CountEx = len(rankInfo.AwardItemExList)
|
| | | |
| | | packBillList.append(rankInfo)
|
| | | return packBillList
|
| | |
| | | clientPack.JoinStartTime = ipyDataDict.get("JoinStartTime", "")
|
| | | clientPack.JoinEndTime = ipyDataDict.get("JoinEndTime", "")
|
| | | clientPack.IsDayReset = ipyDataDict.get("IsDayReset", 0)
|
| | | clientPack.RankLimitPersonal = ipyDataDict.get("RankLimitPersonal", 0)
|
| | |
|
| | | clientPack.PersonalBillboardInfoList = __GetTempRankBillPackList(personalTempIpyDataList)
|
| | | clientPack.PersonalBillCount = len(clientPack.PersonalBillboardInfoList)
|
| | |
| | | # rankInfo.MemAwardItemList.append(item)
|
| | | # rankInfo.MemCount = len(rankInfo.MemAwardItemList)
|
| | |
|
| | | rankInfo.NeedScore = tempIpyData.GetNeedScore()
|
| | | rankInfo.AwardItemExList = []
|
| | | scoreAwardEx = tempIpyData.GetScoreAwardEx()
|
| | | scoreExList = scoreAwardEx.keys()
|
| | | scoreExList.sort()
|
| | | for scoreEx in scoreExList:
|
| | | itemExList = scoreAwardEx[scoreEx]
|
| | | awardEx = ChPyNetSendPack.tagMCActXianXiaMJAwardEx()
|
| | | awardEx.NeedScore = scoreEx
|
| | | awardEx.AwardItemList = []
|
| | | for itemID, itemCount, isAuctionItem in itemExList:
|
| | | item = ChPyNetSendPack.tagMCActXianXiaMJItem()
|
| | | item.Clear()
|
| | | item.ItemID = itemID
|
| | | item.ItemCount = itemCount
|
| | | item.IsBind = isAuctionItem
|
| | | awardEx.AwardItemList.append(item)
|
| | | awardEx.Count = len(awardEx.AwardItemList)
|
| | | |
| | | rankInfo.AwardItemExList.append(awardEx)
|
| | | rankInfo.CountEx = len(rankInfo.AwardItemExList)
|
| | | |
| | | packBillList.append(rankInfo)
|
| | | return packBillList
|