8716 【主干】【后端】【BT2】H.活动-节日祈愿(增加节日游历);
| | |
| | | list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key]
|
| | | };
|
| | |
|
| | | //节日游历时间表
|
| | |
|
| | | struct tagActFeastTravel
|
| | | {
|
| | | DWORD _CfgID; //配置ID
|
| | | char ActMark; //活动组标记
|
| | | list PlatformList; //活动平台列表["平台A", "平台A", ...],配[]代表所有
|
| | | list ServerGroupIDList; //服务器ID列表
|
| | | char StartDate; //开启日期
|
| | | char EndDate; //结束日期
|
| | | BYTE ResetType; //重置类型,0-0点重置;1-5点重置
|
| | | dict NotifyInfoStart; //全服提示信息 - 相对开始时间
|
| | | dict NotifyInfoEnd; //全服提示信息 - 相对结束时间
|
| | | list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key]
|
| | | };
|
| | |
|
| | | //等级开启功能 #tagFuncOpenLV
|
| | |
|
| | | struct tagFuncOpenLV
|
| | |
| | | DWORD _CfgID; //配置ID
|
| | | char StartDate; //开启日期
|
| | | char EndDate; //结束日期
|
| | | BYTE ResetType; //重置类型,0-0点重置;1-5点重置
|
| | | dict TemplateIDInfo; //模板信息 {(世界等级A,B):模板编号, ...}
|
| | | };
|
| | |
|
| | |
| | | char WorldNotifyKey; //全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,)
|
| | | };
|
| | |
|
| | | //节日游历时间表
|
| | |
|
| | | struct tagActFeastTravel
|
| | | {
|
| | | DWORD _CfgID; //配置ID
|
| | | char StartDate; //开启日期
|
| | | char EndDate; //结束日期
|
| | | BYTE ResetType; //重置类型,0-0点重置;1-5点重置
|
| | | dict TemplateIDInfo; //模板信息 {(世界等级A,B):模板编号, ...}
|
| | | };
|
| | |
|
| | | //节日游历任务表
|
| | |
|
| | | struct tagActFeastTravelTask
|
| | | {
|
| | | BYTE _TraveTasklD; //游历ID
|
| | | WORD FinishNeedValue; //完成所需进度值
|
| | | WORD FinishTimeMax; //总可完成次数,0不限
|
| | | BYTE AddTravelPoint; //完成次数获得游历值
|
| | | };
|
| | |
|
| | | //节日游历奖励表
|
| | |
|
| | | struct tagActFeastTravelAward
|
| | | {
|
| | | BYTE _TemplatelD; //奖励模板ID
|
| | | BYTE RecordIndex; //奖励记录索引
|
| | | WORD NeedTravelPoint; //领奖所需游历值
|
| | | BYTE AwardCountMax; //可领取次数,0代表不限
|
| | | list TravelAwardInfo; //游历奖励 [[物品ID,个数,是否拍品], ...]
|
| | | };
|
| | |
|
| | | //诛仙BOSS表
|
| | |
|
| | | struct tagZhuXianBoss
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 46 节日游历活动信息 #tagMCFeastTravelInfo
|
| | |
|
| | | class tagMCFeastTravelAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelAward(Structure):
|
| | | AwardIndex = 0 #(BYTE AwardIndex)//游历奖励索引
|
| | | NeedTravelPoint = 0 #(WORD NeedTravelPoint)//单次领奖所需游历值
|
| | | AwardCountMax = 0 #(BYTE AwardCountMax)//最大可领取次数,0代表不限
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)//奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCFeastTravelAwardItem> AwardItemList)//奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagMCFeastTravelAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.NeedTravelPoint = 0
|
| | | self.AwardCountMax = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.AwardIndex)
|
| | | data = CommFunc.WriteWORD(data, self.NeedTravelPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardCountMax)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AwardIndex:%d,
|
| | | NeedTravelPoint:%d,
|
| | | AwardCountMax:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.NeedTravelPoint,
|
| | | self.AwardCountMax,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelTask(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TravelTaskID", c_ubyte), #游历任务ID
|
| | | ("FinishNeedValue", c_ushort), #单次完成所需进度
|
| | | ("FinishTimeMax", c_ubyte), #最大可完成次数,0代表不限
|
| | | ("AddTravelPoint", c_ubyte), #单次完成获得游历值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TravelTaskID = 0
|
| | | self.FinishNeedValue = 0
|
| | | self.FinishTimeMax = 0
|
| | | self.AddTravelPoint = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelTask)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
|
| | | TravelTaskID:%d,
|
| | | FinishNeedValue:%d,
|
| | | FinishTimeMax:%d,
|
| | | AddTravelPoint:%d
|
| | | '''\
|
| | | %(
|
| | | self.TravelTaskID,
|
| | | self.FinishNeedValue,
|
| | | self.FinishTimeMax,
|
| | | self.AddTravelPoint
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | TravelTaskCount = 0 #(BYTE TravelTaskCount)// 游历任务数
|
| | | TravelTaskList = list() #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
|
| | | TravelAwardCount = 0 #(BYTE TravelAwardCount)// 游历奖励数
|
| | | TravelAwardList = list() #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x46
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelTaskCount):
|
| | | temTravelTaskList = tagMCFeastTravelTask()
|
| | | _pos = temTravelTaskList.ReadData(_lpData, _pos)
|
| | | self.TravelTaskList.append(temTravelTaskList)
|
| | | self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelAwardCount):
|
| | | temTravelAwardList = tagMCFeastTravelAward()
|
| | | _pos = temTravelAwardList.ReadData(_lpData, _pos)
|
| | | self.TravelAwardList.append(temTravelAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x46
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.TravelTaskCount = 0
|
| | | self.TravelTaskList = list()
|
| | | self.TravelAwardCount = 0
|
| | | self.TravelAwardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.TravelTaskCount):
|
| | | length += self.TravelTaskList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TravelAwardCount):
|
| | | length += self.TravelAwardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.TravelTaskCount)
|
| | | for i in range(self.TravelTaskCount):
|
| | | data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
|
| | | for i in range(self.TravelAwardCount):
|
| | | data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | TravelTaskCount:%d,
|
| | | TravelTaskList:%s,
|
| | | TravelAwardCount:%d,
|
| | | TravelAwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.TravelTaskCount,
|
| | | "...",
|
| | | self.TravelAwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
|
| | |
|
| | | class tagMCFeastTravelPlayerAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("AwardIndex", c_ubyte), #游历奖励索引
|
| | | ("GetAwardCount", c_ubyte), #已领取次数;前端判断是否可领取: 总游历值 >= (已领取次数 + 1) * 单次所需游历值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.GetAwardCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelPlayerAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
|
| | | AwardIndex:%d,
|
| | | GetAwardCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.GetAwardCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelPlayerTask(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TravelTaskID", c_ubyte), #游历任务ID
|
| | | ("TravelValue", c_int), #当前进度值,一直累加
|
| | | ("FinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TravelTaskID = 0
|
| | | self.TravelValue = 0
|
| | | self.FinishCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelPlayerTask)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
|
| | | TravelTaskID:%d,
|
| | | TravelValue:%d,
|
| | | FinishCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.TravelTaskID,
|
| | | self.TravelValue,
|
| | | self.FinishCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | TravelPoint = 0 #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
|
| | | TravelPlayerTaskCount = 0 #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
|
| | | TravelPlayerTaskList = list() #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
|
| | | TravelPlayerAwardCount = 0 #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
|
| | | TravelPlayerAwardList = list() #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x47
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
|
| | | _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
|
| | | self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
|
| | | self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
|
| | | _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
|
| | | self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x47
|
| | | self.TravelPoint = 0
|
| | | self.TravelPlayerTaskCount = 0
|
| | | self.TravelPlayerTaskList = list()
|
| | | self.TravelPlayerAwardCount = 0
|
| | | self.TravelPlayerAwardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | length += self.TravelPlayerTaskList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | length += self.TravelPlayerAwardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.TravelPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TravelPoint:%d,
|
| | | TravelPlayerTaskCount:%d,
|
| | | TravelPlayerTaskList:%s,
|
| | | TravelPlayerAwardCount:%d,
|
| | | TravelPlayerAwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TravelPoint,
|
| | | self.TravelPlayerTaskCount,
|
| | | "...",
|
| | | self.TravelPlayerAwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
|
| | |
|
| | | class tagMCFeastWeekPartyItem(Structure):
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | WishPoolShowCount = 0 #(BYTE WishPoolShowCount)//祝福池展示物品数
|
| | | WishPoolShowItemList = list() #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
|
| | | BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WishPoolShowCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | |
| | | self.Head.SubCmd = 0x43
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.WishPoolShowCount = 0
|
| | | self.WishPoolShowItemList = list()
|
| | | self.BottleCount = 0
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.WishPoolShowCount
|
| | | length += 1
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.WishPoolShowCount)
|
| | | for i in range(self.WishPoolShowCount):
|
| | | data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | WishPoolShowCount:%d,
|
| | | WishPoolShowItemList:%s,
|
| | | BottleCount:%d,
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.WishPoolShowCount,
|
| | | "...",
|
| | | self.BottleCount,
|
| | |
| | | ("list", "NotifyInfoLoop", 0),
|
| | | ),
|
| | |
|
| | | "ActFeastTravel":(
|
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "ActMark", 0),
|
| | | ("list", "PlatformList", 0),
|
| | | ("list", "ServerGroupIDList", 0),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("BYTE", "ResetType", 0),
|
| | | ("dict", "NotifyInfoStart", 0),
|
| | | ("dict", "NotifyInfoEnd", 0),
|
| | | ("list", "NotifyInfoLoop", 0),
|
| | | ),
|
| | |
|
| | | "FuncOpenLV":(
|
| | | ("DWORD", "FuncId", 1),
|
| | | ("DWORD", "LimitLV", 0),
|
| | |
| | | |
| | | # 节日祝福时间表 |
| | | class IPY_ActFeastWish(): |
| | | |
| | | def __init__(self): |
| | | self.CfgID = 0
|
| | | self.ActMark = ""
|
| | | self.PlatformList = []
|
| | | self.ServerGroupIDList = []
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.ResetType = 0
|
| | | self.NotifyInfoStart = {}
|
| | | self.NotifyInfoEnd = {}
|
| | | self.NotifyInfoLoop = [] |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | | def GetActMark(self): return self.ActMark # 活动组标记
|
| | | def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
|
| | | def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
|
| | | def GetStartDate(self): return self.StartDate # 开启日期
|
| | | def GetEndDate(self): return self.EndDate # 结束日期
|
| | | def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
|
| | | def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
|
| | | def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
|
| | | def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key] |
| | | |
| | | # 节日游历时间表 |
| | | class IPY_ActFeastTravel(): |
| | | |
| | | def __init__(self): |
| | | self.CfgID = 0
|
| | |
| | | self.ipyActFeastLoginLen = len(self.ipyActFeastLoginCache)
|
| | | self.ipyActFeastWishCache = self.__LoadFileData("ActFeastWish", IPY_ActFeastWish)
|
| | | self.ipyActFeastWishLen = len(self.ipyActFeastWishCache)
|
| | | self.ipyActFeastTravelCache = self.__LoadFileData("ActFeastTravel", IPY_ActFeastTravel)
|
| | | self.ipyActFeastTravelLen = len(self.ipyActFeastTravelCache)
|
| | | self.ipyFuncOpenLVCache = self.__LoadFileData("FuncOpenLV", IPY_FuncOpenLV)
|
| | | self.ipyFuncOpenLVLen = len(self.ipyFuncOpenLVCache)
|
| | | self.ipyChinNPCCache = self.__LoadFileData("ChinNPC", IPY_ChinNPC)
|
| | |
| | | def GetActFeastLoginByIndex(self, index): return self.ipyActFeastLoginCache[index]
|
| | | def GetActFeastWishCount(self): return self.ipyActFeastWishLen
|
| | | def GetActFeastWishByIndex(self, index): return self.ipyActFeastWishCache[index]
|
| | | def GetActFeastTravelCount(self): return self.ipyActFeastTravelLen
|
| | | def GetActFeastTravelByIndex(self, index): return self.ipyActFeastTravelCache[index]
|
| | | def GetFuncOpenLVCount(self): return self.ipyFuncOpenLVLen
|
| | | def GetFuncOpenLVByIndex(self, index): return self.ipyFuncOpenLVCache[index]
|
| | | def GetChinNPCCount(self): return self.ipyChinNPCLen
|
| | |
| | | OperationActionName_RechargeRebateGold = "ActRechargeRebateGold" # 充值返利仙玉活动(活动结束邮件发放,节日活动)
|
| | | OperationActionName_GrowupBuy = "ActGrowupBuy" # 成长必买活动
|
| | | OperationActionName_FeastLogin = "ActFeastLogin" # 节日登录活动
|
| | | OperationActionName_FeastWish = "ActFeastWish" # 节日祝愿活动
|
| | | OperationActionName_FeastWish = "ActFeastWish" # 节日祝福活动
|
| | | OperationActionName_FeastTravel = "ActFeastTravel" # 节日游历活动
|
| | | #节日活动类型列表 - 该类型无视开服天,日期到了就开启
|
| | | FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
|
| | | OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
|
| | | OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
|
| | | OperationActionName_FeastWish,
|
| | | OperationActionName_FeastWish, OperationActionName_FeastTravel,
|
| | | ]
|
| | | #所有的运营活动列表,含节日活动
|
| | | OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
|
| | |
| | | OperationActionName_WeekParty,
|
| | | OperationActionName_CollectWords, OperationActionName_CollectWords2,
|
| | | OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
|
| | | OperationActionName_FeastWish,
|
| | | OperationActionName_FeastWish, OperationActionName_FeastTravel,
|
| | | ]
|
| | |
|
| | | #所有的累计充值活动
|
| | |
| | | Def_PDict_FeastWishID = "FeastWishID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
|
| | | Def_PDict_FeastWishBottleValue = "FeastWishBottleValue_%s" # 祝福瓶当前祝福值,参数(瓶子编号)
|
| | | Def_PDict_FeastWishBottleGetState = "FeastWishBottleGetState_%s" # 祝福瓶已领取记录,参数(瓶子编号),按记录索引二进制位存储是否已领取
|
| | |
|
| | | #节日游历活动
|
| | | Def_PDict_FeastTravelID = "FeastTravelID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
|
| | | Def_PDict_FeastTravelPoint = "FeastTravelPoint" # 当前总游历点数
|
| | | Def_PDict_FeastTravelValue = "FeastTravelValue_%s" # 游历任务总进度值,参数(任务ID)
|
| | | Def_PDict_FeastTravelCount = "FeastTravelCount_%s" # 游历任务已完成次数,参数(任务ID)
|
| | | Def_PDict_FeastTravelAwardCount = "FeastTravelAwardCount_%s" # 游历已领奖次数,参数(奖励索引)
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | #开服活动,Def_PDictType_OpenServerCampaign
|
| | |
| | | Def_RewardType_GoodGame, #游戏好评奖励35
|
| | | Def_RewardType_CACTGBillboardDabiao, #跨服充值排行活动达标奖励36
|
| | | Def_RewardType_FeastLogin, #节日登录奖励37
|
| | | )= range(38)
|
| | | Def_RewardType_FeastTravel, #节日游历奖励38
|
| | | )= range(39)
|
| | |
|
| | |
|
| | | #boss复活相关活动定义
|
| | |
| | | Def_PPAct_FairyDomain, #缥缈仙域 16
|
| | | ) = range(1, 16+1)
|
| | |
|
| | | #节日游历活动任务定义
|
| | | FeastTravelTaskIDList = (
|
| | | Def_FeastTravel_1,
|
| | | Def_FeastTravel_Treasure, #极品寻宝 2
|
| | | Def_FeastTravel_RuneTreasure, #符印寻宝 3
|
| | | Def_FeastTravel_4,
|
| | | Def_FeastTravel_XJMJ, #仙界秘境 5
|
| | | Def_FeastTravel_6,
|
| | | Def_FeastTravel_WorldBoss, #世界BOSS 7
|
| | | Def_FeastTravel_FMT, #封魔坛 8
|
| | | Def_FeastTravel_FamilyParty, #仙盟宴会 9
|
| | | Def_FeastTravel_10,
|
| | | Def_FeastTravel_Pray, #祈愿 11
|
| | | Def_FeastTravel_BossHome, #boss之家 12
|
| | | Def_FeastTravel_VIPBoss, #vipBOSS 13
|
| | | Def_FeastTravel_RunFamilyTask, #仙盟任务 14
|
| | | Def_FeastTravel_FamilyBoss, #仙盟Boss 15
|
| | | Def_FeastTravel_FairyDomain, #缥缈仙域 16
|
| | | Def_FeastTravel_UseGold, #累计消费X仙玉 17
|
| | | Def_FeastTravel_CTGExp, #累计充值X仙玉,直接使用充值转化的经验 18
|
| | | ) = range(1, 1 + 18)
|
| | |
|
| | | #周狂欢活动定义(七天巡礼)
|
| | | WeekPartyActIDList = (
|
| | | Def_WPAct_RunTask, #仙盟任务 1
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 46 节日游历活动信息 #tagMCFeastTravelInfo
|
| | |
|
| | | class tagMCFeastTravelAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelAward(Structure):
|
| | | AwardIndex = 0 #(BYTE AwardIndex)//游历奖励索引
|
| | | NeedTravelPoint = 0 #(WORD NeedTravelPoint)//单次领奖所需游历值
|
| | | AwardCountMax = 0 #(BYTE AwardCountMax)//最大可领取次数,0代表不限
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)//奖励物品数
|
| | | AwardItemList = list() #(vector<tagMCFeastTravelAwardItem> AwardItemList)//奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagMCFeastTravelAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.NeedTravelPoint = 0
|
| | | self.AwardCountMax = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.AwardIndex)
|
| | | data = CommFunc.WriteWORD(data, self.NeedTravelPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardCountMax)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AwardIndex:%d,
|
| | | NeedTravelPoint:%d,
|
| | | AwardCountMax:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.NeedTravelPoint,
|
| | | self.AwardCountMax,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelTask(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TravelTaskID", c_ubyte), #游历任务ID
|
| | | ("FinishNeedValue", c_ushort), #单次完成所需进度
|
| | | ("FinishTimeMax", c_ubyte), #最大可完成次数,0代表不限
|
| | | ("AddTravelPoint", c_ubyte), #单次完成获得游历值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TravelTaskID = 0
|
| | | self.FinishNeedValue = 0
|
| | | self.FinishTimeMax = 0
|
| | | self.AddTravelPoint = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelTask)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
|
| | | TravelTaskID:%d,
|
| | | FinishNeedValue:%d,
|
| | | FinishTimeMax:%d,
|
| | | AddTravelPoint:%d
|
| | | '''\
|
| | | %(
|
| | | self.TravelTaskID,
|
| | | self.FinishNeedValue,
|
| | | self.FinishTimeMax,
|
| | | self.AddTravelPoint
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | TravelTaskCount = 0 #(BYTE TravelTaskCount)// 游历任务数
|
| | | TravelTaskList = list() #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
|
| | | TravelAwardCount = 0 #(BYTE TravelAwardCount)// 游历奖励数
|
| | | TravelAwardList = list() #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x46
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelTaskCount):
|
| | | temTravelTaskList = tagMCFeastTravelTask()
|
| | | _pos = temTravelTaskList.ReadData(_lpData, _pos)
|
| | | self.TravelTaskList.append(temTravelTaskList)
|
| | | self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelAwardCount):
|
| | | temTravelAwardList = tagMCFeastTravelAward()
|
| | | _pos = temTravelAwardList.ReadData(_lpData, _pos)
|
| | | self.TravelAwardList.append(temTravelAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x46
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.TravelTaskCount = 0
|
| | | self.TravelTaskList = list()
|
| | | self.TravelAwardCount = 0
|
| | | self.TravelAwardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.TravelTaskCount):
|
| | | length += self.TravelTaskList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TravelAwardCount):
|
| | | length += self.TravelAwardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.TravelTaskCount)
|
| | | for i in range(self.TravelTaskCount):
|
| | | data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
|
| | | for i in range(self.TravelAwardCount):
|
| | | data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | TravelTaskCount:%d,
|
| | | TravelTaskList:%s,
|
| | | TravelAwardCount:%d,
|
| | | TravelAwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.TravelTaskCount,
|
| | | "...",
|
| | | self.TravelAwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
|
| | |
|
| | | class tagMCFeastTravelPlayerAward(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("AwardIndex", c_ubyte), #游历奖励索引
|
| | | ("GetAwardCount", c_ubyte), #已领取次数;前端判断是否可领取: 总游历值 >= (已领取次数 + 1) * 单次所需游历值
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.AwardIndex = 0
|
| | | self.GetAwardCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelPlayerAward)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
|
| | | AwardIndex:%d,
|
| | | GetAwardCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.AwardIndex,
|
| | | self.GetAwardCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelPlayerTask(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TravelTaskID", c_ubyte), #游历任务ID
|
| | | ("TravelValue", c_int), #当前进度值,一直累加
|
| | | ("FinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.TravelTaskID = 0
|
| | | self.TravelValue = 0
|
| | | self.FinishCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastTravelPlayerTask)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
|
| | | TravelTaskID:%d,
|
| | | TravelValue:%d,
|
| | | FinishCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.TravelTaskID,
|
| | | self.TravelValue,
|
| | | self.FinishCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastTravelPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | TravelPoint = 0 #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
|
| | | TravelPlayerTaskCount = 0 #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
|
| | | TravelPlayerTaskList = list() #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
|
| | | TravelPlayerAwardCount = 0 #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
|
| | | TravelPlayerAwardList = list() #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x47
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
|
| | | _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
|
| | | self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
|
| | | self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
|
| | | _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
|
| | | self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x47
|
| | | self.TravelPoint = 0
|
| | | self.TravelPlayerTaskCount = 0
|
| | | self.TravelPlayerTaskList = list()
|
| | | self.TravelPlayerAwardCount = 0
|
| | | self.TravelPlayerAwardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | length += self.TravelPlayerTaskList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | length += self.TravelPlayerAwardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.TravelPoint)
|
| | | data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
|
| | | for i in range(self.TravelPlayerTaskCount):
|
| | | data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
|
| | | for i in range(self.TravelPlayerAwardCount):
|
| | | data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | TravelPoint:%d,
|
| | | TravelPlayerTaskCount:%d,
|
| | | TravelPlayerTaskList:%s,
|
| | | TravelPlayerAwardCount:%d,
|
| | | TravelPlayerAwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.TravelPoint,
|
| | | self.TravelPlayerTaskCount,
|
| | | "...",
|
| | | self.TravelPlayerAwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
|
| | |
|
| | | class tagMCFeastWeekPartyItem(Structure):
|
| | |
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | WishPoolShowCount = 0 #(BYTE WishPoolShowCount)//祝福池展示物品数
|
| | | WishPoolShowItemList = list() #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
|
| | | BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WishPoolShowCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | |
| | | self.Head.SubCmd = 0x43
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.WishPoolShowCount = 0
|
| | | self.WishPoolShowItemList = list()
|
| | | self.BottleCount = 0
|
| | |
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.WishPoolShowCount
|
| | | length += 1
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.WishPoolShowCount)
|
| | | for i in range(self.WishPoolShowCount):
|
| | | data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
|
| | |
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | WishPoolShowCount:%d,
|
| | | WishPoolShowItemList:%s,
|
| | | BottleCount:%d,
|
| | |
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.WishPoolShowCount,
|
| | | "...",
|
| | | self.BottleCount,
|
| | |
| | | import PlayerBossReborn
|
| | | import PlayerFairyCeremony
|
| | | import PlayerNewFairyCeremony
|
| | | import PlayerFeastTravel
|
| | | import PlayerActLogin
|
| | | import PlayerWeekParty
|
| | | import EventShell
|
| | |
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Pray, 1)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_Pray, 1)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Pray, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Pray, 1)
|
| | | Sync_NotifyDataChange(curPlayer, [buyType])
|
| | | return
|
| | |
|
| | |
| | | import PlayerNewFairyCeremony
|
| | | import Operate_EquipStone
|
| | | import OpenServerCampaign
|
| | | import PlayerFeastTravel
|
| | | import PlayerWeekParty
|
| | | import PlayerFairyDomain
|
| | | import GameFuncComm
|
| | |
| | | PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyRunMission, addCnt)
|
| | | PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Task, addCnt)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_RunTask, addCnt)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RunFamilyTask, addCnt)
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunFamilyTask, addCnt)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunFamilyTask, addCnt)
|
| | |
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package GM.Commands.FeastTravel
|
| | | #
|
| | | # @todo:节日游历
|
| | | # @author hxp
|
| | | # @date 2021-02-01
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 节日游历
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2021-02-01 15:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import PlayerControl
|
| | | import PlayerFeastTravel
|
| | | import IpyGameDataPY
|
| | | import ChConfig
|
| | |
|
| | |
|
| | | def __Help(curPlayer):
|
| | | GameWorld.DebugAnswer(curPlayer, "重置所有游历: FeastTravel 0")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置游历点值: FeastTravel 游历值")
|
| | | GameWorld.DebugAnswer(curPlayer, "增加游历进度: FeastTravel 任务ID 增加值")
|
| | | return
|
| | |
|
| | | ## GM命令执行入口
|
| | | # @param curPlayer 当前玩家
|
| | | # @param paramList 参数列表 []
|
| | | # @return None
|
| | | # @remarks 函数详细说明.
|
| | | def OnExec(curPlayer, paramList):
|
| | | |
| | | if not paramList:
|
| | | __Help(curPlayer)
|
| | | return
|
| | | |
| | | if len(paramList) == 1:
|
| | | # 重置
|
| | | if paramList[0] == 0:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelPoint, 0)
|
| | | |
| | | ipyMgr = IpyGameDataPY.IPY_Data()
|
| | | # 重置游历任务相关
|
| | | for index in xrange(ipyMgr.GetActFeastTravelTaskCount()):
|
| | | taskIpyData = ipyMgr.GetActFeastTravelTaskByIndex(index)
|
| | | taskID = taskIpyData.GetTraveTasklD()
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelValue % taskID, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelCount % taskID, 0)
|
| | | |
| | | # 重置游历奖励
|
| | | for index in xrange(ipyMgr.GetActFeastTravelAwardCount()):
|
| | | awardIpyData = ipyMgr.GetActFeastTravelAwardByIndex(index)
|
| | | recordIndex = awardIpyData.GetRecordIndex()
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelAwardCount % recordIndex, 0)
|
| | | |
| | | GameWorld.DebugAnswer(curPlayer, "重置OK!")
|
| | | |
| | | PlayerFeastTravel.Sync_FeastTravelPlayerInfo(curPlayer)
|
| | | |
| | | # 设置游历值
|
| | | else:
|
| | | travelPoint = paramList[0]
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelPoint, travelPoint)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置OK!")
|
| | | PlayerFeastTravel.Sync_FeastTravelPlayerInfo(curPlayer, -1, -1)
|
| | | |
| | | elif len(paramList) == 2:
|
| | | taskID, addValue = paramList
|
| | | if taskID not in ChConfig.FeastTravelTaskIDList:
|
| | | GameWorld.DebugAnswer(curPlayer, "游历任务ID不存在,请查看节日游历任务表!")
|
| | | return
|
| | | |
| | | if PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, taskID, addValue):
|
| | | GameWorld.DebugAnswer(curPlayer, "成功!")
|
| | | else:
|
| | | GameWorld.DebugAnswer(curPlayer, "失败!请检查是否已达最大完成次数!")
|
| | | |
| | | else:
|
| | | __Help(curPlayer)
|
| | | return
|
| | | |
| | | return
|
| | |
|
| | |
| | | import NPCCustomRefresh
|
| | | import PlayerAuctionHouse
|
| | | import ItemControler
|
| | | import PlayerFeastTravel
|
| | | import PlayerWeekParty
|
| | | import PlayerActivity
|
| | | import PlayerFairyCeremony
|
| | |
| | | PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyBoss1, 1)
|
| | | PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FamilyBoss, 1)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FamilyBoss, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FamilyBoss, 1)
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyBoss, 1)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyBoss, 1)
|
| | | if fbStep == FB_Step_Open:
|
| | |
| | | import PlayerFairyCeremony
|
| | | import PlayerNewFairyCeremony
|
| | | import PlayerActLogin
|
| | | import PlayerFeastTravel
|
| | | import PlayerWeekParty
|
| | | import ItemControler
|
| | | import GameFuncComm
|
| | |
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_XJMJ, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_XJMJ, 1)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_XJMJ, 1)
|
| | | EventShell.EventRespons_FBEvent(curPlayer, 'passxjmj')
|
| | | FBCommon.UpdateFBEnterTick(curPlayer)
|
| | |
| | | import GameWorld
|
| | | import PlayerFamily
|
| | | import IpyGameDataPY
|
| | | import PlayerFeastTravel
|
| | | import PlayerFairyCeremony
|
| | | import PlayerNewFairyCeremony
|
| | | import PlayerActLogin
|
| | |
| | | EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_FamilyParty, 0, ChConfig.CME_Log_Start)
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FamilyParty, 1)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_FamilyParty, 1)
|
| | | return
|
| | |
|
| | |
| | | import PlayerBossReborn
|
| | | import PlayerNewFairyCeremony
|
| | | import PlayerFairyCeremony
|
| | | import PlayerFeastTravel
|
| | | import IpyGameDataPY
|
| | | import NPCCommon
|
| | | import ChConfig
|
| | |
| | | PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, 1)
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, 1)
|
| | |
|
| | | npcCountDict = {bossID:1}
|
| | | dropItemMapInfo = [0, 0]
|
| | |
| | | PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, sweepCnt)
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, sweepCnt)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, sweepCnt)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, sweepCnt)
|
| | |
|
| | | npcCountDict = {bossID:sweepCnt}
|
| | | jsonItemList = NPCCommon.GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, curGrade=grade)[0]
|
| | |
| | | import PlayerBossReborn
|
| | | import PlayerFairyCeremony
|
| | | import PlayerNewFairyCeremony
|
| | | import PlayerFeastTravel
|
| | | import PlayerWeekParty
|
| | | import PlayerActLogin
|
| | | import EventReport
|
| | |
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FMT, addCnt)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FMT, addCnt)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_FMT, addCnt)
|
| | | return prizeItemList
|
| | |
|
| | |
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("BYTE", "ResetType", 0),
|
| | | ("dict", "TemplateIDInfo", 0),
|
| | | ),
|
| | |
|
| | |
| | | ("list", "WishPoolClientItemShow", 0),
|
| | | ("list", "GoodItemIDList", 0),
|
| | | ("char", "WorldNotifyKey", 0),
|
| | | ),
|
| | |
|
| | | "ActFeastTravel":(
|
| | | ("DWORD", "CfgID", 1),
|
| | | ("char", "StartDate", 0),
|
| | | ("char", "EndDate", 0),
|
| | | ("BYTE", "ResetType", 0),
|
| | | ("dict", "TemplateIDInfo", 0),
|
| | | ),
|
| | |
|
| | | "ActFeastTravelTask":(
|
| | | ("BYTE", "TraveTasklD", 1),
|
| | | ("WORD", "FinishNeedValue", 0),
|
| | | ("WORD", "FinishTimeMax", 0),
|
| | | ("BYTE", "AddTravelPoint", 0),
|
| | | ),
|
| | |
|
| | | "ActFeastTravelAward":(
|
| | | ("BYTE", "TemplatelD", 1),
|
| | | ("BYTE", "RecordIndex", 0),
|
| | | ("WORD", "NeedTravelPoint", 0),
|
| | | ("BYTE", "AwardCountMax", 0),
|
| | | ("list", "TravelAwardInfo", 0),
|
| | | ),
|
| | |
|
| | | "ZhuXianBoss":(
|
| | |
| | | self.CfgID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.ResetType = 0
|
| | | self.TemplateIDInfo = {} |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | | def GetStartDate(self): return self.StartDate # 开启日期
|
| | | def GetEndDate(self): return self.EndDate # 结束日期
|
| | | def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
|
| | | def GetTemplateIDInfo(self): return self.TemplateIDInfo # 模板信息 {(世界等级A,B):模板编号, ...} |
| | | |
| | | # 节日祝福瓶模板表 |
| | |
| | | def GetWishPoolClientItemShow(self): return self.WishPoolClientItemShow # 前端展示物品列表 [物品ID, ...]
|
| | | def GetGoodItemIDList(self): return self.GoodItemIDList # 需要广播的物品ID列表 [物品ID, ...]
|
| | | def GetWorldNotifyKey(self): return self.WorldNotifyKey # 全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,) |
| | | |
| | | # 节日游历时间表 |
| | | class IPY_ActFeastTravel(): |
| | | |
| | | def __init__(self): |
| | | self.CfgID = 0
|
| | | self.StartDate = ""
|
| | | self.EndDate = ""
|
| | | self.ResetType = 0
|
| | | self.TemplateIDInfo = {} |
| | | return |
| | | |
| | | def GetCfgID(self): return self.CfgID # 配置ID
|
| | | def GetStartDate(self): return self.StartDate # 开启日期
|
| | | def GetEndDate(self): return self.EndDate # 结束日期
|
| | | def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
|
| | | def GetTemplateIDInfo(self): return self.TemplateIDInfo # 模板信息 {(世界等级A,B):模板编号, ...} |
| | | |
| | | # 节日游历任务表 |
| | | class IPY_ActFeastTravelTask(): |
| | | |
| | | def __init__(self): |
| | | self.TraveTasklD = 0
|
| | | self.FinishNeedValue = 0
|
| | | self.FinishTimeMax = 0
|
| | | self.AddTravelPoint = 0 |
| | | return |
| | | |
| | | def GetTraveTasklD(self): return self.TraveTasklD # 游历ID
|
| | | def GetFinishNeedValue(self): return self.FinishNeedValue # 完成所需进度值
|
| | | def GetFinishTimeMax(self): return self.FinishTimeMax # 总可完成次数,0不限
|
| | | def GetAddTravelPoint(self): return self.AddTravelPoint # 完成次数获得游历值 |
| | | |
| | | # 节日游历奖励表 |
| | | class IPY_ActFeastTravelAward(): |
| | | |
| | | def __init__(self): |
| | | self.TemplatelD = 0
|
| | | self.RecordIndex = 0
|
| | | self.NeedTravelPoint = 0
|
| | | self.AwardCountMax = 0
|
| | | self.TravelAwardInfo = [] |
| | | return |
| | | |
| | | def GetTemplatelD(self): return self.TemplatelD # 奖励模板ID
|
| | | def GetRecordIndex(self): return self.RecordIndex # 奖励记录索引
|
| | | def GetNeedTravelPoint(self): return self.NeedTravelPoint # 领奖所需游历值
|
| | | def GetAwardCountMax(self): return self.AwardCountMax # 可领取次数,0代表不限
|
| | | def GetTravelAwardInfo(self): return self.TravelAwardInfo # 游历奖励 [[物品ID,个数,是否拍品], ...] |
| | | |
| | | # 诛仙BOSS表 |
| | | class IPY_ZhuXianBoss(): |
| | |
| | | self.ipyActFeastWishBottleLen = len(self.ipyActFeastWishBottleCache)
|
| | | self.ipyActFeastWishPoolCache = self.__LoadFileData("ActFeastWishPool", IPY_ActFeastWishPool)
|
| | | self.ipyActFeastWishPoolLen = len(self.ipyActFeastWishPoolCache)
|
| | | self.ipyActFeastTravelCache = self.__LoadFileData("ActFeastTravel", IPY_ActFeastTravel)
|
| | | self.ipyActFeastTravelLen = len(self.ipyActFeastTravelCache)
|
| | | self.ipyActFeastTravelTaskCache = self.__LoadFileData("ActFeastTravelTask", IPY_ActFeastTravelTask)
|
| | | self.ipyActFeastTravelTaskLen = len(self.ipyActFeastTravelTaskCache)
|
| | | self.ipyActFeastTravelAwardCache = self.__LoadFileData("ActFeastTravelAward", IPY_ActFeastTravelAward)
|
| | | self.ipyActFeastTravelAwardLen = len(self.ipyActFeastTravelAwardCache)
|
| | | self.ipyZhuXianBossCache = self.__LoadFileData("ZhuXianBoss", IPY_ZhuXianBoss)
|
| | | self.ipyZhuXianBossLen = len(self.ipyZhuXianBossCache)
|
| | | self.ipyActFeastWeekPartyCache = self.__LoadFileData("ActFeastWeekParty", IPY_ActFeastWeekParty)
|
| | |
| | | def GetActFeastWishBottleByIndex(self, index): return self.ipyActFeastWishBottleCache[index]
|
| | | def GetActFeastWishPoolCount(self): return self.ipyActFeastWishPoolLen
|
| | | def GetActFeastWishPoolByIndex(self, index): return self.ipyActFeastWishPoolCache[index]
|
| | | def GetActFeastTravelCount(self): return self.ipyActFeastTravelLen
|
| | | def GetActFeastTravelByIndex(self, index): return self.ipyActFeastTravelCache[index]
|
| | | def GetActFeastTravelTaskCount(self): return self.ipyActFeastTravelTaskLen
|
| | | def GetActFeastTravelTaskByIndex(self, index): return self.ipyActFeastTravelTaskCache[index]
|
| | | def GetActFeastTravelAwardCount(self): return self.ipyActFeastTravelAwardLen
|
| | | def GetActFeastTravelAwardByIndex(self, index): return self.ipyActFeastTravelAwardCache[index]
|
| | | def GetZhuXianBossCount(self): return self.ipyZhuXianBossLen
|
| | | def GetZhuXianBossByIndex(self, index): return self.ipyZhuXianBossCache[index]
|
| | | def GetActFeastWeekPartyCount(self): return self.ipyActFeastWeekPartyLen
|
| | |
| | | import PlayerNewFairyCeremony
|
| | | import GameLogic_CrossGrassland
|
| | | import PlayerFeastWish
|
| | | import PlayerFeastTravel
|
| | | import PlayerWeekParty
|
| | | import NPCHurtManager
|
| | | import PlayerActLogin
|
| | |
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_WorldBoss, 1)
|
| | | PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_WorldBOSS, 1)
|
| | |
|
| | | if mapID == ChConfig.Def_FBMapID_BossHome:
|
| | |
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_BossHome, 1)
|
| | |
|
| | | elif mapID == ChConfig.Def_FBMapID_CrossPenglai:
|
| | | #跨服蓬莱仙境
|
| | |
| | | import PlayerBossReborn
|
| | | import PlayerWeekParty
|
| | | import PlayerFeastWeekParty
|
| | | import PlayerFeastTravel
|
| | | import PlayerFeastLogin
|
| | | import PlayerFeastWish
|
| | | import PlayerActLogin
|
| | |
| | | PlayerFeastLogin.OnPlayerLogin(curPlayer)
|
| | | # 节日祝福活动
|
| | | PlayerFeastWish.OnPlayerLogin(curPlayer)
|
| | | # 节日游历活动
|
| | | PlayerFeastTravel.OnPlayerLogin(curPlayer)
|
| | | # 登录奖励活动
|
| | | PlayerActLogin.OnLogin(curPlayer)
|
| | | # 仙界盛典活动
|
| | |
| | | # 领取节日登录奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_FeastLogin:
|
| | | PlayerFeastLogin.GetFeastLoginAward(curPlayer, dataEx)
|
| | | # 领取节日游历奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_FeastTravel:
|
| | | PlayerFeastTravel.GetFeastTravelAward(curPlayer, dataEx)
|
| | | # 领取跨服充值排行活动达标奖励
|
| | | elif rewardType == ChConfig.Def_RewardType_CACTGBillboardDabiao:
|
| | | CrossActCTGBillboard.GetDabiaoAward(curPlayer, dataEx)
|
| | |
| | | import CrossActCTGBillboard
|
| | | import PlayerActGrowupBuy
|
| | | import OpenServerCampaign
|
| | | import PlayerFeastTravel
|
| | | import PlayerWeekParty
|
| | | import PlayerGoldInvest
|
| | | import ItemCommon
|
| | |
| | | #开服活动
|
| | | #OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Recharge, addVIPExp)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_CTGExp, addVIPExp)
|
| | | #投资
|
| | | if ctgIpyData:
|
| | | PlayerGoldInvest.InvestByCTG(curPlayer, ctgIpyData.GetRecordID())
|
| | |
| | | import GameLogic_DuJie
|
| | | import PyGameData
|
| | | import PlayerMagicWeapon
|
| | | import PlayerFeastTravel
|
| | | import GameLogic_SealDemon
|
| | | import GameLogic_ZhuXianBoss
|
| | | import GameLogic_CrossDemonKing
|
| | |
| | |
|
| | | # 消费返利
|
| | | PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_UseGold, price)
|
| | |
|
| | | # 事件汇报
|
| | | #===========================================================================
|
| | |
| | | import PlayerBossReborn
|
| | | import PlayerWeekParty
|
| | | import PlayerFeastWeekParty
|
| | | import PlayerFeastTravel
|
| | | import PlayerFeastLogin
|
| | | import PlayerFeastWish
|
| | | import PlayerActLogin
|
| | |
| | | elif actionName == ShareDefine.OperationActionName_FeastWish:
|
| | | PlayerFeastWish.RefreshFeastWishActionInfo()
|
| | |
|
| | | elif actionName == ShareDefine.OperationActionName_FeastTravel:
|
| | | PlayerFeastTravel.RefreshFeastTravelActionInfo()
|
| | | |
| | | elif actionName == ShareDefine.OperationActionName_FeastWeekParty:
|
| | | PlayerFeastWeekParty.RefreshOperationAction_FeastWeekParty()
|
| | |
|
| | |
| | | import IpyGameDataPY
|
| | | import PlayerActivity
|
| | | import PlayerWeekParty
|
| | | import PlayerFeastTravel
|
| | | import PlayerFairyCeremony
|
| | | import PlayerNewFairyCeremony
|
| | | import ItemCommon
|
| | |
| | |
|
| | | PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FairyDomain, 1)
|
| | | PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FairyDomain, 1)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FairyDomain, 1)
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FairyDomain, 1)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FairyDomain, 1)
|
| | | return
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package Player.PlayerFeastTravel
|
| | | #
|
| | | # @todo:节日游历
|
| | | # @author hxp
|
| | | # @date 2021-02-01
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 节日游历
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2021-02-01 15:00"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import PyGameData
|
| | | import ShareDefine
|
| | | import PlayerControl
|
| | | import IpyGameDataPY
|
| | | import ItemControler
|
| | | import ChPyNetSendPack
|
| | | import IPY_GameWorld
|
| | | import NetPackCommon
|
| | | import GameWorld
|
| | | import ChConfig
|
| | |
|
| | | def OnPlayerLogin(curPlayer):
|
| | | isReset = __CheckPlayerFeastTravelAction(curPlayer)
|
| | | if not isReset:
|
| | | actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
|
| | | # 活动中同步活动信息
|
| | | if actInfo.get(ShareDefine.ActKey_State):
|
| | | Sync_FeastTravelActionInfo(curPlayer)
|
| | | Sync_FeastTravelPlayerInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def RefreshFeastTravelActionInfo():
|
| | | ## 收到GameServer同步的活动信息,刷新活动信息
|
| | | playerManager = GameWorld.GetPlayerManager()
|
| | | for index in xrange(playerManager.GetPlayerCount()):
|
| | | curPlayer = playerManager.GetPlayerByIndex(index)
|
| | | if curPlayer.GetID() == 0:
|
| | | continue
|
| | | __CheckPlayerFeastTravelAction(curPlayer)
|
| | | return
|
| | |
|
| | | def __CheckPlayerFeastTravelAction(curPlayer):
|
| | | ## 检查玩家活动信息
|
| | | |
| | | playerID = curPlayer.GetPlayerID()
|
| | | |
| | | actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
|
| | | actID = actInfo.get(ShareDefine.ActKey_ID, 0)
|
| | | state = actInfo.get(ShareDefine.ActKey_State, 0)
|
| | | |
| | | playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelID) # 玩家身上的活动ID
|
| | | # 活动ID 相同的话不处理
|
| | | if actID == playerActID:
|
| | | GameWorld.DebugLog("节日游历活动ID不变,不处理!", curPlayer.GetPlayerID())
|
| | | return
|
| | | GameWorld.DebugLog("节日游历活动重置! actID=%s,playerActID=%s,state=%s" % (actID, playerActID, state), playerID)
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelID, actID)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelPoint, 0)
|
| | | |
| | | if not state:
|
| | | return
|
| | | |
| | | templateID = __GetTravelTemplateID()
|
| | | |
| | | ipyMgr = IpyGameDataPY.IPY_Data()
|
| | | # 重置游历任务相关
|
| | | for index in xrange(ipyMgr.GetActFeastTravelTaskCount()):
|
| | | taskIpyData = ipyMgr.GetActFeastTravelTaskByIndex(index)
|
| | | taskID = taskIpyData.GetTraveTasklD()
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelValue % taskID, 0)
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelCount % taskID, 0)
|
| | | |
| | | # 重置游历奖励
|
| | | for index in xrange(ipyMgr.GetActFeastTravelAwardCount()):
|
| | | awardIpyData = ipyMgr.GetActFeastTravelAwardByIndex(index)
|
| | | if templateID != awardIpyData.GetTemplatelD():
|
| | | continue
|
| | | recordIndex = awardIpyData.GetRecordIndex()
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelAwardCount % recordIndex, 0)
|
| | | |
| | | Sync_FeastTravelActionInfo(curPlayer)
|
| | | Sync_FeastTravelPlayerInfo(curPlayer)
|
| | | return True
|
| | |
|
| | | def __GetTravelTemplateID():
|
| | | actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
|
| | | if not actInfo:
|
| | | return
|
| | | |
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | return
|
| | | |
| | | cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActFeastTravel", cfgID)
|
| | | if not ipyData:
|
| | | return
|
| | | |
| | | worldLV = actInfo.get(ShareDefine.ActKey_WorldLV)
|
| | | templateID = GameWorld.GetDictValueByRangeKey(ipyData.GetTemplateIDInfo(), worldLV, 0)
|
| | | return templateID
|
| | |
|
| | | def AddFeastTravelTaskValue(curPlayer, taskID, addValue=1):
|
| | | ## 增加游历任务完成进度
|
| | | actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
|
| | | if not actInfo:
|
| | | return
|
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | return
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActFeastTravelTask", taskID)
|
| | | if not ipyData:
|
| | | return
|
| | | maxFinishCount = ipyData.GetFinishTimeMax()
|
| | | curFinishCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelCount % taskID)
|
| | | if maxFinishCount and curFinishCount >= maxFinishCount:
|
| | | GameWorld.DebugLog("该游历任务已达到最大完成次数!taskID=%s,curFinishCount=%s" % (taskID, curFinishCount))
|
| | | return
|
| | | curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelValue % taskID) |
| | | updValue = curValue + addValue
|
| | | GameWorld.DebugLog("增加游历进度: taskID=%s,curValue=%s,addValue=%s,updValue=%s" % (taskID, curValue, addValue, updValue))
|
| | | |
| | | if maxFinishCount:
|
| | | maxValue = ipyData.GetFinishNeedValue() * maxFinishCount
|
| | | if updValue > maxValue:
|
| | | updValue = maxValue
|
| | | GameWorld.DebugLog(" 修正进度值不超过最大可完成次数的总进度值! maxFinishCount=%s,maxValue=%s,updValue=%s" |
| | | % (maxFinishCount, maxValue, updValue))
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelValue % taskID, updValue)
|
| | | updFinishCount = updValue / ipyData.GetFinishNeedValue()
|
| | | GameWorld.DebugLog(" curFinishCount=%s,updFinishCount=%s" % (curFinishCount, updFinishCount))
|
| | | # 增加完成次数
|
| | | if updFinishCount > curFinishCount:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelCount % taskID, updFinishCount)
|
| | | addFinishCount = updFinishCount - curFinishCount
|
| | | addTravelPointTotal = addFinishCount * ipyData.GetAddTravelPoint()
|
| | | |
| | | curTravelPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelPoint)
|
| | | updTravelPoint = curTravelPoint + addTravelPointTotal
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelPoint, updTravelPoint)
|
| | | GameWorld.DebugLog(" 完成游历: addFinishCount=%s,addTravelPointTotal=%s,curTravelPoint=%s,updTravelPoint=%s" |
| | | % (addFinishCount, addTravelPointTotal, curTravelPoint, updTravelPoint))
|
| | | |
| | | Sync_FeastTravelPlayerInfo(curPlayer, taskID, -1) # 不通知奖励
|
| | | return True
|
| | |
|
| | | def GetFeastTravelAward(curPlayer, index):
|
| | | ## 节日游历领奖
|
| | | |
| | | templateID = __GetTravelTemplateID()
|
| | | if not templateID:
|
| | | return
|
| | | |
| | | ipyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastTravelAward", templateID)
|
| | | if not ipyDataList:
|
| | | return
|
| | | |
| | | findIpyData = None
|
| | | for ipyData in ipyDataList:
|
| | | if index == ipyData.GetRecordIndex():
|
| | | findIpyData = ipyData
|
| | | break
|
| | | |
| | | if not findIpyData:
|
| | | return
|
| | | |
| | | getCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelAwardCount % index)
|
| | | getCountMax = findIpyData.GetAwardCountMax()
|
| | | if getCountMax and getCount >= getCountMax:
|
| | | GameWorld.DebugLog(" 节日游历领奖已达最大领取次数! templateID=%s,index=%s,getCount=%s >= getCountMax=%s" |
| | | % (templateID, index, getCount, getCountMax))
|
| | | return
|
| | | |
| | | curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelPoint)
|
| | | singleNeedPoint = findIpyData.GetNeedTravelPoint()
|
| | | canUsePoint = curPoint - getCount * singleNeedPoint
|
| | | if canUsePoint < singleNeedPoint:
|
| | | GameWorld.DebugLog(" 节日游历领奖游历值不足! templateID=%s,index=%s,curPoint=%s,getCount=%s,canUsePoint=%s < singleNeedPoint=%s" |
| | | % (templateID, index, curPoint, getCount, canUsePoint, singleNeedPoint))
|
| | | return
|
| | | |
| | | awardList = findIpyData.GetTravelAwardInfo()
|
| | | if not awardList:
|
| | | return
|
| | | |
| | | if not ItemControler.CheckPackSpaceEnough(curPlayer, awardList):
|
| | | return
|
| | | |
| | | updGetCount = getCount + 1
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelAwardCount % index, updGetCount)
|
| | | |
| | | GameWorld.DebugLog(" 节日游历领奖! templateID=%s,index=%s,curPoint=%s,getCount=%s,canUsePoint=%s,singleNeedPoint=%s,updGetCount=%s" |
| | | % (templateID, index, curPoint, getCount, canUsePoint, singleNeedPoint, updGetCount))
|
| | | |
| | | for itemID, itemCnt, isAuctionItem in awardList:
|
| | | ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isAuctionItem, [IPY_GameWorld.rptItem], event=["FeastTravel", False, {}])
|
| | | |
| | | Sync_FeastTravelPlayerInfo(curPlayer, -1, index) # 不通知任务
|
| | | return
|
| | |
|
| | | def Sync_FeastTravelPlayerInfo(curPlayer, taskID=None, awardIndex=None):
|
| | | ## 通知活动玩家信息
|
| | | # @param taskID: None-通知全部;>=0-单个通知;-1-不通知
|
| | | |
| | | syncTaskIDList = []
|
| | | if taskID == None:
|
| | | ipyMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyMgr.GetActFeastTravelTaskCount()):
|
| | | taskIpyData = ipyMgr.GetActFeastTravelTaskByIndex(index)
|
| | | syncTaskIDList.append(taskIpyData.GetTraveTasklD())
|
| | | elif taskID >= 0:
|
| | | syncTaskIDList = [taskID]
|
| | | |
| | | syncAwardIndexList = []
|
| | | if awardIndex == None:
|
| | | templateID = __GetTravelTemplateID()
|
| | | if templateID:
|
| | | awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastTravelAward", templateID)
|
| | | if awardIpyDataList:
|
| | | syncAwardIndexList = [awardIpyData.GetRecordIndex() for awardIpyData in awardIpyDataList]
|
| | | elif awardIndex >= 0:
|
| | | syncAwardIndexList = [awardIndex]
|
| | | |
| | | playerPack = ChPyNetSendPack.tagMCFeastTravelPlayerInfo()
|
| | | playerPack.TravelPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelPoint)
|
| | | playerPack.TravelPlayerTaskList = []
|
| | | for taskID in syncTaskIDList:
|
| | | taskInfo = ChPyNetSendPack.tagMCFeastTravelPlayerTask()
|
| | | taskInfo.TravelTaskID = taskID
|
| | | taskInfo.TravelValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelValue % taskID)
|
| | | taskInfo.FinishCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelCount % taskID)
|
| | | playerPack.TravelPlayerTaskList.append(taskInfo)
|
| | | playerPack.TravelPlayerTaskCount = len(playerPack.TravelPlayerTaskList)
|
| | | |
| | | playerPack.TravelPlayerAwardList = []
|
| | | for awardIndex in syncAwardIndexList:
|
| | | awardInfo = ChPyNetSendPack.tagMCFeastTravelPlayerAward()
|
| | | awardInfo.AwardIndex = awardIndex
|
| | | awardInfo.GetAwardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelAwardCount % awardIndex)
|
| | | playerPack.TravelPlayerAwardList.append(awardInfo)
|
| | | playerPack.TravelPlayerAwardCount = len(playerPack.TravelPlayerAwardList)
|
| | | |
| | | NetPackCommon.SendFakePack(curPlayer, playerPack)
|
| | | return
|
| | |
|
| | | def Sync_FeastTravelActionInfo(curPlayer):
|
| | | ## 通知活动信息
|
| | | actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
|
| | | if not actInfo:
|
| | | return
|
| | | |
| | | if not actInfo.get(ShareDefine.ActKey_State):
|
| | | return
|
| | | |
| | | cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("ActFeastTravel", cfgID)
|
| | | if not ipyData:
|
| | | return
|
| | | |
| | | worldLV = actInfo.get(ShareDefine.ActKey_WorldLV)
|
| | | templateID = GameWorld.GetDictValueByRangeKey(ipyData.GetTemplateIDInfo(), worldLV, 0)
|
| | | if not templateID:
|
| | | return
|
| | | |
| | | openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
|
| | | actPack = ChPyNetSendPack.tagMCFeastTravelInfo()
|
| | | actPack.Clear()
|
| | | actPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
|
| | | actPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
|
| | | actPack.ResetType = ipyData.GetResetType()
|
| | | |
| | | actPack.TravelTaskList = []
|
| | | ipyMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyMgr.GetActFeastTravelTaskCount()):
|
| | | taskIpyData = ipyMgr.GetActFeastTravelTaskByIndex(index)
|
| | | taskInfo = ChPyNetSendPack.tagMCFeastTravelTask()
|
| | | taskInfo.TravelTaskID = taskIpyData.GetTraveTasklD()
|
| | | taskInfo.FinishNeedValue = taskIpyData.GetFinishNeedValue()
|
| | | taskInfo.FinishTimeMax = taskIpyData.GetFinishTimeMax()
|
| | | taskInfo.AddTravelPoint = taskIpyData.GetAddTravelPoint()
|
| | | actPack.TravelTaskList.append(taskInfo)
|
| | | actPack.TravelTaskCount = len(actPack.TravelTaskList)
|
| | | |
| | | awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastTravelAward", templateID)
|
| | | actPack.TravelAwardList = []
|
| | | for awardIpyData in awardIpyDataList:
|
| | | awardInfo = ChPyNetSendPack.tagMCFeastTravelAward()
|
| | | awardInfo.AwardIndex = awardIpyData.GetRecordIndex()
|
| | | awardInfo.NeedTravelPoint = awardIpyData.GetNeedTravelPoint()
|
| | | awardInfo.AwardCountMax = awardIpyData.GetAwardCountMax()
|
| | | awardInfo.AwardItemList = []
|
| | | for itemID, itemCount, isAuctionItem in awardIpyData.GetTravelAwardInfo():
|
| | | itemInfo = ChPyNetSendPack.tagMCFeastTravelAwardItem()
|
| | | itemInfo.ItemID = itemID
|
| | | itemInfo.ItemCount = itemCount
|
| | | itemInfo.IsBind = isAuctionItem
|
| | | awardInfo.AwardItemList.append(itemInfo)
|
| | | awardInfo.AwardItemCount = len(awardInfo.AwardItemList)
|
| | | actPack.TravelAwardList.append(awardInfo)
|
| | | actPack.TravelAwardCount = len(actPack.TravelAwardList)
|
| | | |
| | | NetPackCommon.SendFakePack(curPlayer, actPack)
|
| | | return
|
| | |
|
| | |
| | | actPack.Clear()
|
| | | actPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
|
| | | actPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
|
| | | actPack.ResetType = ipyData.GetResetType()
|
| | | actPack.WishPoolShowItemList = poolIpyData.GetWishPoolClientItemShow() if poolIpyData else []
|
| | | actPack.WishPoolShowCount = len(actPack.WishPoolShowItemList)
|
| | | actPack.BottleInfoList = []
|
| | |
| | | import ItemControler
|
| | | import NetPackCommon
|
| | | import PlayerBossReborn
|
| | | import PlayerFeastTravel
|
| | | import PlayerFairyCeremony
|
| | | import PlayerNewFairyCeremony
|
| | | import ItemCommon
|
| | |
| | | if treasureType == 2:
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RuneTreasure, treasureCount)
|
| | | PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount)
|
| | | else:
|
| | | PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
|
| | | PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
|
| | | PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Treasure, treasureCount)
|
| | | PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount)
|
| | | # 给物品
|
| | | mailItemList = []
|
| | |
| | | OperationActionName_RechargeRebateGold = "ActRechargeRebateGold" # 充值返利仙玉活动(活动结束邮件发放,节日活动)
|
| | | OperationActionName_GrowupBuy = "ActGrowupBuy" # 成长必买活动
|
| | | OperationActionName_FeastLogin = "ActFeastLogin" # 节日登录活动
|
| | | OperationActionName_FeastWish = "ActFeastWish" # 节日祝愿活动
|
| | | OperationActionName_FeastWish = "ActFeastWish" # 节日祝福活动
|
| | | OperationActionName_FeastTravel = "ActFeastTravel" # 节日游历活动
|
| | | #节日活动类型列表 - 该类型无视开服天,日期到了就开启
|
| | | FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
|
| | | OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
|
| | | OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
|
| | | OperationActionName_FeastWish,
|
| | | OperationActionName_FeastWish, OperationActionName_FeastTravel,
|
| | | ]
|
| | | #所有的运营活动列表,含节日活动
|
| | | OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
|
| | |
| | | OperationActionName_WeekParty,
|
| | | OperationActionName_CollectWords, OperationActionName_CollectWords2,
|
| | | OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
|
| | | OperationActionName_FeastWish,
|
| | | OperationActionName_FeastWish, OperationActionName_FeastTravel,
|
| | | ]
|
| | |
|
| | | #所有的累计充值活动
|