9896 【BT0.1】【主干】坐骑、灵宠、称号升星
| | |
| | | list Skills; //被动技能
|
| | | };
|
| | |
|
| | | //称号升星表
|
| | |
|
| | | struct tagTitleStarUp
|
| | | {
|
| | | DWORD _TitleID; //称号NPCID
|
| | | BYTE _TitleStar; //称号星级
|
| | | list StarUpNeedItemList; //升下一星所需道具 [[物品ID,个数], ...]
|
| | | list StarAttrType; //累计总属性类型
|
| | | list StarAttrValue; //累计总属性值
|
| | | };
|
| | |
|
| | | //灵根表 #tagRolePoint
|
| | |
|
| | | struct tagRolePoint
|
| | |
| | | DWORD InitFightPower; //初始战力
|
| | | };
|
| | |
|
| | | //灵宠升星表
|
| | |
|
| | | struct tagPetStarUp
|
| | | {
|
| | | DWORD _PetNPCID; //灵兽NPCID
|
| | | BYTE _PetStar; //灵兽星级
|
| | | list StarUpNeedItemList; //升下一星所需道具 [[物品ID,个数], ...]
|
| | | list StarAttrType; //累计总属性类型
|
| | | list StarAttrValue; //累计总属性值
|
| | | };
|
| | |
|
| | | //灵宠培养表
|
| | |
|
| | | struct tagPetTrain
|
| | |
| | | BYTE Quality; //坐骑品质
|
| | | };
|
| | |
|
| | | //坐骑升星表
|
| | |
|
| | | struct tagHorseStarUp
|
| | | {
|
| | | DWORD _HorseID; //坐骑ID
|
| | | BYTE _HorseStar; //坐骑星级
|
| | | list StarUpNeedItemList; //升下一星所需道具 [[物品ID,个数], ...]
|
| | | list StarAttrType; //累计总属性类型
|
| | | list StarAttrValue; //累计总属性值
|
| | | };
|
| | |
|
| | | //古宝表
|
| | |
|
| | | struct tagGubao
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 35 坐骑升星 #tagCMHorseStarUp
|
| | |
|
| | | class tagCMHorseStarUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HorseID", c_int), #坐骑ID,对应坐骑表ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x35
|
| | | 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 = 0x35
|
| | | self.HorseID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMHorseStarUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 35 坐骑升星 //tagCMHorseStarUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HorseID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HorseID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMHorseStarUp=tagCMHorseStarUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseStarUp.Cmd,m_NAtagCMHorseStarUp.SubCmd))] = m_NAtagCMHorseStarUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 31 坐骑培养 #tagCMHorseTrain
|
| | |
|
| | | class tagCMHorseTrain(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 36 称号升星 #tagCMTitleStarUp
|
| | |
|
| | | class tagCMTitleStarUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TitleID", c_int), #称号ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x36
|
| | | 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 = 0x36
|
| | | self.TitleID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMTitleStarUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 36 称号升星 //tagCMTitleStarUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TitleID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TitleID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMTitleStarUp=tagCMTitleStarUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTitleStarUp.Cmd,m_NAtagCMTitleStarUp.SubCmd))] = m_NAtagCMTitleStarUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 11 试用首充武器 #tagCMTryFirstGoldItem
|
| | |
|
| | | class tagCMTryFirstGoldItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A7 06 宠物升星 #tagCMPetStarUp
|
| | |
|
| | | class tagCMPetStarUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PetItemIndex", c_ubyte), #宠物数据背包索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA7
|
| | | self.SubCmd = 0x06
|
| | | 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 = 0xA7
|
| | | self.SubCmd = 0x06
|
| | | self.PetItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMPetStarUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A7 06 宠物升星 //tagCMPetStarUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PetItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PetItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMPetStarUp=tagCMPetStarUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetStarUp.Cmd,m_NAtagCMPetStarUp.SubCmd))] = m_NAtagCMPetStarUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A7 05 宠物培养 #tagCMPetTrain
|
| | |
|
| | | class tagCMPetTrain(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CD 坐骑星级信息 #tagMCHorseStarInfo
|
| | |
|
| | | class tagMCHorseStar(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("HorseID", c_int), # 坐骑表ID
|
| | | ("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.HorseID = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHorseStar)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
|
| | | HorseID:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.HorseID,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCHorseStarInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | HorseStarList = list() #(vector<tagMCHorseStar> HorseStarList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCD
|
| | | 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):
|
| | | temHorseStarList = tagMCHorseStar()
|
| | | _pos = temHorseStarList.ReadData(_lpData, _pos)
|
| | | self.HorseStarList.append(temHorseStarList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCD
|
| | | self.Count = 0
|
| | | self.HorseStarList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.HorseStarList[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.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | HorseStarList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 38 投资理财信息 #tagMCInvestInfo
|
| | |
|
| | | class tagMCInvestInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CE 称号星级信息 #tagMCTitleStarInfo
|
| | |
|
| | | class tagMCTitleStar(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TitleID", c_int), # 称号ID
|
| | | ("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.TitleID = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTitleStar)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CE 称号星级信息 //tagMCTitleStarInfo:
|
| | | TitleID:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.TitleID,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTitleStarInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | TitleStarList = list() #(vector<tagMCTitleStar> TitleStarList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCE
|
| | | 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):
|
| | | temTitleStarList = tagMCTitleStar()
|
| | | _pos = temTitleStarList.ReadData(_lpData, _pos)
|
| | | self.TitleStarList.append(temTitleStarList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCE
|
| | | self.Count = 0
|
| | | self.TitleStarList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.TitleStarList[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.TitleStarList[i].GetLength(), self.TitleStarList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | TitleStarList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTitleStarInfo=tagMCTitleStarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTitleStarInfo.Head.Cmd,m_NAtagMCTitleStarInfo.Head.SubCmd))] = m_NAtagMCTitleStarInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 56 通天令信息 #tagMCTongTianLingInfo
|
| | |
|
| | | class tagMCTongTianLingInfo(Structure):
|
| | |
| | | Def_IudetPet_State = 204 # 当前状态, 对应 Def_PetStateList
|
| | | Def_IudetPet_QualityLV = 206 # 品质
|
| | | Def_IudetPet_Exp = 208 # 经验
|
| | | Def_IudetPet_Star = 210 # 星级
|
| | | Def_IudetPet_Skill = 201 # 技能列表
|
| | |
|
| | | Def_IudetHorsePetSkinIndex = 210 # 骑宠觉醒外观索引
|
| | |
| | | Writer = wdb
|
| | | Releaser = wdb
|
| | | RegType = 0
|
| | | RegisterPackCount = 6
|
| | | RegisterPackCount = 7
|
| | |
|
| | | PacketCMD_1=0xA5
|
| | | PacketSubCMD_1=0x01
|
| | |
| | | PacketCMD_6=0xA5
|
| | | PacketSubCMD_6=0x31
|
| | | PacketCallFunc_6=OnHorseTrain
|
| | |
|
| | | PacketCMD_7=0xA5
|
| | | PacketSubCMD_7=0x35
|
| | | PacketCallFunc_7=OnHorseStarUp
|
| | |
|
| | | ;玛雅加强
|
| | | [EquipPlus]
|
| | |
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 3
|
| | | RegisterPackCount = 4
|
| | |
|
| | | PacketCMD_1=0xA7
|
| | | PacketSubCMD_1=0x02
|
| | |
| | | PacketSubCMD_3=0x05
|
| | | PacketCallFunc_3=OnPetTrain
|
| | |
|
| | | PacketCMD_4=0xA7
|
| | | PacketSubCMD_4=0x06
|
| | | PacketCallFunc_4=OnPetStarUp
|
| | |
|
| | | ;称号
|
| | | [PlayerDienstgrad]
|
| | | ScriptName = Player\PlayerDienstgrad.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 1
|
| | |
|
| | | PacketCMD_1=0xA5
|
| | | PacketSubCMD_1=0x36
|
| | | PacketCallFunc_1=OnTitleStarUp
|
| | |
|
| | | ;事件
|
| | | [EventShell]
|
| | | ScriptName = Event\EventShell.py
|
| | |
| | |
|
| | | # 坐骑
|
| | | Def_PDict_HorserLV = "HorserLV" # 坐骑等级
|
| | | Def_PDict_HorserStar = "HorserStar_%s" # 坐骑星级,参数(坐骑ID)
|
| | | Def_PDict_HorserEatItemCount = "HorserEatItemCount" # 当前阶已吃培养丹个数
|
| | | Def_PDict_HorserSkinPlusState = "HorserSkinPlusState%s" # 坐骑幻化皮肤激活状态,按二进制位存储,每位代表幻化ID是否已激活,支持多值
|
| | | Def_PDict_HorserSkinEndTime = "HorserSkinEndTime_%s" # 坐骑幻化皮肤激活结束时间戳,仅针对非永久的幻化皮肤
|
| | |
| | | #骑宠觉醒
|
| | | Def_PDict_HorsePetSkinData = "HorsePetSkinData%d_%s" #觉醒等级*100+外观索引 参数(类型,关联ID) 1-坐骑 2-灵宠
|
| | | Def_PDict_HorsePetSkinExp = "HorsePetSkinExp%d_%s" #经验 参数(类型,关联ID) 1-坐骑 2-灵宠
|
| | |
|
| | | # 称号
|
| | | Def_PDict_TitleStar = "TitleStar_%s" # 称号星级,参数(称号ID)
|
| | |
|
| | | # 符印
|
| | | Def_PDict_Rune_HoleOpenState = "Rune_HoleOpenState" # 符印解锁状态
|
| | | Def_PDict_Rune_Data = "Rune_Data_%s" # 符印镶嵌数据, 参数(第几孔)
|
| | |
| | | Def_CalcAttrFunc_LingQiEnchant, # 灵器附魔 54
|
| | | Def_CalcAttrFunc_Gubao, # 古宝 55
|
| | | Def_CalcAttrFunc_Shentong, # 神通 56
|
| | | ) = range(57)
|
| | | Def_CalcAttrFunc_HorseStar, # 坐骑星级 57
|
| | | Def_CalcAttrFunc_PetStar, # 灵宠星级 58
|
| | | Def_CalcAttrFunc_TitleStar, # 称号星级 59
|
| | | ) = range(60)
|
| | |
|
| | | # 技能功能点列表 - 默认不算战力,不享受百分比加成,技能功能点暂时配置,之后优化技能属性逻辑后可去掉
|
| | | CalcAttrFuncSkillList = [Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_DogzBattleSkill]
|
| | |
| | | ShareDefine.Def_MFPType_LingQi:[Def_CalcAttrFunc_LingQi, Def_CalcAttrFunc_LingQiAttr, Def_CalcAttrFunc_LingQiJingLianAttr, Def_CalcAttrFunc_GuardTarin,
|
| | | Def_CalcAttrFunc_WingTarin, Def_CalcAttrFunc_PeerlessWeaponTrain, Def_CalcAttrFunc_PeerlessWeapon2Train],
|
| | | ShareDefine.Def_MFPType_Wash:[Def_CalcAttrFunc_Wash],
|
| | | ShareDefine.Def_MFPType_Pet:[Def_CalcAttrFunc_Pet, Def_CalcAttrFunc_PetSign, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_PetSkin, Def_CalcAttrFunc_PetTarin],
|
| | | ShareDefine.Def_MFPType_Pet:[Def_CalcAttrFunc_Pet, Def_CalcAttrFunc_PetSign, Def_CalcAttrFunc_PetSkill, Def_CalcAttrFunc_PetSkin, Def_CalcAttrFunc_PetTarin, Def_CalcAttrFunc_PetStar],
|
| | | ShareDefine.Def_MFPType_PetSoul:[Def_CalcAttrFunc_PetSoul],
|
| | | ShareDefine.Def_MFPType_Horse:[Def_CalcAttrFunc_Horse, Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_HorseSkin, Def_CalcAttrFunc_HorseTarin],
|
| | | ShareDefine.Def_MFPType_Horse:[Def_CalcAttrFunc_Horse, Def_CalcAttrFunc_HorseSkill, Def_CalcAttrFunc_HorseSkin, Def_CalcAttrFunc_HorseTarin, Def_CalcAttrFunc_HorseStar],
|
| | | ShareDefine.Def_MFPType_HorseSoul:[Def_CalcAttrFunc_HorseSoul],
|
| | | ShareDefine.Def_MFPType_FaQi:[Def_CalcAttrFunc_FaQi],
|
| | | ShareDefine.Def_MFPType_Love:[Def_CalcAttrFunc_LoveRing, Def_CalcAttrFunc_LoveRingCouple],
|
| | |
| | | ShareDefine.Def_MFPType_LianTi:[Def_CalcAttrFunc_LianTi],
|
| | | ShareDefine.Def_MFPType_Prestige:[Def_CalcAttrFunc_Prestige],
|
| | | ShareDefine.Def_MFPType_GodWeapon:[Def_CalcAttrFunc_GodWeapon],
|
| | | ShareDefine.Def_MFPType_Dienstgrad:[Def_CalcAttrFunc_Dienstgrad],
|
| | | ShareDefine.Def_MFPType_Dienstgrad:[Def_CalcAttrFunc_Dienstgrad, Def_CalcAttrFunc_TitleStar],
|
| | | ShareDefine.Def_MFPType_Rune:[Def_CalcAttrFunc_Rune],
|
| | | ShareDefine.Def_MFPType_MagicWeapon1:[Def_CalcAttrFunc_MagicWeapon1],
|
| | | ShareDefine.Def_MFPType_MagicWeapon2:[Def_CalcAttrFunc_MagicWeapon2],
|
| | |
| | | Def_CalcAttrFunc_WingTarin:"翅膀培养", Def_CalcAttrFunc_PeerlessWeaponTrain:"灭世培养", Def_CalcAttrFunc_PeerlessWeapon2Train:"噬魂培养", Def_CalcAttrFunc_FaQi:"法器",
|
| | | Def_CalcAttrFunc_LoveRing:"情戒基础", Def_CalcAttrFunc_LoveRingCouple:"情戒仙侣", Def_CalcAttrFunc_Charm:"魅力", Def_CalcAttrFunc_LianTi:"炼体",
|
| | | Def_CalcAttrFunc_Enchant:"附魔", Def_CalcAttrFunc_LingQiEnchant:"灵器附魔", Def_CalcAttrFunc_Gubao:"古宝", Def_CalcAttrFunc_Shentong:"神通",
|
| | | Def_CalcAttrFunc_HorseStar:"坐骑星级", Def_CalcAttrFunc_PetStar:"宠物星级", Def_CalcAttrFunc_TitleStar:"称号星级",
|
| | | }
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 35 坐骑升星 #tagCMHorseStarUp
|
| | |
|
| | | class tagCMHorseStarUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("HorseID", c_int), #坐骑ID,对应坐骑表ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x35
|
| | | 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 = 0x35
|
| | | self.HorseID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMHorseStarUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 35 坐骑升星 //tagCMHorseStarUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | HorseID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.HorseID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMHorseStarUp=tagCMHorseStarUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMHorseStarUp.Cmd,m_NAtagCMHorseStarUp.SubCmd))] = m_NAtagCMHorseStarUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 31 坐骑培养 #tagCMHorseTrain
|
| | |
|
| | | class tagCMHorseTrain(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 36 称号升星 #tagCMTitleStarUp
|
| | |
|
| | | class tagCMTitleStarUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TitleID", c_int), #称号ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | self.SubCmd = 0x36
|
| | | 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 = 0x36
|
| | | self.TitleID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMTitleStarUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 36 称号升星 //tagCMTitleStarUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TitleID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TitleID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMTitleStarUp=tagCMTitleStarUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMTitleStarUp.Cmd,m_NAtagCMTitleStarUp.SubCmd))] = m_NAtagCMTitleStarUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 11 试用首充武器 #tagCMTryFirstGoldItem
|
| | |
|
| | | class tagCMTryFirstGoldItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A7 06 宠物升星 #tagCMPetStarUp
|
| | |
|
| | | class tagCMPetStarUp(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PetItemIndex", c_ubyte), #宠物数据背包索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA7
|
| | | self.SubCmd = 0x06
|
| | | 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 = 0xA7
|
| | | self.SubCmd = 0x06
|
| | | self.PetItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMPetStarUp)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A7 06 宠物升星 //tagCMPetStarUp:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PetItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PetItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMPetStarUp=tagCMPetStarUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMPetStarUp.Cmd,m_NAtagCMPetStarUp.SubCmd))] = m_NAtagCMPetStarUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A7 05 宠物培养 #tagCMPetTrain
|
| | |
|
| | | class tagCMPetTrain(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CD 坐骑星级信息 #tagMCHorseStarInfo
|
| | |
|
| | | class tagMCHorseStar(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("HorseID", c_int), # 坐骑表ID
|
| | | ("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.HorseID = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCHorseStar)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
|
| | | HorseID:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.HorseID,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCHorseStarInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | HorseStarList = list() #(vector<tagMCHorseStar> HorseStarList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCD
|
| | | 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):
|
| | | temHorseStarList = tagMCHorseStar()
|
| | | _pos = temHorseStarList.ReadData(_lpData, _pos)
|
| | | self.HorseStarList.append(temHorseStarList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCD
|
| | | self.Count = 0
|
| | | self.HorseStarList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.HorseStarList[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.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | HorseStarList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 38 投资理财信息 #tagMCInvestInfo
|
| | |
|
| | | class tagMCInvestInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 CE 称号星级信息 #tagMCTitleStarInfo
|
| | |
|
| | | class tagMCTitleStar(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TitleID", c_int), # 称号ID
|
| | | ("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.TitleID = 0
|
| | | self.Star = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTitleStar)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 CE 称号星级信息 //tagMCTitleStarInfo:
|
| | | TitleID:%d,
|
| | | Star:%d
|
| | | '''\
|
| | | %(
|
| | | self.TitleID,
|
| | | self.Star
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTitleStarInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | TitleStarList = list() #(vector<tagMCTitleStar> TitleStarList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCE
|
| | | 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):
|
| | | temTitleStarList = tagMCTitleStar()
|
| | | _pos = temTitleStarList.ReadData(_lpData, _pos)
|
| | | self.TitleStarList.append(temTitleStarList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0xCE
|
| | | self.Count = 0
|
| | | self.TitleStarList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.TitleStarList[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.TitleStarList[i].GetLength(), self.TitleStarList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | TitleStarList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTitleStarInfo=tagMCTitleStarInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTitleStarInfo.Head.Cmd,m_NAtagMCTitleStarInfo.Head.SubCmd))] = m_NAtagMCTitleStarInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 56 通天令信息 #tagMCTongTianLingInfo
|
| | |
|
| | | class tagMCTongTianLingInfo(Structure):
|
| | |
| | | GameWorld.DebugAnswer(curPlayer, "全部幻化: Horse skin 1")
|
| | | GameWorld.DebugAnswer(curPlayer, "重置幻化: Horse skin 0")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置幻化: Horse skin 幻化ID 状态")
|
| | | GameWorld.DebugAnswer(curPlayer, "设置星级: Horse star 坐骑ID 星级")
|
| | | return
|
| | |
|
| | | if msgList[0] == "skin":
|
| | |
| | | else:
|
| | | return
|
| | |
|
| | | elif msgList[0] == "star":
|
| | | horseID = msgList[1] if len(msgList) > 1 else 0
|
| | | horseStar = msgList[2] if len(msgList) > 2 else 0
|
| | | if not horseID or not horseStar:
|
| | | return
|
| | | skinID = 0
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
|
| | | skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
|
| | | if horseID != skinPlusIpyData.GetHorseID():
|
| | | continue
|
| | | if PlayerHorse.CheckHorseSkinState(curPlayer, skinPlusIpyData):
|
| | | skinID = skinPlusIpyData.GetID()
|
| | | break
|
| | | if not skinID:
|
| | | GameWorld.DebugAnswer(curPlayer, "该坐骑不存在或未激活:horseID=%s" % horseID)
|
| | | return
|
| | | if not IpyGameDataPY.GetIpyGameData("HorseStarUp", horseID, horseStar):
|
| | | GameWorld.DebugAnswer(curPlayer, "不存在该坐骑星级:horseID=%s,star=%s" % (horseID, horseStar))
|
| | | return
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserStar % horseID, horseStar)
|
| | | GameWorld.DebugAnswer(curPlayer, "设置坐骑星级:horseID=%s,star=%s,skinID=%s" % (horseID, horseStar, skinID))
|
| | | |
| | | elif len(msgList) == 1:
|
| | | if msgList[0] == 0:
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserLV, 1)
|
| | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserSkinEndTime % skinID, 0)
|
| | | GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_PDict_HorserSkinPlusState, skinID, 0)
|
| | |
|
| | | for index in range(ipyDataMgr.GetHorseCount()):
|
| | | ipyData = ipyDataMgr.GetHorseByIndex(index)
|
| | | horseID = ipyData.GetHorseID()
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserStar % horseID, 0)
|
| | | |
| | | elif len(msgList) == 2:
|
| | | lv, eatItemCount = msgList
|
| | | if lv < 1:
|
| | |
| | | ("list", "Skills", 0),
|
| | | ),
|
| | |
|
| | | "TitleStarUp":(
|
| | | ("DWORD", "TitleID", 1),
|
| | | ("BYTE", "TitleStar", 1),
|
| | | ("list", "StarUpNeedItemList", 0),
|
| | | ("list", "StarAttrType", 0),
|
| | | ("list", "StarAttrValue", 0),
|
| | | ),
|
| | |
|
| | | "RolePoint":(
|
| | | ("BYTE", "AttrID", 1),
|
| | | ("dict", "AddAttrInfoPerPoint", 0),
|
| | |
| | | ("DWORD", "InitFightPower", 0),
|
| | | ),
|
| | |
|
| | | "PetStarUp":(
|
| | | ("DWORD", "PetNPCID", 1),
|
| | | ("BYTE", "PetStar", 1),
|
| | | ("list", "StarUpNeedItemList", 0),
|
| | | ("list", "StarAttrType", 0),
|
| | | ("list", "StarAttrValue", 0),
|
| | | ),
|
| | |
|
| | | "PetTrain":(
|
| | | ("BYTE", "TrainType", 1),
|
| | | ("BYTE", "TrainLV", 1),
|
| | |
| | | ("DWORD", "HorseID", 1),
|
| | | ("DWORD", "HorseSkinID", 0),
|
| | | ("BYTE", "Quality", 0),
|
| | | ),
|
| | |
|
| | | "HorseStarUp":(
|
| | | ("DWORD", "HorseID", 1),
|
| | | ("BYTE", "HorseStar", 1),
|
| | | ("list", "StarUpNeedItemList", 0),
|
| | | ("list", "StarAttrType", 0),
|
| | | ("list", "StarAttrValue", 0),
|
| | | ),
|
| | |
|
| | | "Gubao":(
|
| | |
| | | def GetLightAttribute(self): return self.LightAttribute # 点亮属性值
|
| | | def GetSkills(self): return self.Skills # 被动技能 |
| | | |
| | | # 称号升星表 |
| | | class IPY_TitleStarUp(): |
| | | |
| | | def __init__(self): |
| | | self.TitleID = 0
|
| | | self.TitleStar = 0
|
| | | self.StarUpNeedItemList = []
|
| | | self.StarAttrType = []
|
| | | self.StarAttrValue = [] |
| | | return |
| | | |
| | | def GetTitleID(self): return self.TitleID # 称号NPCID
|
| | | def GetTitleStar(self): return self.TitleStar # 称号星级
|
| | | def GetStarUpNeedItemList(self): return self.StarUpNeedItemList # 升下一星所需道具 [[物品ID,个数], ...]
|
| | | def GetStarAttrType(self): return self.StarAttrType # 累计总属性类型
|
| | | def GetStarAttrValue(self): return self.StarAttrValue # 累计总属性值 |
| | | |
| | | # 灵根表 |
| | | class IPY_RolePoint(): |
| | | |
| | |
| | | def GetSkillUnLockSys(self): return self.SkillUnLockSys # 灵兽技能解锁提示
|
| | | def GetInitFightPower(self): return self.InitFightPower # 初始战力 |
| | | |
| | | # 灵宠升星表 |
| | | class IPY_PetStarUp(): |
| | | |
| | | def __init__(self): |
| | | self.PetNPCID = 0
|
| | | self.PetStar = 0
|
| | | self.StarUpNeedItemList = []
|
| | | self.StarAttrType = []
|
| | | self.StarAttrValue = [] |
| | | return |
| | | |
| | | def GetPetNPCID(self): return self.PetNPCID # 灵兽NPCID
|
| | | def GetPetStar(self): return self.PetStar # 灵兽星级
|
| | | def GetStarUpNeedItemList(self): return self.StarUpNeedItemList # 升下一星所需道具 [[物品ID,个数], ...]
|
| | | def GetStarAttrType(self): return self.StarAttrType # 累计总属性类型
|
| | | def GetStarAttrValue(self): return self.StarAttrValue # 累计总属性值 |
| | | |
| | | # 灵宠培养表 |
| | | class IPY_PetTrain(): |
| | | |
| | |
| | | def GetHorseID(self): return self.HorseID # 坐骑ID
|
| | | def GetHorseSkinID(self): return self.HorseSkinID # 外观物品ID
|
| | | def GetQuality(self): return self.Quality # 坐骑品质 |
| | | |
| | | # 坐骑升星表 |
| | | class IPY_HorseStarUp(): |
| | | |
| | | def __init__(self): |
| | | self.HorseID = 0
|
| | | self.HorseStar = 0
|
| | | self.StarUpNeedItemList = []
|
| | | self.StarAttrType = []
|
| | | self.StarAttrValue = [] |
| | | return |
| | | |
| | | def GetHorseID(self): return self.HorseID # 坐骑ID
|
| | | def GetHorseStar(self): return self.HorseStar # 坐骑星级
|
| | | def GetStarUpNeedItemList(self): return self.StarUpNeedItemList # 升下一星所需道具 [[物品ID,个数], ...]
|
| | | def GetStarAttrType(self): return self.StarAttrType # 累计总属性类型
|
| | | def GetStarAttrValue(self): return self.StarAttrValue # 累计总属性值 |
| | | |
| | | # 古宝表 |
| | | class IPY_Gubao(): |
| | |
| | | self.ipyConfigEx = {}
|
| | | self.ipyDienstgradCache = self.__LoadFileData("Dienstgrad", IPY_Dienstgrad)
|
| | | self.ipyDienstgradLen = len(self.ipyDienstgradCache)
|
| | | self.ipyTitleStarUpCache = self.__LoadFileData("TitleStarUp", IPY_TitleStarUp)
|
| | | self.ipyTitleStarUpLen = len(self.ipyTitleStarUpCache)
|
| | | self.ipyRolePointCache = self.__LoadFileData("RolePoint", IPY_RolePoint)
|
| | | self.ipyRolePointLen = len(self.ipyRolePointCache)
|
| | | self.ipyLingQiAttrCache = self.__LoadFileData("LingQiAttr", IPY_LingQiAttr)
|
| | |
| | | self.ipyAttrFruitLen = len(self.ipyAttrFruitCache)
|
| | | self.ipyPetInfoCache = self.__LoadFileData("PetInfo", IPY_PetInfo)
|
| | | self.ipyPetInfoLen = len(self.ipyPetInfoCache)
|
| | | self.ipyPetStarUpCache = self.__LoadFileData("PetStarUp", IPY_PetStarUp)
|
| | | self.ipyPetStarUpLen = len(self.ipyPetStarUpCache)
|
| | | self.ipyPetTrainCache = self.__LoadFileData("PetTrain", IPY_PetTrain)
|
| | | self.ipyPetTrainLen = len(self.ipyPetTrainCache)
|
| | | self.ipyEquipDecomposeCache = self.__LoadFileData("EquipDecompose", IPY_EquipDecompose)
|
| | |
| | | self.ipyHorseSkinPlusLen = len(self.ipyHorseSkinPlusCache)
|
| | | self.ipyHorseCache = self.__LoadFileData("Horse", IPY_Horse)
|
| | | self.ipyHorseLen = len(self.ipyHorseCache)
|
| | | self.ipyHorseStarUpCache = self.__LoadFileData("HorseStarUp", IPY_HorseStarUp)
|
| | | self.ipyHorseStarUpLen = len(self.ipyHorseStarUpCache)
|
| | | self.ipyGubaoCache = self.__LoadFileData("Gubao", IPY_Gubao)
|
| | | self.ipyGubaoLen = len(self.ipyGubaoCache)
|
| | | self.ipyGubaoStarCache = self.__LoadFileData("GubaoStar", IPY_GubaoStar)
|
| | |
| | |
|
| | | def GetDienstgradCount(self): return self.ipyDienstgradLen
|
| | | def GetDienstgradByIndex(self, index): return self.ipyDienstgradCache[index]
|
| | | def GetTitleStarUpCount(self): return self.ipyTitleStarUpLen
|
| | | def GetTitleStarUpByIndex(self, index): return self.ipyTitleStarUpCache[index]
|
| | | def GetRolePointCount(self): return self.ipyRolePointLen
|
| | | def GetRolePointByIndex(self, index): return self.ipyRolePointCache[index]
|
| | | def GetLingQiAttrCount(self): return self.ipyLingQiAttrLen
|
| | |
| | | def GetAttrFruitByIndex(self, index): return self.ipyAttrFruitCache[index]
|
| | | def GetPetInfoCount(self): return self.ipyPetInfoLen
|
| | | def GetPetInfoByIndex(self, index): return self.ipyPetInfoCache[index]
|
| | | def GetPetStarUpCount(self): return self.ipyPetStarUpLen
|
| | | def GetPetStarUpByIndex(self, index): return self.ipyPetStarUpCache[index]
|
| | | def GetPetTrainCount(self): return self.ipyPetTrainLen
|
| | | def GetPetTrainByIndex(self, index): return self.ipyPetTrainCache[index]
|
| | | def GetEquipDecomposeCount(self): return self.ipyEquipDecomposeLen
|
| | |
| | | def GetHorseSkinPlusByIndex(self, index): return self.ipyHorseSkinPlusCache[index]
|
| | | def GetHorseCount(self): return self.ipyHorseLen
|
| | | def GetHorseByIndex(self, index): return self.ipyHorseCache[index]
|
| | | def GetHorseStarUpCount(self): return self.ipyHorseStarUpLen
|
| | | def GetHorseStarUpByIndex(self, index): return self.ipyHorseStarUpCache[index]
|
| | | def GetGubaoCount(self): return self.ipyGubaoLen
|
| | | def GetGubaoByIndex(self, index): return self.ipyGubaoCache[index]
|
| | | def GetGubaoStarCount(self): return self.ipyGubaoStarLen
|
| | |
| | | import CrossPlayerData
|
| | | import GameFuncComm
|
| | | import ShareDefine
|
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import ItemCommon
|
| | |
|
| | | import time
|
| | | #-------------------------------------------------------------
|
| | |
| | | CrossPlayerData.OnDienstgradChange(curPlayer, dienstgradID, 1)
|
| | | if dienstgradID == IpyGameDataPY.GetFuncCfg("TitleAddPoint"):
|
| | | __DoTitleAddPoint(curPlayer)
|
| | | |
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleStar % dienstgradID, 1)
|
| | | SyncTitleStarInfo(curPlayer, dienstgradID)
|
| | | |
| | | #重新刷新角色属性
|
| | | if isRefreshAttr:
|
| | | CalcAllDienstgradAttr(curPlayer)
|
| | |
| | | curDienstgradMgr = curPlayer.GetDienstgradManager()
|
| | | curDienstgradMgr.Sync_AllDienstgrad()
|
| | | curDienstgradMgr.Notify_PlayerChangeDienstgrad(curDienstgradMgr.GetCurGradID())
|
| | | SyncTitleStarInfo(curPlayer)
|
| | | return
|
| | |
|
| | | #===============================================================================
|
| | | # //B2 01 使用称号(有属性不显示场景中) #tagPyCMUseDienstgrad
|
| | |
| | | FitOnDienstgrad(index, curGradID)
|
| | | else:
|
| | | TakeOffDienstgrad(index)
|
| | | |
| | | #// A5 36 称号升星 #tagCMTitleStarUp
|
| | | #
|
| | | #struct tagCMTitleStarUp
|
| | | #{
|
| | | # tagHead Head;
|
| | | # DWORD TitleID; //称号ID
|
| | | #};
|
| | | def OnTitleStarUp(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | titleID = clientData.TitleID
|
| | | |
| | | curStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TitleStar % titleID) |
| | | ipyData = IpyGameDataPY.GetIpyGameData("TitleStarUp", titleID, curStar)
|
| | | if not ipyData:
|
| | | return
|
| | | nextStar = curStar + 1
|
| | | nextIpyData = IpyGameDataPY.GetIpyGameData("TitleStarUp", titleID, nextStar)
|
| | | needItemList = ipyData.GetStarUpNeedItemList()
|
| | | if not needItemList or not nextIpyData:
|
| | | GameWorld.DebugLog("称号已满星,无法升星. titleID=%s,curStar=%s" % (titleID, curStar), playerID)
|
| | | return
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|
| | | if lackItemDict:
|
| | | GameWorld.DebugLog("称号升星所需物品不足! titleID=%s,curStar=%s,needItemList=%s,lackItemDict=%s" |
| | | % (titleID, curStar, needItemList, lackItemDict), playerID)
|
| | | return
|
| | | |
| | | ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "TitleStarUp")
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TitleStar % titleID, nextStar)
|
| | | |
| | | GameWorld.DebugLog("称号升星. titleID=%s,curStar=%s,nextStar=%s" % (titleID, curStar, nextStar), playerID)
|
| | | |
| | | CalcAllDienstgradAttr(curPlayer)
|
| | | playerControl = PlayerControl.PlayerControl(curPlayer)
|
| | | playerControl.RefreshPlayerAttrState()
|
| | | |
| | | SyncTitleStarInfo(curPlayer, titleID)
|
| | | return
|
| | |
|
| | | #-------------------------------------------------------------
|
| | | ## 获取已激活称号列表
|
| | |
| | | def CalcAllDienstgradAttr(curPlayer):
|
| | | # 计算全部称号属性
|
| | | allAttrList = [{} for i in range(4)]
|
| | | allAttrListStar = [{} for _ in range(4)]
|
| | | |
| | | dienstgradManager = curPlayer.GetDienstgradManager()
|
| | | gradCnt = dienstgradManager.GetCount()
|
| | | for i in xrange(gradCnt):
|
| | |
| | | for i, attrID in enumerate(attrTypeList):
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValueList[i], allAttrList)
|
| | |
|
| | | curStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TitleStar % curGradID) |
| | | starIpyData = IpyGameDataPY.GetIpyGameData("TitleStarUp", curGradID, curStar)
|
| | | if starIpyData:
|
| | | starAttrType = starIpyData.GetStarAttrType()
|
| | | starAttrValue = starIpyData.GetStarAttrValue()
|
| | | for i, attrID in enumerate(starAttrType):
|
| | | attrValue = starAttrValue[i]
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
|
| | | |
| | | # 保存计算值
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Dienstgrad, allAttrList)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_TitleStar, allAttrListStar)
|
| | | return
|
| | |
|
| | | ## 称号每日更新处理
|
| | |
| | | for dienstgradID in dienstgradIDList:
|
| | | PlayerAddDienstgrad(curPlayer, dienstgradID)
|
| | | #PlayerFitOnDienstgrad(curPlayer, dienstgradID)
|
| | | return |
| | | return
|
| | |
|
| | | def SyncTitleStarInfo(curPlayer, titleID=None):
|
| | | if titleID > 0:
|
| | | syncIDList = [titleID]
|
| | | else:
|
| | | syncIDList = []
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetDienstgradCount()):
|
| | | ipyData = ipyDataMgr.GetDienstgradByIndex(index)
|
| | | syncIDList.append(ipyData.GetID())
|
| | | |
| | | if not syncIDList:
|
| | | return
|
| | | |
| | | titleStarList = []
|
| | | for titleID in syncIDList:
|
| | | curStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TitleStar % titleID)
|
| | | if not curStar:
|
| | | continue
|
| | | starInfo = ChPyNetSendPack.tagMCTitleStar()
|
| | | starInfo.Clear()
|
| | | starInfo.TitleID = titleID
|
| | | starInfo.Star = curStar
|
| | | titleStarList.append(starInfo)
|
| | | |
| | | if not titleStarList:
|
| | | return
|
| | | |
| | | clientPack = ChPyNetSendPack.tagMCTitleStarInfo()
|
| | | clientPack.Clear()
|
| | | clientPack.TitleStarList = titleStarList
|
| | | clientPack.Count = len(clientPack.TitleStarList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
| | | GameWorld.Log("坐骑激活成功!activateID=%s,activateState=%s,updActivateState=%s,updSkinEndTime=%s"
|
| | | % (activateID, activateState, updActivateState, updSkinEndTime), playerID)
|
| | |
|
| | | horseStar = 1 # 初始星级
|
| | | horseID = ipyData.GetHorseID()
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserStar % horseID, horseStar)
|
| | | SyncHorseStarInfo(curPlayer, horseID)
|
| | | |
| | | # 刷属性,更新排行榜
|
| | | RefreshHorseAttr(curPlayer)
|
| | | PlayerControl.WorldNotify(0, "GetMount", [curPlayer.GetName(), ipyData.GetHorseSkinPlusID()])
|
| | |
| | | allAttrListHorseSoul = [{} for _ in range(4)]
|
| | | allAttrListSkin = [{} for _ in range(4)]
|
| | | allAttrListTrain = [{} for _ in range(4)]
|
| | | allAttrListStar = [{} for _ in range(4)]
|
| | |
|
| | | customAttrDictSkin = {}
|
| | |
|
| | |
| | | for i, attrID in enumerate(attrTypeList):
|
| | | attrValue = attrValueList[i]
|
| | | qualityAttrDict[attrID] = qualityAttrDict.get(attrID, 0) + attrValue
|
| | | |
| | | #星级
|
| | | horseStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserStar % horseID)
|
| | | starIpyData = IpyGameDataPY.GetIpyGameData("HorseStarUp", horseID, horseStar)
|
| | | if starIpyData:
|
| | | starAttrType = starIpyData.GetStarAttrType()
|
| | | starAttrValue = starIpyData.GetStarAttrValue()
|
| | | for i, attrID in enumerate(starAttrType):
|
| | | attrValue = starAttrValue[i]
|
| | | if attrID == ShareDefine.Def_Effect_Speed:
|
| | | horseSpeed += attrValue
|
| | | continue
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
|
| | | |
| | | customAttrDictSkin["horseSkinQualityAttrInfo"] = horseSkinQualityAttrInfo
|
| | |
|
| | | # 新培养属性
|
| | |
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSoul, allAttrListHorseSoul)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSkin, allAttrListSkin, customAttrDict=customAttrDictSkin)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseTarin, allAttrListTrain)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseStar, allAttrListStar)
|
| | | return
|
| | |
|
| | | def GetHorseSkinActCount(curPlayer):
|
| | |
| | | RefreshHorseAttr(curPlayer)
|
| | | return
|
| | |
|
| | | #// A5 35 坐骑升星 #tagCMHorseStarUp
|
| | | #
|
| | | #struct tagCMHorseStarUp
|
| | | #{
|
| | | # tagHead Head;
|
| | | # DWORD HorseID; //坐骑ID,对应坐骑表ID
|
| | | #};
|
| | | def OnHorseStarUp(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | horseID = clientData.HorseID
|
| | | |
| | | horseStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserStar % horseID) |
| | | ipyData = IpyGameDataPY.GetIpyGameData("HorseStarUp", horseID, horseStar)
|
| | | if not ipyData:
|
| | | return
|
| | | nextStar = horseStar + 1
|
| | | nextIpyData = IpyGameDataPY.GetIpyGameData("HorseStarUp", horseID, nextStar)
|
| | | needItemList = ipyData.GetStarUpNeedItemList()
|
| | | if not needItemList or not nextIpyData:
|
| | | GameWorld.DebugLog("坐骑已满星,无法升星. horseID=%s,curStar=%s" % (horseID, horseStar), playerID)
|
| | | return
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|
| | | if lackItemDict:
|
| | | GameWorld.DebugLog("坐骑升星所需物品不足! horseID=%s,curStar=%s,needItemList=%s,lackItemDict=%s" |
| | | % (horseID, horseStar, needItemList, lackItemDict), playerID)
|
| | | return
|
| | | |
| | | ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "HorseStarUp")
|
| | | PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_HorserStar % horseID, nextStar)
|
| | | |
| | | GameWorld.DebugLog("坐骑升星. horseID=%s,curStar=%s,nextStar=%s" % (horseID, horseStar, nextStar), playerID)
|
| | | |
| | | RefreshHorseAttr(curPlayer)
|
| | | SyncHorseStarInfo(curPlayer, horseID)
|
| | | return
|
| | |
|
| | | def GetHorseTrainTypes():
|
| | | return len(IpyGameDataPY.GetFuncEvalCfg("HorseTrain", 1))
|
| | |
|
| | |
| | | Sync_HorseClassData(curPlayer)
|
| | | SyncHorsePetSkinData(curPlayer)
|
| | | SyncHorseSkinTimeInfo(curPlayer)
|
| | | SyncHorseStarInfo(curPlayer)
|
| | | return
|
| | |
|
| | | def Sync_HorseClassData(curPlayer):
|
| | |
| | | NetPackCommon.SendFakePack(curPlayer, packData)
|
| | | return
|
| | |
|
| | | def SyncHorseStarInfo(curPlayer, horseID=None):
|
| | | if horseID > 0:
|
| | | syncIDList = [horseID]
|
| | | else:
|
| | | syncIDList = []
|
| | | ipyDataMgr = IpyGameDataPY.IPY_Data()
|
| | | for index in range(ipyDataMgr.GetHorseCount()):
|
| | | ipyData = ipyDataMgr.GetHorseByIndex(index)
|
| | | syncIDList.append(ipyData.GetHorseID())
|
| | | |
| | | if not syncIDList:
|
| | | return
|
| | | |
| | | horseStarList = []
|
| | | for horseID in syncIDList:
|
| | | horseStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserStar % horseID)
|
| | | if not horseStar:
|
| | | continue
|
| | | starInfo = ChPyNetSendPack.tagMCHorseStar()
|
| | | starInfo.Clear()
|
| | | starInfo.HorseID = horseID
|
| | | starInfo.Star = horseStar
|
| | | horseStarList.append(starInfo)
|
| | | |
| | | if not horseStarList:
|
| | | return
|
| | | |
| | | clientPack = ChPyNetSendPack.tagMCHorseStarInfo()
|
| | | clientPack.Clear()
|
| | | clientPack.HorseStarList = horseStarList
|
| | | clientPack.Count = len(clientPack.HorseStarList)
|
| | | NetPackCommon.SendFakePack(curPlayer, clientPack)
|
| | | return
|
| | |
| | | initClass = petIpyData.GetInitRank() if classlv == -1 else classlv#初始阶级
|
| | | newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_ClassLV, max(0, initClass - 1)) #代码里从0开始
|
| | | newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_QualityLV, petIpyData.GetQuality()) # 宠物品质
|
| | | newPetItem.SetUserAttr(ShareDefine.Def_IudetPet_Star, 1) # 起始1星
|
| | |
|
| | |
|
| | | petSkillList = petIpyData.GetSkillID()
|
| | |
| | | skillAttrList = [{} for _ in range(4)]
|
| | | allAttrListPetSkin = [{} for _ in range(4)]
|
| | | allAttrListTrain = [{} for _ in range(4)]
|
| | | allAttrListStar = [{} for _ in range(4)]
|
| | | customAttrDictPet = {}
|
| | | totalMinAtk, totalMaxAtk, qualityAttrInfo = GetPetAtkValue(curPlayer)
|
| | | customAttrDictPet["petQualityAttrInfo"] = qualityAttrInfo
|
| | |
| | | if skinIpyData:
|
| | | for attrID, attrValue in skinIpyData.GetAttrInfo().items():
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListPetSkin)
|
| | | |
| | | #星级
|
| | | curStar = petItem.GetUserAttr(ShareDefine.Def_IudetPet_Star)
|
| | | starIpyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petItemNPCID, curStar)
|
| | | if starIpyData:
|
| | | starAttrType = starIpyData.GetStarAttrType()
|
| | | starAttrValue = starIpyData.GetStarAttrValue()
|
| | | for i, attrID in enumerate(starAttrType):
|
| | | attrValue = starAttrValue[i]
|
| | | PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
|
| | | |
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetSkin, allAttrListPetSkin)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_PetStar, allAttrListStar)
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Pet, fpExTotal)
|
| | | # GameWorld.DebugLog("宠物榜NPCID: %s, petDict=%s" % (billPetNPCID, str(billPetDict)))
|
| | | return
|
| | |
| | | RefreshPetItemAddAttr(curPlayer, True)
|
| | | return
|
| | |
|
| | | #// A7 06 宠物升星 #tagCMPetStarUp
|
| | | #
|
| | | #struct tagCMPetStarUp
|
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE PetItemIndex; //宠物数据背包索引
|
| | | #};
|
| | | def OnPetStarUp(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | PetItemIndex = clientData.PetItemIndex
|
| | | petDataItem = GetPetDataItemByIndex(curPlayer, PetItemIndex)
|
| | | if not petDataItem:
|
| | | return
|
| | | petNPCID = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_NPCID)
|
| | | curStar = petDataItem.GetUserAttr(ShareDefine.Def_IudetPet_Star)
|
| | | ipyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petNPCID, curStar)
|
| | | if not ipyData:
|
| | | return
|
| | | nextStar = curStar + 1
|
| | | nextIpyData = IpyGameDataPY.GetIpyGameData("PetStarUp", petNPCID, nextStar)
|
| | | needItemList = ipyData.GetStarUpNeedItemList()
|
| | | if not needItemList or not nextIpyData:
|
| | | GameWorld.DebugLog("灵宠已满星,无法升星. petNPCID=%s,curStar=%s" % (petNPCID, curStar), playerID)
|
| | | return
|
| | | itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
|
| | | lackItemDict, delInfoDict = ItemCommon.GetCostItemIndexList(needItemList, itemPack)
|
| | | if lackItemDict:
|
| | | GameWorld.DebugLog("灵宠升星所需物品不足! petNPCID=%s,curStar=%s,needItemList=%s,lackItemDict=%s" |
| | | % (petNPCID, curStar, needItemList, lackItemDict), playerID)
|
| | | return
|
| | | |
| | | ItemCommon.DelCostItem(curPlayer, itemPack, delInfoDict, "PetStarUp") |
| | | petDataItem.SetUserAttr(ShareDefine.Def_IudetPet_Star, nextStar)
|
| | | GameWorld.DebugLog("灵宠升星. petNPCID=%s,curStar=%s,nextStar=%s" % (petNPCID, curStar, nextStar), playerID)
|
| | | |
| | | RefreshPetItemAddAttr(curPlayer, True) |
| | | return
|
| | |
|
| | | def Sync_PetTrainData(curPlayer):
|
| | | clientPack = ChPyNetSendPack.tagMCPetTrainInfo()
|
| | | clientPack.TrainLVList = []
|
| | |
| | | Def_IudetPet_State = 204 # 当前状态, 对应 Def_PetStateList
|
| | | Def_IudetPet_QualityLV = 206 # 品质
|
| | | Def_IudetPet_Exp = 208 # 经验
|
| | | Def_IudetPet_Star = 210 # 星级
|
| | | Def_IudetPet_Skill = 201 # 技能列表
|
| | |
|
| | | Def_IudetHorsePetSkinIndex = 210 # 骑宠觉醒外观索引
|