| | |
| | | list LVUPNeedItemInfo; //升级所需物品 [[物品ID,个数], ...]
|
| | | };
|
| | |
|
| | | //神通表
|
| | |
|
| | | struct tagShentong
|
| | | {
|
| | | BYTE _ShentongID; //神通ID
|
| | | WORD NeedGubaoID; //解锁所需古宝ID
|
| | | };
|
| | |
|
| | | //神通升级表
|
| | |
|
| | | struct tagShentongLV
|
| | | {
|
| | | BYTE _ShentongID; //神通ID
|
| | | BYTE _ShentongClassLV; //神通阶级
|
| | | BYTE _ShentongLV; //神通等级
|
| | | list LVLightNeedItem; //点亮该级所需物品 [[物品ID,个数], ...]
|
| | | list LVAttrTypeList; //该级属性类型列表
|
| | | list LVAttrValueList; //该级属性值列表
|
| | | DWORD LVSkillID; //该级职业通用技能ID
|
| | | DWORD FightPowerEx; //附加战力
|
| | | };
|
| | |
|
| | | //玩家等级表
|
| | |
|
| | | struct PlayerLV
|
| | |
| | | PacketSubCMD_3=0x18
|
| | | PacketCallFunc_3=OnGubaoLVUp
|
| | |
|
| | | ;神通
|
| | | [PlayerShentong]
|
| | | ScriptName = Player\PlayerShentong.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 2
|
| | |
|
| | | PacketCMD_1=0xB2
|
| | | PacketSubCMD_1=0x19
|
| | | PacketCallFunc_1=OnShentongLVUp
|
| | |
|
| | | PacketCMD_2=0xB2
|
| | | PacketSubCMD_2=0x20
|
| | | PacketCallFunc_2=OnShentongSkillSet
|
| | |
|
| | | ;主线战斗
|
| | | [GameLogic_MainLevel]
|
| | | ScriptName = GameWorldLogic\FBProcess\GameLogic_MainLevel.py
|
| | |
| | | #古宝
|
| | | Def_PDict_GubaoInfo = "Gubao_%s" # 古宝信息,参数(古宝ID),特殊效果层*100000 + 等级*100 + 星级
|
| | |
|
| | | #神通
|
| | | Def_PDict_ShentongLVInfo = "ShentongLVInfo_%s" # 神通等级信息,参数(神通ID),阶级*100+等级
|
| | | Def_PDict_ShentongSkillID = "ShentongSkillID_%s" # 神通出战技能ID,参数(编号)
|
| | |
|
| | | #自定义奖励
|
| | | Def_PDict_CustomAwardCanGet = "CustomAwardCanGet_%s" # 是否可领取,参数(key编号)
|
| | | Def_PDict_CustomAwardGetState = "CustomAwardGetState_%s" # 是否已领取,参数(key编号)
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 19 神通升级 #tagCMShentongLVUp
|
| | |
|
| | | class tagCMShentongLVUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ShentongID", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB2
|
| | | self.SubCmd = 0x19
|
| | | 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 = 0x19
|
| | | self.ShentongID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMShentongLVUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B2 19 神通升级 //tagCMShentongLVUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ShentongID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ShentongID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMShentongLVUp=tagCMShentongLVUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongLVUp.Cmd,m_NAtagCMShentongLVUp.SubCmd))] = m_NAtagCMShentongLVUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 20 神通技能设置 #tagCMShentongSkillSet
|
| | |
|
| | | class tagCMShentongSkillSet(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | SkillIDList = list() #(vector<DWORD> SkillIDList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x20
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.SkillIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB2
|
| | | self.Head.SubCmd = 0x20
|
| | | self.Count = 0
|
| | | self.SkillIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.Count
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | SkillIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMShentongSkillSet=tagCMShentongSkillSet()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMShentongSkillSet.Head.Cmd,m_NAtagCMShentongSkillSet.Head.SubCmd))] = m_NAtagCMShentongSkillSet
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B2 23 仙树升级 #tagCMTreeLVUP
|
| | |
|
| | | class tagCMTreeLVUP(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 C8 神通等级信息 #tagMCShentongLVInfo
|
| | |
|
| | | class tagMCShentongLV(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ShentongID", c_ubyte), |
| | | ("ClassLV", c_ubyte), |
| | | ("LV", 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.ShentongID = 0
|
| | | self.ClassLV = 0
|
| | | self.LV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCShentongLV)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 C8 神通等级信息 //tagMCShentongLVInfo:
|
| | | ShentongID:%d,
|
| | | ClassLV:%d,
|
| | | LV:%d
|
| | | '''\
|
| | | %(
|
| | | self.ShentongID,
|
| | | self.ClassLV,
|
| | | self.LV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCShentongLVInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | ShentongLVList = list() #(vector<tagMCShentongLV> ShentongLVList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC8
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temShentongLVList = tagMCShentongLV()
|
| | | _pos = temShentongLVList.ReadData(_lpData, _pos)
|
| | | self.ShentongLVList.append(temShentongLVList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC8
|
| | | self.Count = 0
|
| | | self.ShentongLVList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.ShentongLVList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ShentongLVList[i].GetLength(), self.ShentongLVList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ShentongLVList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShentongLVInfo=tagMCShentongLVInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongLVInfo.Head.Cmd,m_NAtagMCShentongLVInfo.Head.SubCmd))] = m_NAtagMCShentongLVInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 C9 神通技能设置信息 #tagMCShentongSkillInfo
|
| | |
|
| | | class tagMCShentongSkillInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | SkillIDList = list() #(vector<DWORD> SkillIDList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC9
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.SkillIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xC9
|
| | | self.Count = 0
|
| | | self.SkillIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4 * self.Count
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | SkillIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCShentongSkillInfo=tagMCShentongSkillInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongSkillInfo.Head.Cmd,m_NAtagMCShentongSkillInfo.Head.SubCmd))] = m_NAtagMCShentongSkillInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 44 当日累计充值多选一礼包信息 #tagMCSingleGoldGift
|
| | |
|
| | | class tagMCSingleGoldGift(Structure):
|
| | |
| | | ("list", "LVUPNeedItemInfo", 0),
|
| | | ),
|
| | |
|
| | | "Shentong":(
|
| | | ("BYTE", "ShentongID", 1),
|
| | | ("WORD", "NeedGubaoID", 0),
|
| | | ),
|
| | |
|
| | | "ShentongLV":(
|
| | | ("BYTE", "ShentongID", 1),
|
| | | ("BYTE", "ShentongClassLV", 1),
|
| | | ("BYTE", "ShentongLV", 1),
|
| | | ("list", "LVLightNeedItem", 0),
|
| | | ("list", "LVAttrTypeList", 0),
|
| | | ("list", "LVAttrValueList", 0),
|
| | | ("DWORD", "LVSkillID", 0),
|
| | | ("DWORD", "FightPowerEx", 0),
|
| | | ),
|
| | |
|
| | | "PlayerLV":(
|
| | | ("WORD", "LV", 1),
|
| | | ("DWORD", "Exp", 0),
|
| | |
| | | def GetLessEqualLV(self): return self.attrTuple[1] # 小于等于等级 BYTE
|
| | | def GetLVUPNeedItemInfo(self): return self.attrTuple[2] # 升级所需物品 [[物品ID,个数], ...] list |
| | | |
| | | # 神通表 |
| | | class IPY_Shentong(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetShentongID(self): return self.attrTuple[0] # 神通ID BYTE
|
| | | def GetNeedGubaoID(self): return self.attrTuple[1] # 解锁所需古宝ID WORD |
| | | |
| | | # 神通升级表 |
| | | class IPY_ShentongLV(): |
| | | |
| | | def __init__(self): |
| | | self.attrTuple = None |
| | | return |
| | | |
| | | def GetShentongID(self): return self.attrTuple[0] # 神通ID BYTE
|
| | | def GetShentongClassLV(self): return self.attrTuple[1] # 神通阶级 BYTE
|
| | | def GetShentongLV(self): return self.attrTuple[2] # 神通等级 BYTE
|
| | | def GetLVLightNeedItem(self): return self.attrTuple[3] # 点亮该级所需物品 [[物品ID,个数], ...] list
|
| | | def GetLVAttrTypeList(self): return self.attrTuple[4] # 该级属性类型列表 list
|
| | | def GetLVAttrValueList(self): return self.attrTuple[5] # 该级属性值列表 list
|
| | | def GetLVSkillID(self): return self.attrTuple[6] # 该级职业通用技能ID DWORD
|
| | | def GetFightPowerEx(self): return self.attrTuple[7] # 附加战力 DWORD |
| | | |
| | | # 玩家等级表 |
| | | class IPY_PlayerLV(): |
| | | |
| | |
| | | self.__LoadFileData("GubaoResonance", onlyCheck)
|
| | | self.__LoadFileData("GubaoStar", onlyCheck)
|
| | | self.__LoadFileData("GubaoLV", onlyCheck)
|
| | | self.__LoadFileData("Shentong", onlyCheck)
|
| | | self.__LoadFileData("ShentongLV", onlyCheck)
|
| | | self.__LoadFileData("PlayerLV", onlyCheck)
|
| | | self.__LoadFileData("SpecMapPlayerAttrFormat", onlyCheck)
|
| | | self.__LoadFileData("GMAttr", onlyCheck)
|
| | |
| | | def GetGubaoLVByIndex(self, index): |
| | | self.CheckLoadData("GubaoLV") |
| | | return self.ipyGubaoLVCache[index]
|
| | | |
| | | def GetShentongCount(self): |
| | | self.CheckLoadData("Shentong") |
| | | return self.ipyShentongLen
|
| | | def GetShentongByIndex(self, index): |
| | | self.CheckLoadData("Shentong") |
| | | return self.ipyShentongCache[index]
|
| | | |
| | | def GetShentongLVCount(self): |
| | | self.CheckLoadData("ShentongLV") |
| | | return self.ipyShentongLVLen
|
| | | def GetShentongLVByIndex(self, index): |
| | | self.CheckLoadData("ShentongLV") |
| | | return self.ipyShentongLVCache[index]
|
| | | |
| | | def GetPlayerLVCount(self): |
| | | self.CheckLoadData("PlayerLV") |
| | |
| | | import PlayerFaQi
|
| | | import SkillShell
|
| | | import PlayerGubao
|
| | | import PlayerShentong
|
| | | import PlayerCustomAward
|
| | | import PlayerZhanling
|
| | | import PlayerTree
|
| | |
| | | PlayerHJG.OnPlayerLogin(curPlayer)
|
| | | PlayerXiangong.OnPlayerLogin(curPlayer)
|
| | | PlayerGubao.OnPlayerLogin(curPlayer)
|
| | | PlayerShentong.OnPlayerLogin(curPlayer)
|
| | | PlayerZhanling.OnPlayerLogin(curPlayer)
|
| | | PlayerTask.OnPlayerLogin(curPlayer)
|
| | | PlayerTree.OnPlayerLogin(curPlayer)
|