From e75c4e9dda0ef8c05f84e9cdd5cc7f14bd14d536 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期三, 22 八月 2018 16:17:46 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 371 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 343 insertions(+), 28 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index c126dd8..610934e 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -2667,6 +2667,114 @@ #------------------------------------------------------ +# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime + +class tagDogzTimeInfoObj(Structure): + _pack_ = 1 + _fields_ = [ + ("NPCID", c_int), # npcid + ("RefreshSecond", c_int), # 刷新倒计时, 秒 + ] + + 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.NPCID = 0 + self.RefreshSecond = 0 + return + + def GetLength(self): + return sizeof(tagDogzTimeInfoObj) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime: + NPCID:%d, + RefreshSecond:%d + '''\ + %( + self.NPCID, + self.RefreshSecond + ) + return DumpString + + +class tagGCDogzNPCRefreshTime(Structure): + Head = tagHead() + Cnt = 0 #(BYTE Cnt)//信息个数 + InfoList = list() #(vector<tagDogzTimeInfoObj> InfoList)//信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x04 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Cnt): + temInfoList = tagDogzTimeInfoObj() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x04 + self.Cnt = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Cnt): + length += self.InfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Cnt) + for i in range(self.Cnt): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Cnt:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Cnt, + "..." + ) + return DumpString + + +m_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime + + +#------------------------------------------------------ # A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo class tagGCFriendSendEnergyInfo(Structure): @@ -10662,6 +10770,114 @@ #------------------------------------------------------ +# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState + +class tagMCDogzHelpbattleState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("DogzID", c_ubyte), # 神兽ID + ("BatteState", c_ubyte), #是否已助战, 0否1是 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0xC1 + 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 = 0xA3 + self.SubCmd = 0xC1 + self.DogzID = 0 + self.BatteState = 0 + return + + def GetLength(self): + return sizeof(tagMCDogzHelpbattleState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState: + Cmd:%s, + SubCmd:%s, + DogzID:%d, + BatteState:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.DogzID, + self.BatteState + ) + return DumpString + + +m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState + + +#------------------------------------------------------ +# A3 C0 神兽信息 #tagMCDogzInfo + +class tagMCDogzInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("BuyHelpbattleCount", c_ubyte), #额外购买的助战数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA3 + self.SubCmd = 0xC0 + 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 = 0xA3 + self.SubCmd = 0xC0 + self.BuyHelpbattleCount = 0 + return + + def GetLength(self): + return sizeof(tagMCDogzInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo: + Cmd:%s, + SubCmd:%s, + BuyHelpbattleCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.BuyHelpbattleCount + ) + return DumpString + + +m_NAtagMCDogzInfo=tagMCDogzInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo + + +#------------------------------------------------------ # A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo class tagMCEquipDecomposeInfo(Structure): @@ -12629,6 +12845,7 @@ _pack_ = 1 _fields_ = [ ("PriID", c_int), # 特权ID + ("State", c_ubyte), #激活状态 ("CurValue", c_int), #当前总进度 ("GotValue", c_int), #已领取进度 ("ItemAwardState", c_ubyte), #物品奖励是否已领取 @@ -12645,6 +12862,7 @@ def Clear(self): self.PriID = 0 + self.State = 0 self.CurValue = 0 self.GotValue = 0 self.ItemAwardState = 0 @@ -12659,12 +12877,14 @@ def OutputString(self): DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo: PriID:%d, + State:%d, CurValue:%d, GotValue:%d, ItemAwardState:%d '''\ %( self.PriID, + self.State, self.CurValue, self.GotValue, self.ItemAwardState @@ -12744,16 +12964,12 @@ class tagMCNPCIDCollectionCnt(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), ("NPCID", c_int), #NPCID ("CollectionCnt", c_ubyte), #已采集次数 ] def __init__(self): self.Clear() - self.Cmd = 0xA3 - self.SubCmd = 0x26 return def ReadData(self, stringData, _pos=0, _len=0): @@ -12762,8 +12978,6 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA3 - self.SubCmd = 0x26 self.NPCID = 0 self.CollectionCnt = 0 return @@ -12776,14 +12990,10 @@ def OutputString(self): DumpString = '''// A3 26 NPCID已采集次数信息 //tagMCNPCIDCollectionCntInfo: - Cmd:%s, - SubCmd:%s, NPCID:%d, CollectionCnt:%d '''\ %( - self.Cmd, - self.SubCmd, self.NPCID, self.CollectionCnt ) @@ -16314,6 +16524,121 @@ #------------------------------------------------------ +# A7 14 通知查询的NPC数量 #tagMCNPCCntList + +class tagMCNPCCntInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("NPCID", c_int), + ("Cnt", c_int), + ] + + 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.NPCID = 0 + self.Cnt = 0 + return + + def GetLength(self): + return sizeof(tagMCNPCCntInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A7 14 通知查询的NPC数量 //tagMCNPCCntList: + NPCID:%d, + Cnt:%d + '''\ + %( + self.NPCID, + self.Cnt + ) + return DumpString + + +class tagMCNPCCntList(Structure): + Head = tagHead() + MapID = 0 #(DWORD MapID) + NPCInfoCnt = 0 #(BYTE NPCInfoCnt) + NPCInfoList = list() #(vector<tagMCNPCCntInfo> NPCInfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA7 + 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.NPCInfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NPCInfoCnt): + temNPCInfoList = tagMCNPCCntInfo() + _pos = temNPCInfoList.ReadData(_lpData, _pos) + self.NPCInfoList.append(temNPCInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x14 + self.MapID = 0 + self.NPCInfoCnt = 0 + self.NPCInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + for i in range(self.NPCInfoCnt): + length += self.NPCInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteBYTE(data, self.NPCInfoCnt) + for i in range(self.NPCInfoCnt): + data = CommFunc.WriteString(data, self.NPCInfoList[i].GetLength(), self.NPCInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + MapID:%d, + NPCInfoCnt:%d, + NPCInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.MapID, + self.NPCInfoCnt, + "..." + ) + return DumpString + + +m_NAtagMCNPCCntList=tagMCNPCCntList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCCntList.Head.Cmd,m_NAtagMCNPCCntList.Head.SubCmd))] = m_NAtagMCNPCCntList + + +#------------------------------------------------------ #A7 01 通知选中对象 # tagMCNotifySelectObj class tagMCNotifySelectObj(Structure): @@ -16379,8 +16704,6 @@ class tagMCNPCInfo(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), ("ObjID", c_int), ("NPCID", c_int), ("NPCHP", c_int), @@ -16393,8 +16716,6 @@ def __init__(self): self.Clear() - self.Cmd = 0xA7 - self.SubCmd = 0x06 return def ReadData(self, stringData, _pos=0, _len=0): @@ -16403,8 +16724,6 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA7 - self.SubCmd = 0x06 self.ObjID = 0 self.NPCID = 0 self.NPCHP = 0 @@ -16423,8 +16742,6 @@ def OutputString(self): DumpString = '''// A7 06 通知查询的NPC信息 //tagMCNPCInfoList: - Cmd:%s, - SubCmd:%s, ObjID:%d, NPCID:%d, NPCHP:%d, @@ -16435,8 +16752,6 @@ RefreshSecond:%d '''\ %( - self.Cmd, - self.SubCmd, self.ObjID, self.NPCID, self.NPCHP, @@ -18740,6 +19055,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("FirstGoldRewardState", c_ubyte), #首充奖励是否已领奖 + ("FirstGoldTry", c_ubyte), #首充试用状态0-不可试用 1-可试用 2-已试用 ] def __init__(self): @@ -18757,6 +19073,7 @@ self.Cmd = 0xAA self.SubCmd = 0x02 self.FirstGoldRewardState = 0 + self.FirstGoldTry = 0 return def GetLength(self): @@ -18769,12 +19086,14 @@ DumpString = '''// AA 02 首充信息 //tagMCFirstGoldInfo: Cmd:%s, SubCmd:%s, - FirstGoldRewardState:%d + FirstGoldRewardState:%d, + FirstGoldTry:%d '''\ %( self.Cmd, self.SubCmd, - self.FirstGoldRewardState + self.FirstGoldRewardState, + self.FirstGoldTry ) return DumpString @@ -18792,7 +19111,6 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("FirstGoldRemainTime", c_int), #首充提示剩余时间 - ("FirstGoldTry", c_ubyte), #首充试用状态0-不可试用 1-可试用 2-已试用 ] def __init__(self): @@ -18810,7 +19128,6 @@ self.Cmd = 0xAA self.SubCmd = 0x08 self.FirstGoldRemainTime = 0 - self.FirstGoldTry = 0 return def GetLength(self): @@ -18823,14 +19140,12 @@ DumpString = '''// AA 08 首充提示剩余时间 //tagMCFirstGoldTime: Cmd:%s, SubCmd:%s, - FirstGoldRemainTime:%d, - FirstGoldTry:%d + FirstGoldRemainTime:%d '''\ %( self.Cmd, self.SubCmd, - self.FirstGoldRemainTime, - self.FirstGoldTry + self.FirstGoldRemainTime ) return DumpString -- Gitblit v1.8.0