From 88effa2034b78c46426b2e7f7924a9493da9af4f Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期一, 03 十二月 2018 16:22:15 +0800 Subject: [PATCH] 5161 子 【1.3.100】修复在仙盟任务副本中退出仙盟还能继续任务的BUG --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 292 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 288 insertions(+), 4 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 0c0f4c9..431d95b 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -24481,6 +24481,119 @@ #------------------------------------------------------ +# B2 08 获得仙缘币信息 #tagMCAddXianyuanCoinMsg + +class tagMCAddXianyuanCoinMsg(Structure): + Head = tagHead() + MapID = 0 #(DWORD MapID) + FuncLineID = 0 #(BYTE FuncLineID) + Relation = 0 #(BYTE Relation)// 当时的关系:0-无,1-好友,2-盟友 + RelationCoinAdd = 0 #(BYTE RelationCoinAdd)// 社交关系总加成 + XianyuanCoinAdd = 0 #(WORD XianyuanCoinAdd)// 实际增加的仙缘币 + Reason = 0 #(BYTE Reason)//仙缘币为0时的原因:1-助战次数上限;2-每日获得上限 + CallPlayerID = 0 #(DWORD CallPlayerID)// 助战的玩家ID,有值时代表真实助战,没有值时为自己打的 + NameLen = 0 #(BYTE NameLen) + CallPlayerName = "" #(String CallPlayerName)// 助战的玩家名,size = NameLen + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x08 + 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.ReadBYTE(_lpData, _pos) + self.Relation,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RelationCoinAdd,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.XianyuanCoinAdd,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Reason,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CallPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CallPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x08 + self.MapID = 0 + self.FuncLineID = 0 + self.Relation = 0 + self.RelationCoinAdd = 0 + self.XianyuanCoinAdd = 0 + self.Reason = 0 + self.CallPlayerID = 0 + self.NameLen = 0 + self.CallPlayerName = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += 1 + length += 1 + length += 2 + length += 1 + length += 4 + length += 1 + length += len(self.CallPlayerName) + + 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.FuncLineID) + data = CommFunc.WriteBYTE(data, self.Relation) + data = CommFunc.WriteBYTE(data, self.RelationCoinAdd) + data = CommFunc.WriteWORD(data, self.XianyuanCoinAdd) + data = CommFunc.WriteBYTE(data, self.Reason) + data = CommFunc.WriteDWORD(data, self.CallPlayerID) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.CallPlayerName) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + MapID:%d, + FuncLineID:%d, + Relation:%d, + RelationCoinAdd:%d, + XianyuanCoinAdd:%d, + Reason:%d, + CallPlayerID:%d, + NameLen:%d, + CallPlayerName:%s + '''\ + %( + self.Head.OutputString(), + self.MapID, + self.FuncLineID, + self.Relation, + self.RelationCoinAdd, + self.XianyuanCoinAdd, + self.Reason, + self.CallPlayerID, + self.NameLen, + self.CallPlayerName + ) + return DumpString + + +m_NAtagMCAddXianyuanCoinMsg=tagMCAddXianyuanCoinMsg() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAddXianyuanCoinMsg.Head.Cmd,m_NAtagMCAddXianyuanCoinMsg.Head.SubCmd))] = m_NAtagMCAddXianyuanCoinMsg + + +#------------------------------------------------------ # B2 10 仙盟联赛玩家排名信息 #tagMCFamilyWarBillboard class tagMCFamilyWarPlayer(Structure): @@ -24838,6 +24951,7 @@ ("SubCmd", c_ubyte), ("ObjID", c_int), # 助战实例ID ("PlayerID", c_int), # 助战镜像ID,大于1小于100代表机器人,如果是机器人前端按顺序自己记录对应实例ID代表已召唤 + ("Job", c_ubyte), # 职业 ] def __init__(self): @@ -24856,6 +24970,7 @@ self.SubCmd = 0x06 self.ObjID = 0 self.PlayerID = 0 + self.Job = 0 return def GetLength(self): @@ -24869,13 +24984,15 @@ Cmd:%s, SubCmd:%s, ObjID:%d, - PlayerID:%d + PlayerID:%d, + Job:%d '''\ %( self.Cmd, self.SubCmd, self.ObjID, - self.PlayerID + self.PlayerID, + self.Job ) return DumpString @@ -24893,6 +25010,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("IsOK", c_ubyte), #是否成功 + ("IsLogin", c_ubyte), #是否登录同步已登记 ] def __init__(self): @@ -24910,6 +25028,7 @@ self.Cmd = 0xB2 self.SubCmd = 0x05 self.IsOK = 0 + self.IsLogin = 0 return def GetLength(self): @@ -24922,12 +25041,14 @@ DumpString = '''// B2 05 助战登记结果 //tagMCHelpBattleCheckInResult: Cmd:%s, SubCmd:%s, - IsOK:%d + IsOK:%d, + IsLogin:%d '''\ %( self.Cmd, self.SubCmd, - self.IsOK + self.IsOK, + self.IsLogin ) return DumpString @@ -25114,6 +25235,169 @@ #------------------------------------------------------ +# B2 11 助战记录列表 #tagMCHelpBattleRecordList + +class tagMCHelpBattleRecord(Structure): + CallPlayerID = 0 #(DWORD CallPlayerID)// 邀请助战的玩家ID + NameLen = 0 #(BYTE NameLen) + CallPlayerName = "" #(String CallPlayerName)// 邀请助战的玩家名,size = NameLen + MapID = 0 #(DWORD MapID) + FuncLineID = 0 #(BYTE FuncLineID) + XianyuanCoinAdd = 0 #(WORD XianyuanCoinAdd)// 增加的仙缘币,0代表已达上限 + Relation = 0 #(BYTE Relation)// 当时的关系:0-无,1-好友,2-盟友 + VIPLV = 0 #(BYTE VIPLV)// 当时的VIP等级 + HelpTime = "" #(char HelpTime[19])// 助战时间yyyy-MM-dd hh:mm:ss + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.CallPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CallPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FuncLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.XianyuanCoinAdd,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Relation,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.VIPLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.HelpTime,_pos = CommFunc.ReadString(_lpData, _pos,19) + return _pos + + def Clear(self): + self.CallPlayerID = 0 + self.NameLen = 0 + self.CallPlayerName = "" + self.MapID = 0 + self.FuncLineID = 0 + self.XianyuanCoinAdd = 0 + self.Relation = 0 + self.VIPLV = 0 + self.HelpTime = "" + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += len(self.CallPlayerName) + length += 4 + length += 1 + length += 2 + length += 1 + length += 1 + length += 19 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.CallPlayerID) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.CallPlayerName) + data = CommFunc.WriteDWORD(data, self.MapID) + data = CommFunc.WriteBYTE(data, self.FuncLineID) + data = CommFunc.WriteWORD(data, self.XianyuanCoinAdd) + data = CommFunc.WriteBYTE(data, self.Relation) + data = CommFunc.WriteBYTE(data, self.VIPLV) + data = CommFunc.WriteString(data, 19, self.HelpTime) + return data + + def OutputString(self): + DumpString = ''' + CallPlayerID:%d, + NameLen:%d, + CallPlayerName:%s, + MapID:%d, + FuncLineID:%d, + XianyuanCoinAdd:%d, + Relation:%d, + VIPLV:%d, + HelpTime:%s + '''\ + %( + self.CallPlayerID, + self.NameLen, + self.CallPlayerName, + self.MapID, + self.FuncLineID, + self.XianyuanCoinAdd, + self.Relation, + self.VIPLV, + self.HelpTime + ) + return DumpString + + +class tagMCHelpBattleRecordList(Structure): + Head = tagHead() + RecordCount = 0 #(WORD RecordCount)// 记录数 + RecordList = list() #(vector<tagMCHelpBattleRecord> RecordList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x11 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.RecordCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.RecordCount): + temRecordList = tagMCHelpBattleRecord() + _pos = temRecordList.ReadData(_lpData, _pos) + self.RecordList.append(temRecordList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x11 + self.RecordCount = 0 + self.RecordList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + for i in range(self.RecordCount): + length += self.RecordList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.RecordCount) + for i in range(self.RecordCount): + data = CommFunc.WriteString(data, self.RecordList[i].GetLength(), self.RecordList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + RecordCount:%d, + RecordList:%s + '''\ + %( + self.Head.OutputString(), + self.RecordCount, + "..." + ) + return DumpString + + +m_NAtagMCHelpBattleRecordList=tagMCHelpBattleRecordList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHelpBattleRecordList.Head.Cmd,m_NAtagMCHelpBattleRecordList.Head.SubCmd))] = m_NAtagMCHelpBattleRecordList + + +#------------------------------------------------------ # B2 04 冰晶矿脉信息通知 #tagMCIceLodeInfo class tagMCIceLodeInfo(Structure): -- Gitblit v1.8.0