From 1c39d19d2b49465cf8bd8bdea831f9adb012411c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 25 十一月 2024 14:55:01 +0800 Subject: [PATCH] 1111 【越南】【砍树】【英文】【tqxbqy】【btgotq】背包相关初始格子数改为读配置 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 429 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 415 insertions(+), 14 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 8bfa892..c0fdcb6 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -4715,7 +4715,7 @@ ID = 0 #(DWORD ID) ID2 = 0 #(DWORD ID2) Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字 - Name2 = "" #(char Name2[33])//名字2 + Name2 = "" #(char Name2[65])//名字2 Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 Value1 = 0 #(DWORD Value1)//排序依赖的值,比如,等级 Value2 = 0 #(DWORD Value2)//排序依赖的值,比如,战斗力 @@ -4742,7 +4742,7 @@ self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33) - self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65) self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) @@ -4787,7 +4787,7 @@ length += 4 length += 4 length += 33 - length += 33 + length += 65 length += 1 length += 4 length += 4 @@ -4811,7 +4811,7 @@ data = CommFunc.WriteDWORD(data, self.ID) data = CommFunc.WriteDWORD(data, self.ID2) data = CommFunc.WriteString(data, 33, self.Name1) - data = CommFunc.WriteString(data, 33, self.Name2) + data = CommFunc.WriteString(data, 65, self.Name2) data = CommFunc.WriteBYTE(data, self.Type2) data = CommFunc.WriteDWORD(data, self.Value1) data = CommFunc.WriteDWORD(data, self.Value2) @@ -14685,6 +14685,8 @@ Job = 0 #(BYTE Job)// 玩家职业 JobLevel = 0 #(BYTE JobLevel)// 玩家职业阶级 RealmLV = 0 #(WORD RealmLV)// 玩家境界等级 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -14703,6 +14705,8 @@ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -14717,6 +14721,8 @@ self.Job = 0 self.JobLevel = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -14729,6 +14735,8 @@ length += 1 length += 1 length += 2 + length += 4 + length += 4 return length @@ -14742,6 +14750,8 @@ data = CommFunc.WriteBYTE(data, self.Job) data = CommFunc.WriteBYTE(data, self.JobLevel) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -14753,7 +14763,9 @@ LV:%d, Job:%d, JobLevel:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.Head.OutputString(), @@ -14763,7 +14775,9 @@ self.LV, self.Job, self.JobLevel, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -16844,7 +16858,7 @@ ID = 0 #(DWORD ID) ID2 = 0 #(DWORD ID2) Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字 - Name2 = "" #(char Name2[33])//名字2 + Name2 = "" #(char Name2[65])//名字2 Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 Value1 = 0 #(DWORD Value1)//自定义值1 Value2 = 0 #(DWORD Value2)//自定义值2 @@ -16871,7 +16885,7 @@ self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33) - self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65) self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) @@ -16916,7 +16930,7 @@ length += 4 length += 4 length += 33 - length += 33 + length += 65 length += 1 length += 4 length += 4 @@ -16940,7 +16954,7 @@ data = CommFunc.WriteDWORD(data, self.ID) data = CommFunc.WriteDWORD(data, self.ID2) data = CommFunc.WriteString(data, 33, self.Name1) - data = CommFunc.WriteString(data, 33, self.Name2) + data = CommFunc.WriteString(data, 65, self.Name2) data = CommFunc.WriteBYTE(data, self.Type2) data = CommFunc.WriteDWORD(data, self.Value1) data = CommFunc.WriteDWORD(data, self.Value2) @@ -38101,6 +38115,8 @@ DayNum = 0 #(BYTE DayNum)//天编号,从1开始,过期未签到领取的天可消耗货币补签领取 Count = 0 #(BYTE Count)// 奖励物品数 AwardItemList = list() #(vector<tagMCActLoginNewItem> AwardItemList)// 奖励物品列表 + CountEx = 0 #(BYTE CountEx)// 额外奖励物品数 + AwardItemListEx = list() #(vector<tagMCActLoginNewItem> AwardItemListEx)// 额外奖励物品列表 data = None def __init__(self): @@ -38115,12 +38131,19 @@ temAwardItemList = tagMCActLoginNewItem() _pos = temAwardItemList.ReadData(_lpData, _pos) self.AwardItemList.append(temAwardItemList) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemListEx = tagMCActLoginNewItem() + _pos = temAwardItemListEx.ReadData(_lpData, _pos) + self.AwardItemListEx.append(temAwardItemListEx) return _pos def Clear(self): self.DayNum = 0 self.Count = 0 self.AwardItemList = list() + self.CountEx = 0 + self.AwardItemListEx = list() return def GetLength(self): @@ -38129,6 +38152,9 @@ length += 1 for i in range(self.Count): length += self.AwardItemList[i].GetLength() + length += 1 + for i in range(self.CountEx): + length += self.AwardItemListEx[i].GetLength() return length @@ -38138,17 +38164,24 @@ data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemListEx[i].GetLength(), self.AwardItemListEx[i].GetBuffer()) return data def OutputString(self): DumpString = ''' DayNum:%d, Count:%d, - AwardItemList:%s + AwardItemList:%s, + CountEx:%d, + AwardItemListEx:%s '''\ %( self.DayNum, self.Count, + "...", + self.CountEx, "..." ) return DumpString @@ -38162,6 +38195,7 @@ LimitLV = 0 #(WORD LimitLV)// 限制等级 RepSignMoneyType = 0 #(BYTE RepSignMoneyType)// 补签消耗货币类型 RepSignMoneyValue = 0 #(DWORD RepSignMoneyValue)// 补签消耗货币值 + AwardExCTGID = 0 #(WORD AwardExCTGID)// 扩展奖励礼包充值ID,大于0时代表可以购买礼包每日登录可领取额外奖励 DayCount = 0 #(BYTE DayCount) AwardDayList = list() #(vector<tagMCActLoginNewDay> AwardDayList)// 奖励天列表 data = None @@ -38181,6 +38215,7 @@ self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.RepSignMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.RepSignMoneyValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.AwardExCTGID,_pos = CommFunc.ReadWORD(_lpData, _pos) self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.DayCount): temAwardDayList = tagMCActLoginNewDay() @@ -38199,6 +38234,7 @@ self.LimitLV = 0 self.RepSignMoneyType = 0 self.RepSignMoneyValue = 0 + self.AwardExCTGID = 0 self.DayCount = 0 self.AwardDayList = list() return @@ -38212,6 +38248,7 @@ length += 2 length += 1 length += 4 + length += 2 length += 1 for i in range(self.DayCount): length += self.AwardDayList[i].GetLength() @@ -38227,6 +38264,7 @@ data = CommFunc.WriteWORD(data, self.LimitLV) data = CommFunc.WriteBYTE(data, self.RepSignMoneyType) data = CommFunc.WriteDWORD(data, self.RepSignMoneyValue) + data = CommFunc.WriteWORD(data, self.AwardExCTGID) data = CommFunc.WriteBYTE(data, self.DayCount) for i in range(self.DayCount): data = CommFunc.WriteString(data, self.AwardDayList[i].GetLength(), self.AwardDayList[i].GetBuffer()) @@ -38241,6 +38279,7 @@ LimitLV:%d, RepSignMoneyType:%d, RepSignMoneyValue:%d, + AwardExCTGID:%d, DayCount:%d, AwardDayList:%s '''\ @@ -38252,6 +38291,7 @@ self.LimitLV, self.RepSignMoneyType, self.RepSignMoneyValue, + self.AwardExCTGID, self.DayCount, "..." ) @@ -38271,7 +38311,8 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("ActNum", c_ubyte), # 活动编号 - ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取 + ("LoginAward", c_int), # 普通奖励领取记录,按天对应二进制位记录是否已领取 + ("LoginAwardEx", c_int), # 额外奖励领取记录,按天对应二进制位记录是否已领取 ] def __init__(self): @@ -38290,6 +38331,7 @@ self.SubCmd = 0x70 self.ActNum = 0 self.LoginAward = 0 + self.LoginAwardEx = 0 return def GetLength(self): @@ -38303,13 +38345,15 @@ Cmd:%s, SubCmd:%s, ActNum:%d, - LoginAward:%d + LoginAward:%d, + LoginAwardEx:%d '''\ %( self.Cmd, self.SubCmd, self.ActNum, - self.LoginAward + self.LoginAward, + self.LoginAwardEx ) return DumpString @@ -38319,6 +38363,363 @@ #------------------------------------------------------ +# AA 88 轮回殿活动信息 #tagMCActLunhuidianInfo + +class tagMCActLunhuidianItem(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(tagMCActLunhuidianItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 88 轮回殿活动信息 //tagMCActLunhuidianInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCActLunhuidianAward(Structure): + AwardIndex = 0 #(BYTE AwardIndex)// 奖励记录索引 0~30 + NeedValue = 0 #(DWORD NeedValue)// 奖励所需值 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCActLunhuidianItem> 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.NeedValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAwardItemList = tagMCActLunhuidianItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.AwardIndex = 0 + self.NeedValue = 0 + self.Count = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.AwardIndex) + data = CommFunc.WriteDWORD(data, self.NeedValue) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + AwardIndex:%d, + NeedValue:%d, + Count:%d, + AwardItemList:%s + '''\ + %( + self.AwardIndex, + self.NeedValue, + self.Count, + "..." + ) + return DumpString + + +class tagMCActLunhuidianRound(Structure): + RoundType = 0 #(BYTE RoundType)// 轮回类型 + AwardType = 0 #(BYTE AwardType)// 奖励类型 1-消耗货币;2-寻宝次数 + AwardTypeValue = 0 #(DWORD AwardTypeValue)// 奖励类型对应值,消耗货币时为对应的货币类型,寻宝时为对应的寻宝类型 + RoundMax = 0 #(BYTE RoundMax)// 最大可循环轮次 + AwardCount = 0 #(BYTE AwardCount) + AwardList = list() #(vector<tagMCActLunhuidianAward> AwardList)// 每轮奖励列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.RoundType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AwardTypeValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardCount): + temAwardList = tagMCActLunhuidianAward() + _pos = temAwardList.ReadData(_lpData, _pos) + self.AwardList.append(temAwardList) + return _pos + + def Clear(self): + self.RoundType = 0 + self.AwardType = 0 + self.AwardTypeValue = 0 + self.RoundMax = 0 + self.AwardCount = 0 + self.AwardList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + length += 4 + length += 1 + length += 1 + for i in range(self.AwardCount): + length += self.AwardList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.RoundType) + data = CommFunc.WriteBYTE(data, self.AwardType) + data = CommFunc.WriteDWORD(data, self.AwardTypeValue) + data = CommFunc.WriteBYTE(data, self.RoundMax) + data = CommFunc.WriteBYTE(data, self.AwardCount) + for i in range(self.AwardCount): + data = CommFunc.WriteString(data, self.AwardList[i].GetLength(), self.AwardList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + RoundType:%d, + AwardType:%d, + AwardTypeValue:%d, + RoundMax:%d, + AwardCount:%d, + AwardList:%s + '''\ + %( + self.RoundType, + self.AwardType, + self.AwardTypeValue, + self.RoundMax, + self.AwardCount, + "..." + ) + return DumpString + + +class tagMCActLunhuidianInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)// 活动编号 + 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)// 限制等级 + RoundCount = 0 #(BYTE RoundCount) + RoundList = list() #(vector<tagMCActLunhuidianRound> RoundList)// 轮回列表,支持多个不同类型轮回同时开启 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x88 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ActNum,_pos = CommFunc.ReadBYTE(_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.RoundCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RoundCount): + temRoundList = tagMCActLunhuidianRound() + _pos = temRoundList.ReadData(_lpData, _pos) + self.RoundList.append(temRoundList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x88 + self.ActNum = 0 + self.StartDate = "" + self.EndtDate = "" + self.ResetType = 0 + self.LimitLV = 0 + self.RoundCount = 0 + self.RoundList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 1 + length += 2 + length += 1 + for i in range(self.RoundCount): + length += self.RoundList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ActNum) + 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.WriteBYTE(data, self.RoundCount) + for i in range(self.RoundCount): + data = CommFunc.WriteString(data, self.RoundList[i].GetLength(), self.RoundList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + StartDate:%s, + EndtDate:%s, + ResetType:%d, + LimitLV:%d, + RoundCount:%d, + RoundList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.StartDate, + self.EndtDate, + self.ResetType, + self.LimitLV, + self.RoundCount, + "..." + ) + return DumpString + + +m_NAtagMCActLunhuidianInfo=tagMCActLunhuidianInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianInfo.Head.Cmd,m_NAtagMCActLunhuidianInfo.Head.SubCmd))] = m_NAtagMCActLunhuidianInfo + + +#------------------------------------------------------ +# AA 89 轮回殿活动玩家信息 #tagMCActLunhuidianPlayerInfo + +class tagMCActLunhuidianPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ActNum", c_ubyte), # 活动编号 + ("RoundType", c_ubyte), # 轮回类型 + ("CurRound", c_ubyte), # 当前轮次 + ("CurValue", c_int), # 累计值 + ("AwardRecord", c_int), # 当前轮次奖励领奖记录,按奖励索引二进制位存储是否已领取,所有奖励已领取后自动进入下一轮,且重置该奖励状态 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x89 + 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 = 0x89 + self.ActNum = 0 + self.RoundType = 0 + self.CurRound = 0 + self.CurValue = 0 + self.AwardRecord = 0 + return + + def GetLength(self): + return sizeof(tagMCActLunhuidianPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 89 轮回殿活动玩家信息 //tagMCActLunhuidianPlayerInfo: + Cmd:%s, + SubCmd:%s, + ActNum:%d, + RoundType:%d, + CurRound:%d, + CurValue:%d, + AwardRecord:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ActNum, + self.RoundType, + self.CurRound, + self.CurValue, + self.AwardRecord + ) + return DumpString + + +m_NAtagMCActLunhuidianPlayerInfo=tagMCActLunhuidianPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLunhuidianPlayerInfo.Cmd,m_NAtagMCActLunhuidianPlayerInfo.SubCmd))] = m_NAtagMCActLunhuidianPlayerInfo + + +#------------------------------------------------------ # AA 48 多日连充活动信息 #tagMCActManyDayRechargeInfo class tagMCActManyDayRechargeItem(Structure): -- Gitblit v1.8.0