From 8ddb747ebd56d56cd4fb93e7de9bcdfae87ae5c8 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 15 二月 2019 17:13:15 +0800 Subject: [PATCH] 2903 【BUG】【1.6】玉佩有灵宠增加伤害,但属性里没有 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 497 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 288 insertions(+), 209 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 1f6d43c..a79ee37 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -8983,64 +8983,92 @@ # C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState class tagGCCrossRealmPKSeasonState(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("ZoneID", c_ubyte), # 所属赛区ID - ("SeasonID", c_ushort), # 当前赛季ID - ("SeasonState", c_ubyte), # 赛季状态;0-未开启,1-开启中,2-已结束 - ("MatchState", c_ubyte), # 匹配状态;0-未开启;1-开启中 - ] + Head = tagHead() + ZoneID = 0 #(BYTE ZoneID)// 所属赛区ID + SeasonID = 0 #(WORD SeasonID)// 当前赛季ID + SeasonState = 0 #(BYTE SeasonState)// 赛季状态;0-未开启,1-开启中,2-已结束 + MatchState = 0 #(BYTE MatchState)// 匹配状态;0-未开启;1-开启中 + CrossZoneNameLen = 0 #(BYTE CrossZoneNameLen) + CrossZoneName = "" #(String CrossZoneName)// 跨服分区名 + data = None def __init__(self): self.Clear() - self.Cmd = 0xC0 - self.SubCmd = 0x06 + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x06 return - def ReadData(self, stringData, _pos=0, _len=0): + def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() + _pos = self.Head.ReadData(_lpData, _pos) + self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.SeasonState,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.MatchState,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CrossZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CrossZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.CrossZoneNameLen) + return _pos def Clear(self): - self.Cmd = 0xC0 - self.SubCmd = 0x06 + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x06 self.ZoneID = 0 self.SeasonID = 0 self.SeasonState = 0 self.MatchState = 0 + self.CrossZoneNameLen = 0 + self.CrossZoneName = "" return def GetLength(self): - return sizeof(tagGCCrossRealmPKSeasonState) + length = 0 + length += self.Head.GetLength() + length += 1 + length += 2 + length += 1 + length += 1 + length += 1 + length += len(self.CrossZoneName) + + return length def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ZoneID) + data = CommFunc.WriteWORD(data, self.SeasonID) + data = CommFunc.WriteBYTE(data, self.SeasonState) + data = CommFunc.WriteBYTE(data, self.MatchState) + data = CommFunc.WriteBYTE(data, self.CrossZoneNameLen) + data = CommFunc.WriteString(data, self.CrossZoneNameLen, self.CrossZoneName) + return data def OutputString(self): - DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState: - Cmd:%s, - SubCmd:%s, + DumpString = ''' + Head:%s, ZoneID:%d, SeasonID:%d, SeasonState:%d, - MatchState:%d + MatchState:%d, + CrossZoneNameLen:%d, + CrossZoneName:%s '''\ %( - self.Cmd, - self.SubCmd, + self.Head.OutputString(), self.ZoneID, self.SeasonID, self.SeasonState, - self.MatchState + self.MatchState, + self.CrossZoneNameLen, + self.CrossZoneName ) return DumpString m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Head.Cmd,m_NAtagGCCrossRealmPKSeasonState.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState #------------------------------------------------------ @@ -20451,56 +20479,13 @@ #------------------------------------------------------ # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo -class tagMCActLoginAwardItem(Structure): - _pack_ = 1 - _fields_ = [ - ("ItemID", c_int), # 物品ID - ("ItemCnt", 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.ItemCnt = 0 - self.IsBind = 0 - return - - def GetLength(self): - return sizeof(tagMCActLoginAwardItem) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AA 0C 登录奖励活动信息 //tagMCActLoginAwardInfo: - ItemID:%d, - ItemCnt:%d, - IsBind:%d - '''\ - %( - self.ItemID, - self.ItemCnt, - self.IsBind - ) - return DumpString - - class tagMCActLoginAwardAction(Structure): TemplateID = 0 #(DWORD TemplateID)// 模板ID ActionType = 0 #(WORD ActionType)// 活动类别 TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数 SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数 - Count = 0 #(BYTE Count)// 物品数 - ItemInfo = list() #(vector<tagMCActLoginAwardItem> ItemInfo)// 物品信息 + Count = 0 #(WORD Count)// 物品配置长度 + ItemInfo = "" #(String ItemInfo)// 物品信息 data = None def __init__(self): @@ -20513,11 +20498,8 @@ self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos) self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.Count): - temItemInfo = tagMCActLoginAwardItem() - _pos = temItemInfo.ReadData(_lpData, _pos) - self.ItemInfo.append(temItemInfo) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count) return _pos def Clear(self): @@ -20526,7 +20508,7 @@ self.TotalTimes = 0 self.SingleTimes = 0 self.Count = 0 - self.ItemInfo = list() + self.ItemInfo = "" return def GetLength(self): @@ -20535,9 +20517,8 @@ length += 2 length += 4 length += 4 - length += 1 - for i in range(self.Count): - length += self.ItemInfo[i].GetLength() + length += 2 + length += len(self.ItemInfo) return length @@ -20547,9 +20528,8 @@ data = CommFunc.WriteWORD(data, self.ActionType) data = CommFunc.WriteDWORD(data, self.TotalTimes) data = CommFunc.WriteDWORD(data, self.SingleTimes) - data = CommFunc.WriteBYTE(data, self.Count) - for i in range(self.Count): - data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer()) + data = CommFunc.WriteWORD(data, self.Count) + data = CommFunc.WriteString(data, self.Count, self.ItemInfo) return data def OutputString(self): @@ -20567,7 +20547,7 @@ self.TotalTimes, self.SingleTimes, self.Count, - "..." + self.ItemInfo ) return DumpString @@ -20575,6 +20555,7 @@ class tagMCActLoginAwardDayInfo(Structure): ActCnt = 0 #(BYTE ActCnt)// 数量 TemplateList = list() #(vector<WORD> TemplateList)// 模板列表 + WorldLV = 0 #(WORD WorldLV)// 世界等级 data = None def __init__(self): @@ -20587,17 +20568,20 @@ for i in range(self.ActCnt): value,_pos=CommFunc.ReadWORD(_lpData,_pos) self.TemplateList.append(value) + self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos) return _pos def Clear(self): self.ActCnt = 0 self.TemplateList = list() + self.WorldLV = 0 return def GetLength(self): length = 0 length += 1 length += 2 * self.ActCnt + length += 2 return length @@ -20606,16 +20590,19 @@ data = CommFunc.WriteBYTE(data, self.ActCnt) for i in range(self.ActCnt): data = CommFunc.WriteWORD(data, self.TemplateList[i]) + data = CommFunc.WriteWORD(data, self.WorldLV) return data def OutputString(self): DumpString = ''' ActCnt:%d, - TemplateList:%s + TemplateList:%s, + WorldLV:%d '''\ %( self.ActCnt, - "..." + "...", + self.WorldLV ) return DumpString @@ -23783,6 +23770,221 @@ #------------------------------------------------------ +# AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo + +class tagMCLuckyTreasureItem(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), # 物品ID + ("ItemCnt", 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.ItemCnt = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCLuckyTreasureItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo: + ItemID:%d, + ItemCnt:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCnt, + self.IsBind + ) + return DumpString + + +class tagMCLuckyTreasureInfo(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点重置 + LimitLV = 0 #(WORD LimitLV)// 限制等级 + LuckyPoint = 0 #(WORD LuckyPoint)// 总幸运值 + Count = 0 #(WORD Count)// 物品数 + ItemList = list() #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x1F + 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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.Count): + temItemList = tagMCLuckyTreasureItem() + _pos = temItemList.ReadData(_lpData, _pos) + self.ItemList.append(temItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x1F + self.StartDate = "" + self.EndtDate = "" + self.ResetType = 0 + self.LimitLV = 0 + self.LuckyPoint = 0 + self.Count = 0 + self.ItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 10 + length += 10 + length += 1 + length += 2 + length += 2 + length += 2 + for i in range(self.Count): + length += self.ItemList[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.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteWORD(data, self.LuckyPoint) + data = CommFunc.WriteWORD(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + StartDate:%s, + EndtDate:%s, + ResetType:%d, + LimitLV:%d, + LuckyPoint:%d, + Count:%d, + ItemList:%s + '''\ + %( + self.Head.OutputString(), + self.StartDate, + self.EndtDate, + self.ResetType, + self.LimitLV, + self.LuckyPoint, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo + + +#------------------------------------------------------ +# AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo + +class tagMCLuckyTreasureResultInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("LuckyPoint", c_ushort), # 当前幸运点 + ("HasFree", c_ubyte), # 是否免费过 + ("ItemID", c_int), # 物品ID + ("ItemCnt", c_ushort), #物品数量 + ("IsBind", c_ubyte), # 是否绑定 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x1E + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xAA + self.SubCmd = 0x1E + self.LuckyPoint = 0 + self.HasFree = 0 + self.ItemID = 0 + self.ItemCnt = 0 + self.IsBind = 0 + return + + def GetLength(self): + return sizeof(tagMCLuckyTreasureResultInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo: + Cmd:%s, + SubCmd:%s, + LuckyPoint:%d, + HasFree:%d, + ItemID:%d, + ItemCnt:%d, + IsBind:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.LuckyPoint, + self.HasFree, + self.ItemID, + self.ItemCnt, + self.IsBind + ) + return DumpString + + +m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo + + +#------------------------------------------------------ # AA 23 新仙界盛典全民来嗨玩家信息 #tagMCNewAllPeoplePartyInfo class tagMCNewAllPeoplePartyCount(Structure): @@ -25468,129 +25670,6 @@ m_NAtagMCExchangeActionItemCntRecord=tagMCExchangeActionItemCntRecord() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCExchangeActionItemCntRecord.Head.Cmd,m_NAtagMCExchangeActionItemCntRecord.Head.SubCmd))] = m_NAtagMCExchangeActionItemCntRecord - - -#------------------------------------------------------ -# AB 26 节日红包任务进度信息 #tagMCFeastRedPackTaskInfo - -class tagMCFeastRedPackTaskProgress(Structure): - _pack_ = 1 - _fields_ = [ - ("TaskType", c_ubyte), #任务类型 - ("TaskData", c_int), #任务数据 - ("CurTimes", c_ushort), #当前完成次数 - ("RedPackState", 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.TaskType = 0 - self.TaskData = 0 - self.CurTimes = 0 - self.RedPackState = 0 - return - - def GetLength(self): - return sizeof(tagMCFeastRedPackTaskProgress) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''// AB 26 节日红包任务进度信息 //tagMCFeastRedPackTaskInfo: - TaskType:%d, - TaskData:%d, - CurTimes:%d, - RedPackState:%d - '''\ - %( - self.TaskType, - self.TaskData, - self.CurTimes, - self.RedPackState - ) - return DumpString - - -class tagMCFeastRedPackTaskInfo(Structure): - Head = tagHead() - FeastDayIndex = 0 #(BYTE FeastDayIndex)//节日天索引,从0开始 - TaskCount = 0 #(BYTE TaskCount)//今日任务数 - TaskProgressList = list() #(vector<tagMCFeastRedPackTaskProgress> TaskProgressList)// 任务进度信息列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xAB - self.Head.SubCmd = 0x26 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.FeastDayIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.TaskCount): - temTaskProgressList = tagMCFeastRedPackTaskProgress() - _pos = temTaskProgressList.ReadData(_lpData, _pos) - self.TaskProgressList.append(temTaskProgressList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xAB - self.Head.SubCmd = 0x26 - self.FeastDayIndex = 0 - self.TaskCount = 0 - self.TaskProgressList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 1 - for i in range(self.TaskCount): - length += self.TaskProgressList[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.FeastDayIndex) - data = CommFunc.WriteBYTE(data, self.TaskCount) - for i in range(self.TaskCount): - data = CommFunc.WriteString(data, self.TaskProgressList[i].GetLength(), self.TaskProgressList[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - FeastDayIndex:%d, - TaskCount:%d, - TaskProgressList:%s - '''\ - %( - self.Head.OutputString(), - self.FeastDayIndex, - self.TaskCount, - "..." - ) - return DumpString - - -m_NAtagMCFeastRedPackTaskInfo=tagMCFeastRedPackTaskInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackTaskInfo.Head.Cmd,m_NAtagMCFeastRedPackTaskInfo.Head.SubCmd))] = m_NAtagMCFeastRedPackTaskInfo #------------------------------------------------------ -- Gitblit v1.8.0