7394 【2.0】【后端】雷罚BOSS(删除诛仙装备)
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 30 装备诛仙装备 #tagCMEquipZhuXianItem
|
| | |
|
| | | class tagCMEquipZhuXianItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
|
| | | ("ItemIndex", c_ubyte), #装备在诛仙物品背包中的索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x30
|
| | | 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 = 0x30
|
| | | self.EquipIndex = 0
|
| | | self.ItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMEquipZhuXianItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 30 装备诛仙装备 //tagCMEquipZhuXianItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | EquipIndex:%d,
|
| | | ItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.EquipIndex,
|
| | | self.ItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipZhuXianItem=tagCMEquipZhuXianItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipZhuXianItem.Cmd,m_NAtagCMEquipZhuXianItem.SubCmd))] = m_NAtagCMEquipZhuXianItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 12 守护拾取物品 #tagCMGuardPickupItem
|
| | |
|
| | | class tagCMGuardPickupItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem
|
| | |
|
| | | class tagCMUnEquipZhuXianItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x31
|
| | | 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 = 0x31
|
| | | self.EquipIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMUnEquipZhuXianItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 31 卸下诛仙装备 //tagCMUnEquipZhuXianItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | EquipIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.EquipIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMUnEquipZhuXianItem=tagCMUnEquipZhuXianItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnEquipZhuXianItem.Cmd,m_NAtagCMUnEquipZhuXianItem.SubCmd))] = m_NAtagCMUnEquipZhuXianItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 2B 一键使用属性果实 #tagCMUseAllAttrFruit
|
| | |
|
| | | class tagCMUseAllAttrFruit(Structure):
|
| | |
| | |
|
| | | m_NAtagCMWingUp=tagCMWingUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWingUp.Head.Cmd,m_NAtagCMWingUp.Head.SubCmd))] = m_NAtagCMWingUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose
|
| | |
|
| | | class tagCMZhuXianEquipDecompose(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//材料所在背包索引的数量
|
| | | IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
|
| | | ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
|
| | | IsAuto = 0 #(BYTE IsAuto)//是否自动分解
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x32
|
| | | 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.ReadWORD(_lpData,_pos)
|
| | | self.IndexList.append(value)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ItemIDList.append(value)
|
| | | self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x32
|
| | | self.Count = 0
|
| | | self.IndexList = list()
|
| | | self.ItemIDList = list()
|
| | | self.IsAuto = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2 * self.Count
|
| | | length += 4 * self.Count
|
| | | length += 1
|
| | |
|
| | | 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.WriteWORD(data, self.IndexList[i])
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.IsAuto)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | IndexList:%s,
|
| | | ItemIDList:%s,
|
| | | IsAuto:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "...",
|
| | | "...",
|
| | | self.IsAuto
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMZhuXianEquipDecompose=tagCMZhuXianEquipDecompose()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhuXianEquipDecompose.Head.Cmd,m_NAtagCMZhuXianEquipDecompose.Head.SubCmd))] = m_NAtagCMZhuXianEquipDecompose
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
|
| | |
|
| | | class tagMCZhuXianDecomposeItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), #物品ID
|
| | | ("ItemCnt", c_ubyte), #物品数量
|
| | | ("IsBind", 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.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCZhuXianDecomposeItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCZhuXianDecomposeResult(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(BYTE Cnt)//数量
|
| | | ItemList = list() #(vector<tagMCZhuXianDecomposeItem> ItemList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x15
|
| | | 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):
|
| | | temItemList = tagMCZhuXianDecomposeItem()
|
| | | _pos = temItemList.ReadData(_lpData, _pos)
|
| | | self.ItemList.append(temItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x15
|
| | | self.Cnt = 0
|
| | | self.ItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Cnt):
|
| | | length += self.ItemList[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.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | ItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
|
| | |
|
| | | class tagMCActLoginAwardAction(Structure):
|
| | |
| | | Def_Effect_JobBAtkReducePer = 94 # 法师攻击伤害减免
|
| | | Def_Effect_JobCAtkReducePer = 95 # 弓箭攻击伤害减免
|
| | |
|
| | | Def_Effect_ZXCloakAttrPer = 96 # 诛仙披风属性加成百分比
|
| | | Def_Effect_ZXMaskAttrPer = 97 # 诛仙面具属性加成百分比
|
| | | Def_Effect_ZXGloveAttrPer = 98 # 诛仙手套属性加成百分比
|
| | | Def_Effect_ZXRuyiAttrPer = 99 # 诛仙如意属性加成百分比
|
| | | Def_Effect_ZXPendantAttrPer = 100 # 诛仙吊坠属性加成百分比
|
| | | Def_Effect_ZXRingAttrPer = 101 # 诛仙戒指属性加成百分比
|
| | |
|
| | | Def_Effect_SkillAddPer1 = 102 # 技能伤害增强1
|
| | | Def_Effect_SkillAddPer2 = 103 # 技能伤害增强2
|
| | | Def_Effect_SkillAddPer3 = 104 # 技能伤害增强3
|
| | | Def_Effect_SkillAddPer4 = 105 # 技能伤害增强4
|
| | | Def_Effect_SkillAddPer5 = 106 # 技能伤害增强5
|
| | | Def_Effect_SkillAddPer6 = 107 # 技能伤害增强6
|
| | | Def_Effect_SkillAddPer7 = 108 # 技能伤害增强7
|
| | |
|
| | | Def_Effect_SkillReducePer1 = 109 # 受到技能伤害减少1
|
| | | Def_Effect_SkillReducePer2 = 110 # 受到技能伤害减少2
|
| | | Def_Effect_SkillReducePer3 = 111 # 受到技能伤害减少3
|
| | | Def_Effect_SkillReducePer4 = 112 # 受到技能伤害减少4
|
| | | Def_Effect_SkillReducePer5 = 113 # 受到技能伤害减少5
|
| | | Def_Effect_SkillReducePer6 = 114 # 受到技能伤害减少6
|
| | | Def_Effect_SkillReducePer7 = 115 # 受到技能伤害减少7
|
| | |
|
| | | Def_Effect_ZXWeaponAttrPer = 116 # 诛仙剑1属性加成百分比
|
| | | Def_Effect_LXWeaponAttrPer = 117 # 诛仙剑2属性加成百分比
|
| | | Def_Effect_XXWeaponAttrPer = 118 # 诛仙剑3属性加成百分比
|
| | | Def_Effect_JXWeaponAttrPer = 119 # 诛仙剑4属性加成百分比
|
| | |
|
| | | Def_Effect_Luck = 120 # 气运
|
| | | Def_Effect_LuckPer = 133 # 气运百分率
|
| | |
|
| | |
| | | rptPet, # 宠物背包(用物品存储宠物的数据) 31
|
| | | rptDogzItem, # 神兽物品背包 32
|
| | | rptDogzEquip, # 神兽装备背包 33
|
| | | rptZhuXianItem, # 诛仙物品背包 34
|
| | | rptZhuXianEquip, # 诛仙装备背包 35
|
| | | rptMax, # 最大背包类型数量,放在最后一个
|
| | | ) = range(28, 28 + 9) #C++定义的枚举到27
|
| | | ) = range(28, 28 + 7) #C++定义的枚举到27
|
| | |
|
| | | #虚拟背包类型, 从255递减
|
| | | Def_VPack_TypeList = (
|
| | |
| | | dogzetClaw, # 神兽兽爪
|
| | | dogzetScute, # 神兽鳞甲
|
| | | ) = range(101, 101 + 5)
|
| | |
|
| | | # 诛仙装备位定义
|
| | | ZhuXianEquipPlace = (
|
| | | zxetCloak, # 诛仙披风 121
|
| | | zxetMask, # 诛仙面具 122
|
| | | zxetGlove, # 诛仙手套 123
|
| | | zxetGlove2, # 诛仙手套 124
|
| | | zxetRuyi, # 诛仙如意 125
|
| | | zxetPendant, # 诛仙吊坠 126
|
| | | zxetRing, # 诛仙戒指 127
|
| | | zxetRing2, # 诛仙戒指 128
|
| | | zxetWeapon1, # 诛仙剑1 129
|
| | | zxetWeapon2, # 诛仙剑2 130
|
| | | zxetWeapon3, # 诛仙剑3 131
|
| | | zxetWeapon4, # 诛仙剑4 132
|
| | | ) = range(121, 121 + 12)
|
| | |
|
| | | # 共享通用装备位,可装备同一类型装备
|
| | | ShareEquipPlace = [
|
| | |
| | | PacketSubCMD_5=0xC4
|
| | | PacketCallFunc_5=OnDogzEquipPlus
|
| | |
|
| | | ;诛仙装备
|
| | | [EquipZhuXian]
|
| | | ScriptName = Item\EquipZhuXian.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 3
|
| | |
|
| | | PacketCMD_1=0xA3
|
| | | PacketSubCMD_1=0x30
|
| | | PacketCallFunc_1=OnEquipZhuXianItem
|
| | |
|
| | | PacketCMD_2=0xA3
|
| | | PacketSubCMD_2=0x31
|
| | | PacketCallFunc_2=OnUnEquipZhuXianItem
|
| | |
|
| | | PacketCMD_3=0xA3
|
| | | PacketSubCMD_3=0x32
|
| | | PacketCallFunc_3=OnZhuXianEquipDecompose
|
| | |
|
| | | ;个推
|
| | | [PlayerGeTui]
|
| | | ScriptName = Player\PlayerGeTui.py
|
| | |
| | | import ChPyNetSendPack
|
| | | import NetPackCommon
|
| | | import FamilyRobBoss
|
| | | #import EquipZhuXian
|
| | | import FBCommon
|
| | | import ChNPC
|
| | |
|
| | |
| | |
|
| | | addPer = 0
|
| | | reducePer = 0
|
| | | #addPer += EquipZhuXian.GetZhuXianEquipSkillAddPer(atkObj.GetPlayerID(), skillTypeID)
|
| | |
|
| | | if defObj.GetGameObjType() == IPY_GameWorld.gotPlayer:
|
| | | #reducePer = EquipZhuXian.GetZhuXianEquipSkillReducePer(defObj.GetPlayerID(), skillTypeID)
|
| | |
|
| | | #根据防守方职业 计算攻击方伤害加成
|
| | | if defObj.GetJob() in [ShareDefine.PlayerJob_Warrior, ShareDefine.PlayerJob_Knight]:
|
| | |
| | | Def_ItemType_DogzEquipScute = 123 # 神兽鳞甲
|
| | | Def_ItemType_AddCrossRealmPKCnt = 127 #增加跨服PK次数
|
| | |
|
| | | Def_ItemType_ZXCloak = 128 # 诛仙披风
|
| | | Def_ItemType_ZXMask = 129 # 诛仙面具
|
| | | Def_ItemType_ZXGlove = 130 # 诛仙手套
|
| | | Def_ItemType_ZXRuyi = 131 # 诛仙如意
|
| | | Def_ItemType_ZXPendant = 132 # 诛仙吊坠
|
| | | Def_ItemType_ZXRing = 133 # 诛仙戒指
|
| | | Def_ItemType_ZXWeapon1 = 134 # 诛仙剑1
|
| | | Def_ItemType_ZXWeapon2 = 135 # 诛仙剑2
|
| | | Def_ItemType_ZXWeapon3 = 136 # 诛仙剑3
|
| | | Def_ItemType_ZXWeapon4 = 137 # 诛仙剑4
|
| | | Def_ItemType_ZhuXianStuff = 138 # 诛仙材料
|
| | |
|
| | | Def_ItemType_DogzStuff = 139 # 神兽材料
|
| | | Def_ItemType_ZhuXianStone = 140 # 诛仙宝石
|
| | |
|
| | | #以下定义物品类型下次删除
|
| | | Def_Item_Type_Horse = 1000036 #坐骑
|
| | |
| | |
|
| | | Def_EquipItemType_TJGAutoEat = xrange(Def_ItemType_retWeapon, Def_ItemType_retShoes + 1)
|
| | | #装备类型
|
| | | Def_EquipItemType = range(Def_ItemType_retWeapon, Def_ItemType_DogzEquipScute + 1) + range(Def_ItemType_ZXCloak, Def_ItemType_ZXWeapon4 + 1)
|
| | | Def_EquipItemType = range(Def_ItemType_retWeapon, Def_ItemType_DogzEquipScute + 1)
|
| | |
|
| | | #神兽装备类型
|
| | | Def_DogzEquiipType = xrange(Def_ItemType_DogzEquipHorn, Def_ItemType_DogzEquipScute + 1)
|
| | |
|
| | | #诛仙装备类型
|
| | | Def_ZhuXianEquiipType = xrange(Def_ItemType_ZXCloak, Def_ItemType_ZXWeapon4 + 1)
|
| | |
|
| | | # 技能造成实质性伤害的类型
|
| | | Def_RealAttack_Type = [
|
| | |
| | | Def_PackCnt_DogzItem = 100
|
| | | #初始化神兽装备格子数
|
| | | Def_PackCnt_DogzEquip = 100
|
| | | #初始化诛仙背包格子数
|
| | | Def_PackCnt_ZhuXianItem = 100
|
| | | #初始化诛仙装备格子数
|
| | | Def_PackCnt_ZhuXianEquip = 12
|
| | | #初始化装备栏2
|
| | | Def_PackCnt_Equip2 = 0
|
| | | #初始化回收站
|
| | |
| | | ShareDefine.rptPet,
|
| | | ShareDefine.rptDogzItem,
|
| | | ShareDefine.rptDogzEquip,
|
| | | ShareDefine.rptZhuXianItem,
|
| | | ShareDefine.rptZhuXianEquip,
|
| | | ]
|
| | |
|
| | | #装备可强化背包列表
|
| | |
| | | #自动恢复计算间隔
|
| | | Def_HPRestoreInterval = 5000
|
| | | #允许重置的背包索引
|
| | | Def_CanItemResetPack = [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse, ShareDefine.rptTreasure, ShareDefine.rptZhuXianItem]
|
| | | Def_CanItemResetPack = [IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse, ShareDefine.rptTreasure]
|
| | | #仓库分页个数
|
| | | Def_ItemReset_WarehousePageCnt = 56
|
| | | #玩家捡起物品的距离 8
|
| | |
| | | #试炼之塔
|
| | | Def_Player_Dict_TrialTower_PassLV = "TrialTower_PassLV" # 试炼之塔通关层数
|
| | | Def_Player_Dict_TrialTower_LastDayPassLV = "Tower_LastDayPassLV" # 试炼之塔昨日通关层数
|
| | | #诛仙塔
|
| | | Def_Player_Dict_ZhuXianTowerPassLV = "ZhuXianTowerPassLV" # 诛仙塔已通关层数
|
| | | Def_Player_Dict_ZhuXianTowerLastFloor = "ZhuXianTowerLastFloor" # 诛仙塔上次挑战层数
|
| | | Def_Player_Dict_ZhuXianTowerCostTime = "ZhuXianTowerCostTime" # 诛仙塔通关时间
|
| | | #天星塔
|
| | | Def_Player_Dict_SkyTowerFloor = "SkyTowerFloor" # 天星塔已通关层数
|
| | |
|
| | |
| | | ItemDel_ChatBubbleBox, # 激活聊天气泡框
|
| | | ItemDel_GatherSoul, # 聚魂分解
|
| | | ItemDel_CoatDecompose, # 时装分解
|
| | | ItemDel_ZhuXianDecompose, # 诛仙装备分解
|
| | | ItemDel_2037,
|
| | | ItemDel_EquipStarUp, # 装备升星
|
| | | ItemDel_EquipPlusEvolve, # 装备强化进化
|
| | | ) = range(2000, 2000 + 40)
|
| | |
| | | ItemDel_ChatBubbleBox:"ChatBubbleBox",
|
| | | ItemDel_GatherSoul:"GatherSoul",
|
| | | ItemDel_CoatDecompose:"CoatDecompose",
|
| | | ItemDel_ZhuXianDecompose:"ZhuXianDecompose",
|
| | | ItemDel_EquipStarUp:"EquipStarUp",
|
| | | ItemDel_EquipPlusEvolve:"EquipPlusEvolve",
|
| | | }
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 30 装备诛仙装备 #tagCMEquipZhuXianItem
|
| | |
|
| | | class tagCMEquipZhuXianItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
|
| | | ("ItemIndex", c_ubyte), #装备在诛仙物品背包中的索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x30
|
| | | 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 = 0x30
|
| | | self.EquipIndex = 0
|
| | | self.ItemIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMEquipZhuXianItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 30 装备诛仙装备 //tagCMEquipZhuXianItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | EquipIndex:%d,
|
| | | ItemIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.EquipIndex,
|
| | | self.ItemIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMEquipZhuXianItem=tagCMEquipZhuXianItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipZhuXianItem.Cmd,m_NAtagCMEquipZhuXianItem.SubCmd))] = m_NAtagCMEquipZhuXianItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 12 守护拾取物品 #tagCMGuardPickupItem
|
| | |
|
| | | class tagCMGuardPickupItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem
|
| | |
|
| | | class tagCMUnEquipZhuXianItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("EquipIndex", c_ubyte), #装备在诛仙装备背包中的索引
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x31
|
| | | 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 = 0x31
|
| | | self.EquipIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagCMUnEquipZhuXianItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 31 卸下诛仙装备 //tagCMUnEquipZhuXianItem:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | EquipIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.EquipIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMUnEquipZhuXianItem=tagCMUnEquipZhuXianItem()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMUnEquipZhuXianItem.Cmd,m_NAtagCMUnEquipZhuXianItem.SubCmd))] = m_NAtagCMUnEquipZhuXianItem
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 2B 一键使用属性果实 #tagCMUseAllAttrFruit
|
| | |
|
| | | class tagCMUseAllAttrFruit(Structure):
|
| | |
| | |
|
| | | m_NAtagCMWingUp=tagCMWingUp()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMWingUp.Head.Cmd,m_NAtagCMWingUp.Head.SubCmd))] = m_NAtagCMWingUp
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 32 诛仙装备分解 #tagCMZhuXianEquipDecompose
|
| | |
|
| | | class tagCMZhuXianEquipDecompose(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//材料所在背包索引的数量
|
| | | IndexList = list() #(vector<WORD> IndexList)//材料所在背包索引列表
|
| | | ItemIDList = list() #(vector<DWORD> ItemIDList)//材料所在背包物品ID列表
|
| | | IsAuto = 0 #(BYTE IsAuto)//是否自动分解
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x32
|
| | | 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.ReadWORD(_lpData,_pos)
|
| | | self.IndexList.append(value)
|
| | | for i in range(self.Count):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ItemIDList.append(value)
|
| | | self.IsAuto,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x32
|
| | | self.Count = 0
|
| | | self.IndexList = list()
|
| | | self.ItemIDList = list()
|
| | | self.IsAuto = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 2 * self.Count
|
| | | length += 4 * self.Count
|
| | | length += 1
|
| | |
|
| | | 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.WriteWORD(data, self.IndexList[i])
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteDWORD(data, self.ItemIDList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.IsAuto)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | IndexList:%s,
|
| | | ItemIDList:%s,
|
| | | IsAuto:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "...",
|
| | | "...",
|
| | | self.IsAuto
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagCMZhuXianEquipDecompose=tagCMZhuXianEquipDecompose()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMZhuXianEquipDecompose.Head.Cmd,m_NAtagCMZhuXianEquipDecompose.Head.SubCmd))] = m_NAtagCMZhuXianEquipDecompose
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
|
| | |
|
| | | class tagMCZhuXianDecomposeItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), #物品ID
|
| | | ("ItemCnt", c_ubyte), #物品数量
|
| | | ("IsBind", 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.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCZhuXianDecomposeItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCZhuXianDecomposeResult(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(BYTE Cnt)//数量
|
| | | ItemList = list() #(vector<tagMCZhuXianDecomposeItem> ItemList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x15
|
| | | 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):
|
| | | temItemList = tagMCZhuXianDecomposeItem()
|
| | | _pos = temItemList.ReadData(_lpData, _pos)
|
| | | self.ItemList.append(temItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA8
|
| | | self.Head.SubCmd = 0x15
|
| | | self.Cnt = 0
|
| | | self.ItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Cnt):
|
| | | length += self.ItemList[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.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | ItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
|
| | |
|
| | | class tagMCActLoginAwardAction(Structure):
|
| | |
| | | import ShareDefine
|
| | | import EventShell
|
| | |
|
| | | # import EquipZhuXian
|
| | |
|
| | | g_stoneCanPlaceList = [] # 可镶嵌的位置
|
| | |
|
| | |
|
| | |
| | |
|
| | |
|
| | | def GetPackTypeByEquipPlace(equipPlace):
|
| | | ##目前支持镶嵌普通装备、诛仙装备
|
| | | # if equipPlace in ShareDefine.ZhuXianEquipPlace:
|
| | | # equipPackType = ShareDefine.rptZhuXianEquip
|
| | | # stonePackType = ShareDefine.rptZhuXianItem
|
| | | # placeIndex = EquipZhuXian.GetZhuXianEquipIndexByPlace(equipPlace)
|
| | | # else:
|
| | | ##目前支持镶嵌普通装备
|
| | | equipPackType = IPY_GameWorld.rptEquip
|
| | | stonePackType = IPY_GameWorld.rptItem
|
| | | placeIndex = equipPlace
|
| | |
| | | # 刷新所有属性
|
| | | playControl = PlayerControl.PlayerControl(curPlayer)
|
| | | playControl.RefreshPlayerAttrState()
|
| | | # elif packType == ShareDefine.rptZhuXianEquip:
|
| | | # EquipZhuXian.RefreshZhuXianAttr(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | |
| | |
|
| | | if curPlayer.GetOfficialRank() < ipyData.GetRealmLV():
|
| | | return
|
| | | # #诛仙总评分
|
| | | # if ItemCommon.GetZhuXianEquipTotalGS(curPlayer) < ipyData.GetZhuXianScore():
|
| | | # return
|
| | |
|
| | | enterCnt = curPlayer.NomalDictGetProperty(ChConfig.Def_Player_Dict_EnterFbCntDay % ChConfig.Def_FBMapID_ZhuXianBoss)
|
| | | if enterCnt >= FBCommon.GetEnterFBMaxCnt(curPlayer, ChConfig.Def_FBMapID_ZhuXianBoss):
|
| | |
| | |
|
| | | def __CrossServerPutInItem(self, packIndex, tagItem, event=["", False, {}]):
|
| | | ## 跨服获得物品
|
| | | if packIndex not in [IPY_GameWorld.rptItem, ShareDefine.rptDogzItem, ShareDefine.rptZhuXianItem]:
|
| | | if packIndex not in [IPY_GameWorld.rptItem, ShareDefine.rptDogzItem]:
|
| | | #GameWorld.DebugLog("跨服获得物品不同步, packIndex=%s" % (packIndex))
|
| | | return
|
| | | curPlayer = self.__Player
|
| | |
| | | SkillAtkRateReduce = 0#attrDict.get(ShareDefine.Def_Effect_SkillAtkRateReduce, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAtkRateReduceC())
|
| | | Hit = attrDict.get(ShareDefine.Def_Effect_Hit, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetHitC())
|
| | | Miss = attrDict.get(ShareDefine.Def_Effect_Miss, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetMissC())
|
| | | SkillAddPerA = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer1C())
|
| | | SkillAddPerB = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer2C())
|
| | | SkillAddPerC = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer3C())
|
| | | SkillAddPerD = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer4C())
|
| | | SkillAddPerE = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer5C())
|
| | | SkillAddPerF = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer6C())
|
| | | SkillAddPerG = 0#attrDict.get(ShareDefine.Def_Effect_SkillAddPer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer7C())
|
| | | SkillReducePerA = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer1C())
|
| | | SkillReducePerB = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer2C())
|
| | | SkillReducePerC = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer3C())
|
| | | SkillReducePerD = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer4C())
|
| | | SkillReducePerE = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer5C())
|
| | | SkillReducePerF = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer6C())
|
| | | SkillReducePerG = 0#attrDict.get(ShareDefine.Def_Effect_SkillReducePer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer7C())
|
| | | SkillAddPerA = 0
|
| | | SkillAddPerB = 0
|
| | | SkillAddPerC = 0
|
| | | SkillAddPerD = 0
|
| | | SkillAddPerE = 0
|
| | | SkillAddPerF = 0
|
| | | SkillAddPerG = 0
|
| | | SkillReducePerA = 0
|
| | | SkillReducePerB = 0
|
| | | SkillReducePerC = 0
|
| | | SkillReducePerD = 0
|
| | | SkillReducePerE = 0
|
| | | SkillReducePerF = 0
|
| | | SkillReducePerG = 0
|
| | |
|
| | | # 攻速不默认乘,仅作为参数提供策划使用
|
| | | AtkSpeed = 0#attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
|
| | |
| | | value = eval(FormulaControl.GetCompileFormula("EquipGSFormula", IpyGameDataPY.GetFuncCfg("EquipGSFormula")))
|
| | | value += gsValueEx
|
| | | return value
|
| | |
|
| | | def GetZhuXianEquipTotalGS(curPlayer):
|
| | | ##诛仙装备总评分
|
| | | equipScoreTotal = 0
|
| | | zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
|
| | | for equipIndex in xrange(zhuXianEquipPack.GetCount()):
|
| | | curEquip = zhuXianEquipPack.GetAt(equipIndex) |
| | | if curEquip.IsEmpty():
|
| | | continue
|
| | | equipScoreTotal += GetEquipGearScore(curEquip)
|
| | | return equipScoreTotal
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ## 通过效果ID,检查是否为指定物品
|
| | |
| | | # @remarks 函数详细说明.
|
| | | def SwitchItem(curPlayer, curItem, switchItem, putInPackIndex):
|
| | | ##物品绑定字段判定 -> 装备绑定
|
| | | if putInPackIndex in [IPY_GameWorld.rptEquip, ShareDefine.rptZhuXianEquip]:
|
| | | if putInPackIndex in [IPY_GameWorld.rptEquip]:
|
| | | DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
|
| | |
|
| | | # 装备技能书、坐骑装备绑定
|
| | | if putInPackIndex in [IPY_GameWorld.rptHorseEquip, ShareDefine.rptZhuXianEquip]:
|
| | | if putInPackIndex in [IPY_GameWorld.rptHorseEquip]:
|
| | | DoLogic_ItemBindType(curPlayer, curItem, ChConfig.Def_BindType_DoEquipBind)
|
| | |
|
| | | #交换装备
|
| | |
| | | return
|
| | |
|
| | | ##物品绑定字段判定 -> 装备绑定
|
| | | if putInPackIndex in [IPY_GameWorld.rptEquip, ShareDefine.rptZhuXianEquip]:
|
| | | if putInPackIndex in [IPY_GameWorld.rptEquip]:
|
| | | DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
|
| | |
|
| | | # 装备技能书、坐骑装备绑定
|
| | | if putInPackIndex in [IPY_GameWorld.rptHorseEquip, ShareDefine.rptZhuXianEquip]:
|
| | | if putInPackIndex in [IPY_GameWorld.rptHorseEquip]:
|
| | | DoLogic_ItemBindType(curPlayer, emptyItem, ChConfig.Def_BindType_DoEquipBind)
|
| | |
|
| | | if switchItem.GetGameWorldItemType() == IPY_GameWorld.gwitRoleItem:
|
| | |
| | | def GetIsDogzEquip(curItem):
|
| | | ## 返回是否神兽装备
|
| | | return curItem.GetType() in ChConfig.Def_DogzEquiipType
|
| | |
|
| | | def GetIsZhuXianEquip(curItem):
|
| | | ## 返回是否诛仙装备
|
| | | return curItem.GetType() in ChConfig.Def_ZhuXianEquiipType
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | ##遍历数据库查找合适的物品, 通过 效果ID + 效果A值确定物品
|
| | |
| | | curPack.SetCount(ChConfig.Def_PackCnt_DogzEquip)
|
| | | curPack.Sync_PackCanUseCount()
|
| | |
|
| | | #初始化诛仙物品背包
|
| | | curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianItem)
|
| | | curPack.SetCount(ChConfig.Def_PackCnt_ZhuXianItem)
|
| | | curPack.Sync_PackCanUseCount()
|
| | | #初始化诛仙装备背包
|
| | | curPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
|
| | | curPack.SetCount(ChConfig.Def_PackCnt_ZhuXianEquip)
|
| | | curPack.Sync_PackCanUseCount()
|
| | | |
| | | #初始化临时交换背包
|
| | | curPack = itemManager.GetPack(ShareDefine.rptTempSwap)
|
| | | curPack.SetCount(ChConfig.Def_PackCnt_TempSwap)
|
| | |
| | | itemsDict = {}
|
| | | # 影响战力的物品,新功能注意添加,下次需要加上诛仙塔
|
| | |
|
| | | packList = [IPY_GameWorld.rptEquip, ShareDefine.rptPet, ShareDefine.rptDogzEquip, ShareDefine.rptZhuXianEquip]
|
| | | packList = [IPY_GameWorld.rptEquip, ShareDefine.rptPet, ShareDefine.rptDogzEquip]
|
| | | for packIndex in packList:
|
| | | curPack = curPlayer.GetItemManager().GetPack(packIndex)
|
| | | for i in range(curPack.GetCount()):
|
| | |
| | | import CrossRealmPlayer
|
| | | import CrossPlayerData
|
| | | import ChNetSendPack
|
| | | #import EquipZhuXian
|
| | | import PlayerCoat
|
| | | import PlayerState
|
| | | import QuestCommon
|
| | |
| | | CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
|
| | | PyGameData.g_fbBuyBuffTimeDict.pop(playerID, None)
|
| | | #清除地图玩家缓存
|
| | | PyGameData.g_zhuXianSkillAddPerDict.pop(playerID, None)
|
| | | PyGameData.g_zhuXianSkillReducePerDict.pop(playerID, None)
|
| | | PyGameData.g_playerFuncAttrDict.pop(playerID, None)
|
| | | PyGameData.g_playerEquipPartAttrDict.pop(playerID, None)
|
| | | PyGameData.g_equipChangeClassLVInfo.pop(playerID, None)
|
| | |
| | | PlayerFamilyTech.CalcFamilyTechAttr(curPlayer)
|
| | | PlayerEquipDecompose.RefreshEDAttr(curPlayer)
|
| | | PlayerDogz.RefreshDogzAttr(curPlayer)
|
| | | #EquipZhuXian.CalcZhuXianAttr(curPlayer)
|
| | | PlayerGatherSoul.RefreshGatherSoulAttr(curPlayer)
|
| | | PlayerCoat.CalcClothesCoatSkinAttr(curPlayer)
|
| | | self.RefreshAllState(isForce=True)
|
| | |
| | | g_crossPlayerSkillsChangeInfo = {} #跨服玩家技能变化信息 {playerID:[技能ID], ...}
|
| | |
|
| | | g_ZhuXianBossPlayerHurtDict = {} #诛仙BOSS玩家伤害排行信息
|
| | | g_zhuXianSkillAddPerDict = {} # 诛仙装备对技能增强缓存 {playerID:{技能TypeID:数值, ...}, ...}
|
| | | g_zhuXianSkillReducePerDict = {} # 诛仙装备对技能减伤缓存 {playerID:{技能TypeID:数值, ...}, ...}
|
| | |
|
| | | g_Qudao_DoubleBill = {} # 渠道删档充值返利
|
| | |
|
| | |
| | | Def_Effect_JobBAtkReducePer = 94 # 法师攻击伤害减免
|
| | | Def_Effect_JobCAtkReducePer = 95 # 弓箭攻击伤害减免
|
| | |
|
| | | Def_Effect_ZXCloakAttrPer = 96 # 诛仙披风属性加成百分比
|
| | | Def_Effect_ZXMaskAttrPer = 97 # 诛仙面具属性加成百分比
|
| | | Def_Effect_ZXGloveAttrPer = 98 # 诛仙手套属性加成百分比
|
| | | Def_Effect_ZXRuyiAttrPer = 99 # 诛仙如意属性加成百分比
|
| | | Def_Effect_ZXPendantAttrPer = 100 # 诛仙吊坠属性加成百分比
|
| | | Def_Effect_ZXRingAttrPer = 101 # 诛仙戒指属性加成百分比
|
| | |
|
| | | Def_Effect_SkillAddPer1 = 102 # 技能伤害增强1
|
| | | Def_Effect_SkillAddPer2 = 103 # 技能伤害增强2
|
| | | Def_Effect_SkillAddPer3 = 104 # 技能伤害增强3
|
| | | Def_Effect_SkillAddPer4 = 105 # 技能伤害增强4
|
| | | Def_Effect_SkillAddPer5 = 106 # 技能伤害增强5
|
| | | Def_Effect_SkillAddPer6 = 107 # 技能伤害增强6
|
| | | Def_Effect_SkillAddPer7 = 108 # 技能伤害增强7
|
| | |
|
| | | Def_Effect_SkillReducePer1 = 109 # 受到技能伤害减少1
|
| | | Def_Effect_SkillReducePer2 = 110 # 受到技能伤害减少2
|
| | | Def_Effect_SkillReducePer3 = 111 # 受到技能伤害减少3
|
| | | Def_Effect_SkillReducePer4 = 112 # 受到技能伤害减少4
|
| | | Def_Effect_SkillReducePer5 = 113 # 受到技能伤害减少5
|
| | | Def_Effect_SkillReducePer6 = 114 # 受到技能伤害减少6
|
| | | Def_Effect_SkillReducePer7 = 115 # 受到技能伤害减少7
|
| | |
|
| | | Def_Effect_ZXWeaponAttrPer = 116 # 诛仙剑1属性加成百分比
|
| | | Def_Effect_LXWeaponAttrPer = 117 # 诛仙剑2属性加成百分比
|
| | | Def_Effect_XXWeaponAttrPer = 118 # 诛仙剑3属性加成百分比
|
| | | Def_Effect_JXWeaponAttrPer = 119 # 诛仙剑4属性加成百分比
|
| | |
|
| | | Def_Effect_Luck = 120 # 气运
|
| | | Def_Effect_LuckPer = 133 # 气运百分率
|
| | |
|
| | |
| | | rptPet, # 宠物背包(用物品存储宠物的数据) 31
|
| | | rptDogzItem, # 神兽物品背包 32
|
| | | rptDogzEquip, # 神兽装备背包 33
|
| | | rptZhuXianItem, # 诛仙物品背包 34
|
| | | rptZhuXianEquip, # 诛仙装备背包 35
|
| | | rptMax, # 最大背包类型数量,放在最后一个
|
| | | ) = range(28, 28 + 9) #C++定义的枚举到27
|
| | | ) = range(28, 28 + 7) #C++定义的枚举到27
|
| | |
|
| | | #虚拟背包类型, 从255递减
|
| | | Def_VPack_TypeList = (
|
| | |
| | | dogzetClaw, # 神兽兽爪
|
| | | dogzetScute, # 神兽鳞甲
|
| | | ) = range(101, 101 + 5)
|
| | |
|
| | | # 诛仙装备位定义
|
| | | ZhuXianEquipPlace = (
|
| | | zxetCloak, # 诛仙披风 121
|
| | | zxetMask, # 诛仙面具 122
|
| | | zxetGlove, # 诛仙手套 123
|
| | | zxetGlove2, # 诛仙手套 124
|
| | | zxetRuyi, # 诛仙如意 125
|
| | | zxetPendant, # 诛仙吊坠 126
|
| | | zxetRing, # 诛仙戒指 127
|
| | | zxetRing2, # 诛仙戒指 128
|
| | | zxetWeapon1, # 诛仙剑1 129
|
| | | zxetWeapon2, # 诛仙剑2 130
|
| | | zxetWeapon3, # 诛仙剑3 131
|
| | | zxetWeapon4, # 诛仙剑4 132
|
| | | ) = range(121, 121 + 12)
|
| | |
|
| | | # 共享通用装备位,可装备同一类型装备
|
| | | ShareEquipPlace = [
|
| | |
| | | import IpyGameDataPY
|
| | | import PyGameData
|
| | | import EventShell
|
| | | #import EquipZhuXian
|
| | | #---------------------------------------------------------------------
|
| | | GameWorld.ImportAll("Script\\Skill\\" , "GameSkills")
|
| | | GameWorld.ImportAll("Script\\Skill\\" , "GameBuffs")
|
| | |
| | | if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_GiftSkill:
|
| | | if not PlayerGreatMaster.GetGreatMasterFreeSkillPoint(curPlayer):
|
| | | return False
|
| | | #诛仙技能学习判断
|
| | | #if upSkill.GetFuncType() == ChConfig.Def_SkillFuncType_ZhuXian:
|
| | | # if not EquipZhuXian.CheckLearnZhuXianSkill(curPlayer, curSkillTypeID):
|
| | | # return False
|
| | |
|
| | | #经验检测
|
| | | skillLvUpNeedExp = upSkill.GetLVUpCostExp()
|