From a9e5ae2ed13bffe82038291776ffa68f65becce6 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期一, 10 六月 2019 10:57:18 +0800 Subject: [PATCH] 7145 【2.0】【后端】仙盟新增兑换活跃令功能 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 224 ++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 138 insertions(+), 86 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 2c62392..53f7a9d 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): @@ -3376,8 +3376,8 @@ class tagGCNotifyEquipClassEquip(Structure): _pack_ = 1 _fields_ = [ - ("ItemID", c_int), - ("Star", c_ubyte), + ("ItemID", c_int), + ("Star", c_ubyte), ] def __init__(self): @@ -3635,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)//排序依赖的值,比如,等级 @@ -3947,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): @@ -4188,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): @@ -5629,7 +5629,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("StartTime", c_int), + ("StartTime", c_int), ] def __init__(self): @@ -5738,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): @@ -5888,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), #最近联系人和仇人按时间排序 ] @@ -6054,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): @@ -6249,8 +6249,8 @@ class tagGCGroupPlayer(Structure): _pack_ = 1 _fields_ = [ - ("PlayerID", c_int), - ("SortValue", c_int), + ("PlayerID", c_int), + ("SortValue", c_int), ] def __init__(self): @@ -6430,7 +6430,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("PlayerID", c_int), + ("PlayerID", c_int), ("OnlineType", c_ubyte), #0不在线 1在线 2脱机在线 ] @@ -6486,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): @@ -6543,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) @@ -8059,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 @@ -9003,7 +9003,7 @@ class tagGCTeamMemPrepareState(Structure): _pack_ = 1 _fields_ = [ - ("PlayerID", c_int), + ("PlayerID", c_int), ("PrepareState", c_ubyte), # 状态,0-未准备,1-已准备,2-拒绝 ] @@ -9469,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): @@ -9741,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 @@ -10519,7 +10519,7 @@ class tagMCCoinToGoldCount(Structure): _pack_ = 1 _fields_ = [ - ("RecordID", c_ubyte), + ("RecordID", c_ubyte), ("TodayPayCount", c_ushort), # 今日已购买次数 ("TotalPayCount", c_int), # 累计总购买次数 ] @@ -10755,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)//上周在线时间 @@ -11748,7 +11748,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("MapID", c_ushort), + ("MapID", c_ushort), ("FuncLineID", c_ushort), #功能线路ID ] @@ -11804,7 +11804,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("MapID", c_int), + ("MapID", c_int), ("FuncLineID", c_ushort), #功能线路ID ] @@ -11912,7 +11912,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Mode", c_ubyte), + ("Mode", c_ubyte), ] def __init__(self): @@ -12209,7 +12209,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("LockState", c_ubyte), + ("LockState", c_ubyte), ] def __init__(self): @@ -13577,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): @@ -13665,8 +13665,8 @@ class tagMCEquipPartStar(Structure): _pack_ = 1 _fields_ = [ - ("EquipPackIndex", c_ushort), - ("Star", c_ubyte), + ("EquipPackIndex", c_ushort), + ("Star", c_ubyte), ] def __init__(self): @@ -13810,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,依次递增 @@ -13945,7 +13945,7 @@ class tagMCFairyAdventuresData(Structure): _pack_ = 1 _fields_ = [ - ("EventID", c_ubyte), + ("EventID", c_ubyte), ("Gear", c_ubyte), #第几档 ("Condition", c_int), #条件 ] @@ -14346,7 +14346,7 @@ class tagMCFBEncourageInfo(Structure): Head = tagHead() - Cnt = 0 #(BYTE Cnt)// + Cnt = 0 #(BYTE Cnt)// InfoList = list() #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息 data = None @@ -15136,7 +15136,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Cnt", c_int), + ("Cnt", c_int), ] def __init__(self): @@ -15186,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), #是否佩戴(仅适用王者法宝) ] @@ -15426,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): @@ -15725,7 +15725,7 @@ class tagMCNPCAttackCount(Structure): _pack_ = 1 _fields_ = [ - ("NPCID", c_int), + ("NPCID", c_int), ("AttackCount", c_ubyte), #已攻击次数 ] @@ -16017,7 +16017,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("Record", c_ubyte), #0-未领取 1-已领取 + ("Record", c_ubyte), #0-未领取 1-已领取 ] def __init__(self): @@ -16270,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): @@ -16317,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)//在线奖励类型 @@ -16464,7 +16464,7 @@ _pack_ = 1 _fields_ = [ ("AlchemyID", c_int), # 丹 ID - ("StartTime", c_int), # 开始炼的时间 + ("StartTime", c_int), # 开始炼的时间 ("AlchemyTimes", c_ushort), # 炼的次数 ] @@ -17147,7 +17147,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)// 孔内宝石是否绑定 @@ -18135,8 +18135,8 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("PassLV", c_int), - ("YesterDayPassLV", c_int), + ("PassLV", c_int), + ("YesterDayPassLV", c_int), ] def __init__(self): @@ -18543,6 +18543,58 @@ m_NAtagMCChampionFamilyDailyReward=tagMCChampionFamilyDailyReward() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChampionFamilyDailyReward.Cmd,m_NAtagMCChampionFamilyDailyReward.SubCmd))] = m_NAtagMCChampionFamilyDailyReward + + +#------------------------------------------------------ +# A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult + +class tagMCFamilyActivityExchangeResult(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Point", c_int), # 活跃令 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x02 + 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 = 0xA5 + self.SubCmd = 0x02 + self.Point = 0 + return + + def GetLength(self): + return sizeof(tagMCFamilyActivityExchangeResult) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 02 家族活跃令兑换结果 //tagMCFamilyActivityExchangeResult: + Cmd:%s, + SubCmd:%s, + Point:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Point + ) + return DumpString + + +m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult #------------------------------------------------------ @@ -19118,7 +19170,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("Exp", c_int), # 当前VIP等级经验 - ("VIPLV", c_int), #vip等级 + ("VIPLV", c_int), #vip等级 ] def __init__(self): @@ -19444,8 +19496,8 @@ class tagMCCollectAwardItem(Structure): _pack_ = 1 _fields_ = [ - ("ItemID", c_int), - ("Count", c_ubyte), + ("ItemID", c_int), + ("Count", c_ubyte), ("IsAuctionItem", c_ubyte), #是否拍品 ] @@ -19563,11 +19615,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): @@ -20170,8 +20222,8 @@ class tagMCNPCCntInfo(Structure): _pack_ = 1 _fields_ = [ - ("NPCID", c_int), - ("Cnt", c_int), + ("NPCID", c_int), + ("Cnt", c_int), ] def __init__(self): @@ -20345,13 +20397,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), # 剩余多少秒刷新 ] @@ -20493,9 +20545,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): @@ -20553,7 +20605,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("NPCID", c_int), + ("NPCID", c_int), ] def __init__(self): @@ -20605,7 +20657,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): @@ -20787,9 +20839,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): @@ -20904,7 +20956,7 @@ ItemDataSize = 0 #(DWORD ItemDataSize) ItemData = "" #(String ItemData)//物品记录 PlusDataSize = 0 #(DWORD PlusDataSize) - PlusData = "" #(String PlusData)//扩展记录 + PlusData = "" #(String PlusData)//扩展记录 data = None def __init__(self): @@ -21000,7 +21052,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("GuideID", c_ushort), + ("GuideID", c_ushort), ] def __init__(self): @@ -21050,8 +21102,8 @@ class tagRefreshType(Structure): _pack_ = 1 _fields_ = [ - ("RefreshType", c_ubyte), - ("Value", c_int), + ("RefreshType", c_ubyte), + ("Value", c_int), ] def __init__(self): @@ -21239,7 +21291,7 @@ class tagMCItemDayUseCnt(Structure): _pack_ = 1 _fields_ = [ - ("ItemID", c_int), + ("ItemID", c_int), ("UseCnt", c_ushort), # 今日已使用次数 ] @@ -21349,7 +21401,7 @@ _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), - ("MakeType", c_ubyte), #类型 TMakeItemType + ("MakeType", c_ubyte), #类型 TMakeItemType ("Result", c_ubyte), #是否成功 ("MakeItemID", c_int), #合成的物品ID ] -- Gitblit v1.8.0