From 3430c7509dc69005f7532cbd20cb6617aa6a9bf3 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期五, 31 五月 2019 10:13:13 +0800 Subject: [PATCH] 6501 活跃任务接口 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 505 +++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 336 insertions(+), 169 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 3afc13f..a218635 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -829,7 +829,7 @@ Head = tagHead() Type = 0 #(BYTE Type)//类型 Count = 0 #(WORD Count)//数量 - UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count + UniversalGameRec = list() #(vector<tagUniversalGameRec> UniversalGameRec)///size = Count data = None def __init__(self): @@ -1133,7 +1133,7 @@ FamilyID = 0 #(DWORD FamilyID)//家族ID ActionType = 0 #(BYTE ActionType)//类型 Count = 0 #(WORD Count)//数量 - FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count + FamilyActionList = list() #(vector<tagGCFamilyAction> FamilyActionList)//size = Count data = None def __init__(self): @@ -2981,8 +2981,8 @@ IsAlive = 0 #(BYTE IsAlive)// 是否存活 RecordLen = 0 #(WORD RecordLen)// 长度 KillRecord = "" #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen - RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒 - RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒 + RefreshSecond = 0 #(DWORD RefreshSecond)// 刷新倒计时, 秒 + RefreshCD = 0 #(DWORD RefreshCD)// 刷新总CD时, 秒 data = None def __init__(self): @@ -3371,6 +3371,190 @@ #------------------------------------------------------ +# A9 05 通知广播装备详细信息 #tagGCNotifyEquipDetailInfo + +class tagGCNotifyEquipClassEquip(Structure): + _pack_ = 1 + _fields_ = [ + ("ItemID", c_int), + ("Star", 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.Star = 0 + return + + def GetLength(self): + return sizeof(tagGCNotifyEquipClassEquip) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 05 通知广播装备详细信息 //tagGCNotifyEquipDetailInfo: + ItemID:%d, + Star:%d + '''\ + %( + self.ItemID, + self.Star + ) + return DumpString + + +class tagGCNotifyEquipDetailInfo(Structure): + Head = tagHead() + ItemGUID = "" #(char ItemGUID[40]) + ItemID = 0 #(DWORD ItemID) + Star = 0 #(BYTE Star)//星级 + PlusLV = 0 #(WORD PlusLV)//强化等级 + EvolveLV = 0 #(BYTE EvolveLV)//进化等级 + WashLV = 0 #(BYTE WashLV)//洗练等级 + WashValueCount = 0 #(BYTE WashValueCount) + WashValueList = list() #(vector<WORD> WashValueList)//洗练值 + StoneIDCount = 0 #(BYTE StoneIDCount) + StoneIDList = list() #(vector<DWORD> StoneIDList)//宝石 + ClassEquipCount = 0 #(BYTE ClassEquipCount) + ClassEquipList = list() #(vector<tagGCNotifyEquipClassEquip> ClassEquipList)//本境界穿戴的装备 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x05 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40) + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Star,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlusLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.EvolveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WashLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WashValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.WashValueCount): + value,_pos=CommFunc.ReadWORD(_lpData,_pos) + self.WashValueList.append(value) + self.StoneIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.StoneIDCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.StoneIDList.append(value) + self.ClassEquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ClassEquipCount): + temClassEquipList = tagGCNotifyEquipClassEquip() + _pos = temClassEquipList.ReadData(_lpData, _pos) + self.ClassEquipList.append(temClassEquipList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x05 + self.ItemGUID = "" + self.ItemID = 0 + self.Star = 0 + self.PlusLV = 0 + self.EvolveLV = 0 + self.WashLV = 0 + self.WashValueCount = 0 + self.WashValueList = list() + self.StoneIDCount = 0 + self.StoneIDList = list() + self.ClassEquipCount = 0 + self.ClassEquipList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 40 + length += 4 + length += 1 + length += 2 + length += 1 + length += 1 + length += 1 + length += 2 * self.WashValueCount + length += 1 + length += 4 * self.StoneIDCount + length += 1 + for i in range(self.ClassEquipCount): + length += self.ClassEquipList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 40, self.ItemGUID) + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteBYTE(data, self.Star) + data = CommFunc.WriteWORD(data, self.PlusLV) + data = CommFunc.WriteBYTE(data, self.EvolveLV) + data = CommFunc.WriteBYTE(data, self.WashLV) + data = CommFunc.WriteBYTE(data, self.WashValueCount) + for i in range(self.WashValueCount): + data = CommFunc.WriteWORD(data, self.WashValueList[i]) + data = CommFunc.WriteBYTE(data, self.StoneIDCount) + for i in range(self.StoneIDCount): + data = CommFunc.WriteDWORD(data, self.StoneIDList[i]) + data = CommFunc.WriteBYTE(data, self.ClassEquipCount) + for i in range(self.ClassEquipCount): + data = CommFunc.WriteString(data, self.ClassEquipList[i].GetLength(), self.ClassEquipList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ItemGUID:%s, + ItemID:%d, + Star:%d, + PlusLV:%d, + EvolveLV:%d, + WashLV:%d, + WashValueCount:%d, + WashValueList:%s, + StoneIDCount:%d, + StoneIDList:%s, + ClassEquipCount:%d, + ClassEquipList:%s + '''\ + %( + self.Head.OutputString(), + self.ItemGUID, + self.ItemID, + self.Star, + self.PlusLV, + self.EvolveLV, + self.WashLV, + self.WashValueCount, + "...", + self.StoneIDCount, + "...", + self.ClassEquipCount, + "..." + ) + return DumpString + + +m_NAtagGCNotifyEquipDetailInfo=tagGCNotifyEquipDetailInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNotifyEquipDetailInfo.Head.Cmd,m_NAtagGCNotifyEquipDetailInfo.Head.SubCmd))] = m_NAtagGCNotifyEquipDetailInfo + + +#------------------------------------------------------ #A9 03 开服活动奖励数量刷新#tagGCOpenServerCampaignAwardCount class tagGCOpenServerCampaignAwardCount(Structure): @@ -3451,7 +3635,7 @@ OrderIndex = 0 #(DWORD OrderIndex)//名次索引,0代表第一名 ID = 0 #(DWORD ID) ID2 = 0 #(DWORD ID2) - Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字 + Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字 Name2 = "" #(char Name2[33])//名字2 Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 Value1 = 0 #(DWORD Value1)//排序依赖的值,比如,等级 @@ -3763,7 +3947,7 @@ Count = 0 #(DWORD Count)//数量 IsBind = 0 #(BYTE IsBind)//是否绑定 UserDataLen = 0 #(DWORD UserDataLen) - UserData = "" #(String UserData)//自定义数据 + UserData = "" #(String UserData)//自定义数据 data = None def __init__(self): @@ -4004,7 +4188,7 @@ Name = "" #(char Name[33]) LV = 0 #(DWORD LV)//等级 Job = 0 #(BYTE Job) - RealmLV = 0 #(WORD RealmLV)//境界 + RealmLV = 0 #(WORD RealmLV)//境界 data = None def __init__(self): @@ -5445,7 +5629,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("StartTime", c_int), + ("StartTime", c_int), ] def __init__(self): @@ -5554,7 +5738,7 @@ class tagFamilyArrestOverStateInfo(Structure): Head = tagHead() Count = 0 #(WORD Count) - ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count + ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count data = None def __init__(self): @@ -5704,7 +5888,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("GroupType", c_ubyte), # 分组 1 最近联系人 2 好友 3 仇人 4 黑名单 - ("PlayerID", c_int), + ("PlayerID", c_int), ("SortValue", c_int), #最近联系人和仇人按时间排序 ] @@ -5870,7 +6054,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("GroupType", c_ubyte), # 分组 1 最近联系人 2 好友 3 仇人 4 黑名单 - ("PlayerID", c_int), + ("PlayerID", c_int), ] def __init__(self): @@ -6065,8 +6249,8 @@ class tagGCGroupPlayer(Structure): _pack_ = 1 _fields_ = [ - ("PlayerID", c_int), - ("SortValue", c_int), + ("PlayerID", c_int), + ("SortValue", c_int), ] def __init__(self): @@ -6246,7 +6430,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("PlayerID", c_int), + ("PlayerID", c_int), ("OnlineType", c_ubyte), #0不在线 1在线 2脱机在线 ] @@ -6302,9 +6486,9 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("PlayerID", c_int), - ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__ - ("Value", c_int), + ("PlayerID", c_int), + ("RefreshType", c_ubyte), #参考CDBPlayerRefresh__ + ("Value", c_int), ] def __init__(self): @@ -6359,7 +6543,7 @@ class tagGCVoiceChat(Structure): Head = tagHead() - ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域 + ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域 SrcNameLen = 0 #(BYTE SrcNameLen) SrcName = "" #(String SrcName)//size = SrcNameLen PlayerID = 0 #(DWORD PlayerID) @@ -7875,7 +8059,7 @@ ItemGUID = "" #(char ItemGUID[40]) AuctionType = 0 #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品 AddTime = "" #(char AddTime[19])//上架时间 - BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID + BidderID = 0 #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID BidderPrice = 0 #(DWORD BidderPrice)//最高竞拍价格 BiddingTime = "" #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss data = None @@ -8819,7 +9003,7 @@ class tagGCTeamMemPrepareState(Structure): _pack_ = 1 _fields_ = [ - ("PlayerID", c_int), + ("PlayerID", c_int), ("PrepareState", c_ubyte), # 状态,0-未准备,1-已准备,2-拒绝 ] @@ -9285,9 +9469,9 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("PlayerID", c_int), + ("PlayerID", c_int), ("RefreshType", c_ubyte), #刷新类型,同0418属性类型 - ("Value", c_int), + ("Value", c_int), ] def __init__(self): @@ -9557,8 +9741,8 @@ class tagGCCrossRealmPKBillboardInfo(Structure): Head = tagHead() - ZoneID = 0 #(BYTE ZoneID)// 赛区ID - SeasonID = 0 #(BYTE SeasonID)// 赛季ID + ZoneID = 0 #(BYTE ZoneID)// 赛区ID + SeasonID = 0 #(BYTE SeasonID)// 赛季ID Count = 0 #(WORD Count) PKBillboardList = list() #(vector<tagGCCrossRealmPKBillboardData> PKBillboardList) data = None @@ -10335,7 +10519,7 @@ class tagMCCoinToGoldCount(Structure): _pack_ = 1 _fields_ = [ - ("RecordID", c_ubyte), + ("RecordID", c_ubyte), ("TodayPayCount", c_ushort), # 今日已购买次数 ("TotalPayCount", c_int), # 累计总购买次数 ] @@ -10571,7 +10755,7 @@ BackpackLV = 0 #(BYTE BackpackLV)//背包等级 WarehouseLV = 0 #(BYTE WarehouseLV)//仓库等级 TeamID = 0 #(DWORD TeamID)//队伍ID - UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType + UseGoldType = 0 #(BYTE UseGoldType)//默认用金子/金票 类型为MoneyType UseSilverType = 0 #(BYTE UseSilverType)//默认用的银子/银票 AttackMode = 0 #(BYTE AttackMode)//攻击模式 LastWeekOnlineTime = 0 #(DWORD LastWeekOnlineTime)//上周在线时间 @@ -11564,7 +11748,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("MapID", c_ushort), + ("MapID", c_ushort), ("FuncLineID", c_ushort), #功能线路ID ] @@ -11620,7 +11804,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("MapID", c_int), + ("MapID", c_int), ("FuncLineID", c_ushort), #功能线路ID ] @@ -11728,7 +11912,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Mode", c_ubyte), + ("Mode", c_ubyte), ] def __init__(self): @@ -12025,7 +12209,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("LockState", c_ubyte), + ("LockState", c_ubyte), ] def __init__(self): @@ -12389,7 +12573,8 @@ _fields_ = [ ("ItemID", c_int), #果实物品ID ("EatCnt", c_ushort), #已使用个数 - ("AddItemCnt", c_int), #增幅丹使用个数 + ("ItemAddCnt", c_int), #增幅丹增加上限 + ("ItemBreakCnt", c_int), #增幅丹突破次数 ] def __init__(self): @@ -12404,7 +12589,8 @@ def Clear(self): self.ItemID = 0 self.EatCnt = 0 - self.AddItemCnt = 0 + self.ItemAddCnt = 0 + self.ItemBreakCnt = 0 return def GetLength(self): @@ -12417,12 +12603,14 @@ DumpString = '''// A3 39 玩家属性果实已使用个数信息//tagMCAttrFruitEatCntList: ItemID:%d, EatCnt:%d, - AddItemCnt:%d + ItemAddCnt:%d, + ItemBreakCnt:%d '''\ %( self.ItemID, self.EatCnt, - self.AddItemCnt + self.ItemAddCnt, + self.ItemBreakCnt ) return DumpString @@ -13389,7 +13577,7 @@ Seting = 0 #(DWORD Seting)// 操作数据记录 DecomposeCnt = 0 #(BYTE DecomposeCnt)// 分解件数进度 GetItemLen = 0 #(WORD GetItemLen) - GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...] + GetItemData = "" #(String GetItemData)// 获得物品信息 [[itemID,itemCount,isBind], [或itemID,itemCount,isBind,isAppoint], {或物品信息字典}, ...] data = None def __init__(self): @@ -13477,8 +13665,8 @@ class tagMCEquipPartStar(Structure): _pack_ = 1 _fields_ = [ - ("EquipPackIndex", c_ushort), - ("Star", c_ubyte), + ("EquipPackIndex", c_ushort), + ("Star", c_ubyte), ] def __init__(self): @@ -13622,7 +13810,7 @@ class tagMCEquipPartXLAttr(Structure): - EquipPlace = 0 #(BYTE EquipPlace)// 装备位 + EquipPlace = 0 #(BYTE EquipPlace)// 装备位 XLAttrLV = 0 #(BYTE XLAttrLV)// 洗练等级 XLAttrCnt = 0 #(BYTE XLAttrCnt)// 属性条数 XLAttrList = list() #(vector<tagMCEquipPartXLAttrValue> XLAttrList)// 属性列表,索引0的代表属性1,依次递增 @@ -13757,7 +13945,7 @@ class tagMCFairyAdventuresData(Structure): _pack_ = 1 _fields_ = [ - ("EventID", c_ubyte), + ("EventID", c_ubyte), ("Gear", c_ubyte), #第几档 ("Condition", c_int), #条件 ] @@ -14158,7 +14346,7 @@ class tagMCFBEncourageInfo(Structure): Head = tagHead() - Cnt = 0 #(BYTE Cnt)// + Cnt = 0 #(BYTE Cnt)// InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息 data = None @@ -14948,7 +15136,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Cnt", c_int), + ("Cnt", c_int), ] def __init__(self): @@ -14998,9 +15186,9 @@ class tagMCMagicWeaponInfo(Structure): _pack_ = 1 _fields_ = [ - ("MWID", c_int), - ("LV", c_ubyte), - ("Exp", c_int), + ("MWID", c_int), + ("LV", c_ubyte), + ("Exp", c_int), ("FBPassLV", c_ubyte), #副本关卡 ("IsWear", c_ubyte), #是否佩戴(仅适用王者法宝) ] @@ -15238,11 +15426,11 @@ class tagMCEquipPartPlusLV(Structure): _pack_ = 1 _fields_ = [ - ("PackType", c_ubyte), - ("EquipIndex", c_ubyte), - ("EquipPartStarLV", c_ushort), - ("Proficiency", c_int), - ("EvolveLV", c_ubyte), + ("PackType", c_ubyte), + ("EquipIndex", c_ubyte), + ("EquipPartStarLV", c_ushort), + ("Proficiency", c_int), + ("EvolveLV", c_ubyte), ] def __init__(self): @@ -15537,7 +15725,7 @@ class tagMCNPCAttackCount(Structure): _pack_ = 1 _fields_ = [ - ("NPCID", c_int), + ("NPCID", c_int), ("AttackCount", c_ubyte), #已攻击次数 ] @@ -15829,7 +16017,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Record", c_ubyte), #0-未领取 1-已领取 + ("Record", c_ubyte), #0-未领取 1-已领取 ] def __init__(self): @@ -16082,8 +16270,8 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("PrizeItem", c_int), - ("ItemCount", c_ubyte), + ("PrizeItem", c_int), + ("ItemCount", c_ubyte), ] def __init__(self): @@ -16129,7 +16317,7 @@ class tagMCPlayerOnlinePrizeInfo(Structure): Head = tagHead() RemaindTime = 0 #(DWORD RemaindTime)//产生奖励剩余时间 - HasPrize = 0 #(BYTE HasPrize)//是否可以领取 + HasPrize = 0 #(BYTE HasPrize)//是否可以领取 PrizeType = 0 #(BYTE PrizeType)//在线奖励类型 PrizeCnt = 0 #(BYTE PrizeCnt)//在线奖励类型 PrizeInfo = list() #(vector<tagMCOnlinePrizeItem> PrizeInfo)//在线奖励类型 @@ -16276,7 +16464,7 @@ _pack_ = 1 _fields_ = [ ("AlchemyID", c_int), # 丹 ID - ("StartTime", c_int), # 开始炼的时间 + ("StartTime", c_int), # 开始炼的时间 ] def __init__(self): @@ -16955,7 +17143,7 @@ # A3 BC 通知装备位孔位宝石ID #tagMCStoneInfo class tagMCStoneMsg(Structure): - EquipPlace = 0 #(BYTE EquipPlace)// 装备位 + EquipPlace = 0 #(BYTE EquipPlace)// 装备位 MaxStoneCount = 0 #(BYTE MaxStoneCount)// 最大孔数 StoneInfo = list() #(vector<DWORD> StoneInfo)// 孔内宝石信息 StoneBind = list() #(vector<BYTE> StoneBind)// 孔内宝石是否绑定 @@ -17943,8 +18131,8 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("PassLV", c_int), - ("YesterDayPassLV", c_int), + ("PassLV", c_int), + ("YesterDayPassLV", c_int), ] def __init__(self): @@ -18926,7 +19114,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("Exp", c_int), # 当前VIP等级经验 - ("VIPLV", c_int), #vip等级 + ("VIPLV", c_int), #vip等级 ] def __init__(self): @@ -19252,8 +19440,8 @@ class tagMCCollectAwardItem(Structure): _pack_ = 1 _fields_ = [ - ("ItemID", c_int), - ("Count", c_ubyte), + ("ItemID", c_int), + ("Count", c_ubyte), ("IsAuctionItem", c_ubyte), #是否拍品 ] @@ -19371,11 +19559,11 @@ class tagMCDynamicBarrier(Structure): _pack_ = 1 _fields_ = [ - ("APosX", c_ushort), - ("APosY", c_ushort), - ("BPosX", c_ushort), - ("BPosY", c_ushort), - ("Angle", c_ushort), + ("APosX", c_ushort), + ("APosY", c_ushort), + ("BPosX", c_ushort), + ("BPosY", c_ushort), + ("Angle", c_ushort), ] def __init__(self): @@ -19978,8 +20166,8 @@ class tagMCNPCCntInfo(Structure): _pack_ = 1 _fields_ = [ - ("NPCID", c_int), - ("Cnt", c_int), + ("NPCID", c_int), + ("Cnt", c_int), ] def __init__(self): @@ -20153,13 +20341,13 @@ class tagMCNPCInfo(Structure): _pack_ = 1 _fields_ = [ - ("ObjID", c_int), - ("NPCID", c_int), - ("NPCHP", c_int), - ("MaxHP", c_int), + ("ObjID", c_int), + ("NPCID", c_int), + ("NPCHP", c_int), + ("MaxHP", c_int), ("IsActive", c_ubyte), #这个NPC是否活着 - ("PosX", c_ushort), - ("PosY", c_ushort), + ("PosX", c_ushort), + ("PosY", c_ushort), ("RefreshSecond", c_int), # 剩余多少秒刷新 ] @@ -20301,9 +20489,9 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("NPCID", c_int), - ("PosX", c_ushort), - ("PosY", c_ushort), + ("NPCID", c_int), + ("PosX", c_ushort), + ("PosY", c_ushort), ] def __init__(self): @@ -20361,7 +20549,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("NPCID", c_int), + ("NPCID", c_int), ] def __init__(self): @@ -20413,7 +20601,7 @@ PlayerID = 0 #(DWORD PlayerID)//玩家ID EquipClassLV = 0 #(BYTE EquipClassLV) ItemDataSize = 0 #(WORD ItemDataSize) - ItemData = "" #(String ItemData)//物品记录 + ItemData = "" #(String ItemData)//物品记录 data = None def __init__(self): @@ -20595,9 +20783,9 @@ class tagMCRunTaskAwardRecord(Structure): _pack_ = 1 _fields_ = [ - ("Type", c_ubyte), - ("Num", c_int), - ("AwardState", c_ubyte), + ("Type", c_ubyte), + ("Num", c_int), + ("AwardState", c_ubyte), ] def __init__(self): @@ -20712,7 +20900,7 @@ ItemDataSize = 0 #(DWORD ItemDataSize) ItemData = "" #(String ItemData)//物品记录 PlusDataSize = 0 #(DWORD PlusDataSize) - PlusData = "" #(String PlusData)//扩展记录 + PlusData = "" #(String PlusData)//扩展记录 data = None def __init__(self): @@ -20808,7 +20996,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("GuideID", c_ushort), + ("GuideID", c_ushort), ] def __init__(self): @@ -20858,8 +21046,8 @@ class tagRefreshType(Structure): _pack_ = 1 _fields_ = [ - ("RefreshType", c_ubyte), - ("Value", c_int), + ("RefreshType", c_ubyte), + ("Value", c_int), ] def __init__(self): @@ -21047,7 +21235,7 @@ class tagMCItemDayUseCnt(Structure): _pack_ = 1 _fields_ = [ - ("ItemID", c_int), + ("ItemID", c_int), ("UseCnt", c_ushort), # 今日已使用次数 ] @@ -21157,7 +21345,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("MakeType", c_ubyte), #类型 TMakeItemType + ("MakeType", c_ubyte), #类型 TMakeItemType ("Result", c_ubyte), #是否成功 ("MakeItemID", c_int), #合成的物品ID ] @@ -28358,87 +28546,6 @@ #------------------------------------------------------ -# B2 14 自定义副本奖励信息 #tagMCCuntomFBPrizeInfo - -class tagMCCuntomFBPrizeInfo(Structure): - Head = tagHead() - MapID = 0 #(DWORD MapID) - FuncLineID = 0 #(WORD FuncLineID) - PrizeItemCount = 0 #(BYTE PrizeItemCount) - PrizeItemIDList = list() #(vector<DWORD> PrizeItemIDList) - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xB2 - self.Head.SubCmd = 0x14 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.PrizeItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.PrizeItemCount): - value,_pos=CommFunc.ReadDWORD(_lpData,_pos) - self.PrizeItemIDList.append(value) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xB2 - self.Head.SubCmd = 0x14 - self.MapID = 0 - self.FuncLineID = 0 - self.PrizeItemCount = 0 - self.PrizeItemIDList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 4 - length += 2 - length += 1 - length += 4 * self.PrizeItemCount - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteDWORD(data, self.MapID) - data = CommFunc.WriteWORD(data, self.FuncLineID) - data = CommFunc.WriteBYTE(data, self.PrizeItemCount) - for i in range(self.PrizeItemCount): - data = CommFunc.WriteDWORD(data, self.PrizeItemIDList[i]) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - MapID:%d, - FuncLineID:%d, - PrizeItemCount:%d, - PrizeItemIDList:%s - '''\ - %( - self.Head.OutputString(), - self.MapID, - self.FuncLineID, - self.PrizeItemCount, - "..." - ) - return DumpString - - -m_NAtagMCCuntomFBPrizeInfo=tagMCCuntomFBPrizeInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCuntomFBPrizeInfo.Head.Cmd,m_NAtagMCCuntomFBPrizeInfo.Head.SubCmd))] = m_NAtagMCCuntomFBPrizeInfo - - -#------------------------------------------------------ # B2 10 仙盟联赛玩家排名信息 #tagMCFamilyWarBillboard class tagMCFamilyWarPlayer(Structure): @@ -29625,6 +29732,66 @@ #------------------------------------------------------ +# B2 16 开始自定义场景结果 #tagMCStartCustomSceneResult + +class tagMCStartCustomSceneResult(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("MapID", c_int), + ("FuncLineID", c_ushort), + ("Result", c_ubyte), #是否允许 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB2 + self.SubCmd = 0x16 + 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 = 0xB2 + self.SubCmd = 0x16 + self.MapID = 0 + self.FuncLineID = 0 + self.Result = 0 + return + + def GetLength(self): + return sizeof(tagMCStartCustomSceneResult) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 16 开始自定义场景结果 //tagMCStartCustomSceneResult: + Cmd:%s, + SubCmd:%s, + MapID:%d, + FuncLineID:%d, + Result:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.MapID, + self.FuncLineID, + self.Result + ) + return DumpString + + +m_NAtagMCStartCustomSceneResult=tagMCStartCustomSceneResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCStartCustomSceneResult.Cmd,m_NAtagMCStartCustomSceneResult.SubCmd))] = m_NAtagMCStartCustomSceneResult + + +#------------------------------------------------------ #B2 02 推送提醒设置通知 #tagMCPushNotificationsSetting class tagMCPushNotificationsSetting(Structure): -- Gitblit v1.8.0