| | |
| | | DWORD CftSpeedPer; //移动速度百分比系数
|
| | | DWORD CftAtkPer; //攻击百分比系数
|
| | | DWORD CftMaxHPPer; //生命百分比系数
|
| | | DWORD CftJobAHurtAddPer; //对目标战士伤害加成
|
| | | DWORD CftJobBHurtAddPer; //对目标法师伤害加成
|
| | | DWORD CftJobCHurtAddPer; //对目标弓箭伤害加成
|
| | | DWORD CftJobAAtkReducePer; //战士攻击伤害减免
|
| | | DWORD CftJobBAtkReducePer; //法师攻击伤害减免
|
| | | DWORD CftJobCAtkReducePer; //弓箭攻击伤害减免
|
| | | };
|
| | |
|
| | | //NPC掉落表
|
| | |
| | | DWORD SkillAtkRateReduceC; // 技能减伤百分比系数
|
| | | DWORD HitC; // 命中系数
|
| | | DWORD MissC; // 闪避系数
|
| | | DWORD SkillAddPer1C; // 技能伤害增强1系数
|
| | | DWORD SkillAddPer2C; // 技能伤害增强2系数
|
| | | DWORD SkillAddPer3C; // 技能伤害增强3系数
|
| | | DWORD SkillAddPer4C; // 技能伤害增强4系数
|
| | | DWORD SkillAddPer5C; // 技能伤害增强5系数
|
| | | DWORD SkillAddPer6C; // 技能伤害增强6系数
|
| | | DWORD SkillAddPer7C; // 技能伤害增强7系数
|
| | | DWORD SkillReducePer1C; // 受到技能伤害减少1系数
|
| | | DWORD SkillReducePer2C; // 受到技能伤害减少2系数
|
| | | DWORD SkillReducePer3C; // 受到技能伤害减少3系数
|
| | | DWORD SkillReducePer4C; // 受到技能伤害减少4系数
|
| | | DWORD SkillReducePer5C; // 受到技能伤害减少5系数
|
| | | DWORD SkillReducePer6C; // 受到技能伤害减少6系数
|
| | | DWORD SkillReducePer7C; // 受到技能伤害减少7系数
|
| | | };
|
| | |
|
| | | //成就表
|
| | |
| | | list Reward; //奖励物品
|
| | | };
|
| | |
|
| | | //诛仙装备套装属性表
|
| | |
|
| | | struct tagZhuXianSuitAttr
|
| | | {
|
| | | BYTE _SuitType; //套装类型
|
| | | BYTE _SuitLV; //套装等级
|
| | | list SuitAttrIDList; //属性ID列表
|
| | | list SuitAttrValueList; //属性值列表
|
| | | };
|
| | |
|
| | | //诛仙BOSS表
|
| | |
|
| | | struct tagZhuXianBoss
|
| | |
| | |
|
| | | Def_Effect_NPCHurtAddPer = 89 # 对怪物伤害加成
|
| | |
|
| | | Def_Effect_JobAHurtAddPer = 90 # 对目标战士伤害加成
|
| | | Def_Effect_JobBHurtAddPer = 91 # 对目标法师伤害加成
|
| | | Def_Effect_JobCHurtAddPer = 92 # 对目标弓箭伤害加成
|
| | | Def_Effect_JobAAtkReducePer = 93 # 战士攻击伤害减免
|
| | | 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
|
| | |
|
| | | #增加%d物理伤害值,其中a值为伤害值
|
| | | Def_Effect_AddAtk = 1005
|
| | | #增加%d魔法伤害值,其中a值为伤害值
|
| | |
| | | )=range(5)
|
| | |
|
| | | # 战斗力模块类型
|
| | | Def_MFPType_Max = 28
|
| | | Def_MFPType_Max = 29
|
| | | ModuleFightPowerTypeList = (
|
| | | Def_MFPType_Role, # 角色 0
|
| | | Def_MFPType_Equip, # 装备(基本装备位) 1
|
| | |
| | | Def_MFPType_GatherSoul, # 聚魂 22
|
| | | Def_MFPType_MagicWeapon4, # 王者法宝 23
|
| | | Def_MFPType_Coat, # ʱװ 24
|
| | | Def_MFPType_ZhuXian, # 诛仙 25
|
| | | Def_MFPType_Other, # 其他
|
| | |
|
| | | #以下暂时没用到,改时再处理
|
| | |
| | | zxetWeapon4, # 诛仙剑4 132
|
| | | ) = range(121, 121 + 12)
|
| | |
|
| | | # 共享通用装备位,可装备同一类型装备
|
| | | ShareEquipPlace = [
|
| | | [zxetGlove, zxetGlove2],
|
| | | [zxetRing, zxetRing2],
|
| | | ]
|
| | |
|
| | | # 请求进入副本通用检查结果,优先提示的放前面(即索引越大,提示优先级越低)
|
| | | EnterFBAskResult = (
|
| | |
| | | PacketSubCMD_5=0xC4
|
| | | PacketCallFunc_5=OnDogzEquipPlus
|
| | |
|
| | | ;诛仙装备
|
| | | [EquipZhuXian]
|
| | | ScriptName = Item\EquipZhuXian.py
|
| | | Writer = hxp
|
| | | Releaser = hxp
|
| | | RegType = 0
|
| | | RegisterPackCount = 2
|
| | |
|
| | | PacketCMD_1=0xA3
|
| | | PacketSubCMD_1=0x30
|
| | | PacketCallFunc_1=OnEquipZhuXianItem
|
| | |
|
| | | PacketCMD_2=0xA3
|
| | | PacketSubCMD_2=0x31
|
| | | PacketCallFunc_2=OnUnEquipZhuXianItem
|
| | |
|
| | | ;个推
|
| | | [PlayerGeTui]
|
| | | ScriptName = Player\PlayerGeTui.py
|
| | |
| | | # 理论伤害一致, 多加点预算伤害避免计算误差
|
| | | #hurtValue = min(ShareDefine.Def_UpperLimit_DWord, hurtValue+10)
|
| | | #atkObj.SetDict(ChConfig.Def_PlayerKey_ClientMaxHurtValue, int(hurtValue*1.2))
|
| | | hurtValue = atkObj.GetMaxAtk()*atkSkillPer*20 # 加入被动计算不准确改成估算
|
| | | hurtValue = atkObj.GetMaxAtk()*atkSkillPer*40 # 加入被动计算不准确改成估算
|
| | |
|
| | | clientValue, hurtType = SkillShell.GetClientHurtByObj(defObj.GetID(), defObjType)
|
| | | if clientValue <= hurtValue:
|
| | |
| | | AttrName_SuperHit:[[TYPE_Calc_SuperHit], False, TYPE_Linear],
|
| | | AttrName_NPCHurtAddPer:[[TYPE_Calc_NPCHurtAddPer], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_NPCHurtAddPer:[[TYPE_Calc_NPCHurtAddPer], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_JobAHurtAddPer:[[TYPE_Calc_JobAHurtAddPer], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_JobBHurtAddPer:[[TYPE_Calc_JobBHurtAddPer], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_JobCHurtAddPer:[[TYPE_Calc_JobCHurtAddPer], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_JobAAtkReducePer:[[TYPE_Calc_JobAAtkReducePer], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_JobBAtkReducePer:[[TYPE_Calc_JobBAtkReducePer], False, TYPE_Linear],
|
| | | ShareDefine.Def_Effect_JobCAtkReducePer:[[TYPE_Calc_JobCAtkReducePer], False, TYPE_Linear],
|
| | | AttrName_JobAHurtAddPer:[[TYPE_Calc_JobAHurtAddPer], False, TYPE_Linear],
|
| | | AttrName_JobBHurtAddPer:[[TYPE_Calc_JobBHurtAddPer], False, TYPE_Linear],
|
| | | AttrName_JobCHurtAddPer:[[TYPE_Calc_JobCHurtAddPer], False, TYPE_Linear],
|
| | |
| | | Def_CalcAttrFunc_GatherSoul, # 聚魂39
|
| | | Def_CalcAttrFunc_MagicWeapon4, # 王者法宝40
|
| | | Def_CalcAttrFunc_Coat, # ʱװ41
|
| | | ) = range(42)
|
| | | Def_CalcAttrFunc_ZXEquip, # 诛仙装备42
|
| | | Def_CalcAttrFunc_ZXEquipSuit, # 诛仙装备套装43
|
| | | ) = range(44)
|
| | |
|
| | |
|
| | | # 在此列表中的功能属性,不享受百分比加成,--属性参与战力计算
|
| | |
| | | ShareDefine.Def_MFPType_MagicWeaponSoul:[Def_CalcAttrFunc_MagicWeaponSoul],
|
| | | ShareDefine.Def_MFPType_GatherSoul:[Def_CalcAttrFunc_GatherSoul],
|
| | | ShareDefine.Def_MFPType_Coat:[Def_CalcAttrFunc_Coat],
|
| | | # 神兽战力同装备模块战力一致,受评分影响,装备评分相关的战力另外算
|
| | | # 诛仙装备战力、神兽战力同装备模块战力一致,受评分影响,装备评分相关的战力另外算
|
| | | ShareDefine.Def_MFPType_Dogz:[Def_CalcAttrFunc_Dogz, Def_CalcAttrFunc_DogzEquipPlus],
|
| | | ShareDefine.Def_MFPType_ZhuXian:[Def_CalcAttrFunc_ZXEquipSuit],
|
| | | ShareDefine.Def_MFPType_Other:[Def_CalcAttrFunc_Success, Def_CalcAttrFunc_FamilyTech, Def_CalcAttrFunc_EquipDecompose],
|
| | | }
|
| | |
|
| | |
| | | Def_SkillFuncType_SkillRoll, #10为翻滚 服务端未用到
|
| | | Def_SkillFuncType_RealmSuppress, #11为境界压制 目前是NPC在用
|
| | | Def_SkillFuncType_Dogz, #12 神兽技能
|
| | | ) = range(13)
|
| | | Def_SkillFuncType_ZhuXian, #13 诛仙技能
|
| | | ) = range(14)
|
| | |
|
| | | # 受技能效果完全影响的怪, 对应 Def_BattleRelationType_CommNoBoss
|
| | | Def_SkillAttack_NPCIsBoss = [ Def_NPCType_Ogre_Normal , #平凡小怪 0 # c++ 定义为普通NPC视野刷新
|
| | |
| | | ShareDefine.Def_MFPType_MagicWeaponSoul:"法宝之魂",
|
| | | ShareDefine.Def_MFPType_Dogz:"神兽",
|
| | | ShareDefine.Def_MFPType_Coat:"ʱװ",
|
| | | ShareDefine.Def_MFPType_ZhuXian:"诛仙",
|
| | | ShareDefine.Def_MFPType_Other:"其他",
|
| | | }
|
| | |
|
| | |
| | | ChConfig.Def_CalcAttrFunc_MagicWeaponSoul:"法宝之魂",
|
| | | ChConfig.Def_CalcAttrFunc_Dogz:"神兽",
|
| | | ChConfig.Def_CalcAttrFunc_Coat:"ʱװ",
|
| | | ChConfig.Def_CalcAttrFunc_ZXEquip:"诛仙装备",
|
| | | ChConfig.Def_CalcAttrFunc_ZXEquipSuit:"诛仙装备套装",
|
| | | }
|
| | |
|
| | | GameWorld.DebugAnswer(curPlayer, "PrintFightPower 模块类型(可选)")
|
| | |
| | | ("DWORD", "CftSpeedPer", 0),
|
| | | ("DWORD", "CftAtkPer", 0),
|
| | | ("DWORD", "CftMaxHPPer", 0),
|
| | | ("DWORD", "CftJobAHurtAddPer", 0),
|
| | | ("DWORD", "CftJobBHurtAddPer", 0),
|
| | | ("DWORD", "CftJobCHurtAddPer", 0),
|
| | | ("DWORD", "CftJobAAtkReducePer", 0),
|
| | | ("DWORD", "CftJobBAtkReducePer", 0),
|
| | | ("DWORD", "CftJobCAtkReducePer", 0),
|
| | | ),
|
| | |
|
| | | "NPCDropItem":(
|
| | |
| | | ("DWORD", "SkillAtkRateReduceC", 0),
|
| | | ("DWORD", "HitC", 0),
|
| | | ("DWORD", "MissC", 0),
|
| | | ("DWORD", "SkillAddPer1C", 0),
|
| | | ("DWORD", "SkillAddPer2C", 0),
|
| | | ("DWORD", "SkillAddPer3C", 0),
|
| | | ("DWORD", "SkillAddPer4C", 0),
|
| | | ("DWORD", "SkillAddPer5C", 0),
|
| | | ("DWORD", "SkillAddPer6C", 0),
|
| | | ("DWORD", "SkillAddPer7C", 0),
|
| | | ("DWORD", "SkillReducePer1C", 0),
|
| | | ("DWORD", "SkillReducePer2C", 0),
|
| | | ("DWORD", "SkillReducePer3C", 0),
|
| | | ("DWORD", "SkillReducePer4C", 0),
|
| | | ("DWORD", "SkillReducePer5C", 0),
|
| | | ("DWORD", "SkillReducePer6C", 0),
|
| | | ("DWORD", "SkillReducePer7C", 0),
|
| | | ),
|
| | |
|
| | | "Success":(
|
| | |
| | | ("DWORD", "TotalTimes", 0),
|
| | | ("WORD", "SingleTimes", 0),
|
| | | ("list", "Reward", 0),
|
| | | ),
|
| | |
|
| | | "ZhuXianSuitAttr":(
|
| | | ("BYTE", "SuitType", 1),
|
| | | ("BYTE", "SuitLV", 1),
|
| | | ("list", "SuitAttrIDList", 0),
|
| | | ("list", "SuitAttrValueList", 0),
|
| | | ),
|
| | |
|
| | | "ZhuXianBoss":(
|
| | |
| | | self.CftSpeedPer = 0
|
| | | self.CftAtkPer = 0
|
| | | self.CftMaxHPPer = 0 |
| | | self.CftJobAHurtAddPer = 0
|
| | | self.CftJobBHurtAddPer = 0
|
| | | self.CftJobCHurtAddPer = 0
|
| | | self.CftJobAAtkReducePer = 0
|
| | | self.CftJobBAtkReducePer = 0
|
| | | self.CftJobCAtkReducePer = 0 |
| | | return |
| | | |
| | | def GetLV(self): return self.LV # 等级
|
| | |
| | | def GetCftSpeedPer(self): return self.CftSpeedPer # 移动速度百分比系数
|
| | | def GetCftAtkPer(self): return self.CftAtkPer # 攻击百分比系数
|
| | | def GetCftMaxHPPer(self): return self.CftMaxHPPer # 生命百分比系数 |
| | | def GetCftJobAHurtAddPer(self): return self.CftJobAHurtAddPer # 对目标战士伤害加成
|
| | | def GetCftJobBHurtAddPer(self): return self.CftJobBHurtAddPer # 对目标法师伤害加成
|
| | | def GetCftJobCHurtAddPer(self): return self.CftJobCHurtAddPer # 对目标弓箭伤害加成
|
| | | def GetCftJobAAtkReducePer(self): return self.CftJobAAtkReducePer # 战士攻击伤害减免
|
| | | def GetCftJobBAtkReducePer(self): return self.CftJobBAtkReducePer # 法师攻击伤害减免
|
| | | def GetCftJobCAtkReducePer(self): return self.CftJobCAtkReducePer # 弓箭攻击伤害减免 |
| | | |
| | | # NPC掉落表 |
| | | class IPY_NPCDropItem(): |
| | |
| | | self.SkillAtkRateReduceC = 0
|
| | | self.HitC = 0
|
| | | self.MissC = 0 |
| | | self.SkillAddPer1C = 0
|
| | | self.SkillAddPer2C = 0
|
| | | self.SkillAddPer3C = 0
|
| | | self.SkillAddPer4C = 0
|
| | | self.SkillAddPer5C = 0
|
| | | self.SkillAddPer6C = 0
|
| | | self.SkillAddPer7C = 0
|
| | | self.SkillReducePer1C = 0
|
| | | self.SkillReducePer2C = 0
|
| | | self.SkillReducePer3C = 0
|
| | | self.SkillReducePer4C = 0
|
| | | self.SkillReducePer5C = 0
|
| | | self.SkillReducePer6C = 0
|
| | | self.SkillReducePer7C = 0 |
| | | return |
| | | |
| | | def GetClassLV(self): return self.ClassLV # 装备阶级
|
| | |
| | | def GetSkillAtkRateReduceC(self): return self.SkillAtkRateReduceC # 技能减伤百分比系数
|
| | | def GetHitC(self): return self.HitC # 命中系数
|
| | | def GetMissC(self): return self.MissC # 闪避系数 |
| | | def GetSkillAddPer1C(self): return self.SkillAddPer1C # 技能伤害增强1系数
|
| | | def GetSkillAddPer2C(self): return self.SkillAddPer2C # 技能伤害增强2系数
|
| | | def GetSkillAddPer3C(self): return self.SkillAddPer3C # 技能伤害增强3系数
|
| | | def GetSkillAddPer4C(self): return self.SkillAddPer4C # 技能伤害增强4系数
|
| | | def GetSkillAddPer5C(self): return self.SkillAddPer5C # 技能伤害增强5系数
|
| | | def GetSkillAddPer6C(self): return self.SkillAddPer6C # 技能伤害增强6系数
|
| | | def GetSkillAddPer7C(self): return self.SkillAddPer7C # 技能伤害增强7系数
|
| | | def GetSkillReducePer1C(self): return self.SkillReducePer1C # 受到技能伤害减少1系数
|
| | | def GetSkillReducePer2C(self): return self.SkillReducePer2C # 受到技能伤害减少2系数
|
| | | def GetSkillReducePer3C(self): return self.SkillReducePer3C # 受到技能伤害减少3系数
|
| | | def GetSkillReducePer4C(self): return self.SkillReducePer4C # 受到技能伤害减少4系数
|
| | | def GetSkillReducePer5C(self): return self.SkillReducePer5C # 受到技能伤害减少5系数
|
| | | def GetSkillReducePer6C(self): return self.SkillReducePer6C # 受到技能伤害减少6系数
|
| | | def GetSkillReducePer7C(self): return self.SkillReducePer7C # 受到技能伤害减少7系数 |
| | | |
| | | # 成就表 |
| | | class IPY_Success(): |
| | |
| | | def GetSingleTimes(self): return self.SingleTimes # 单次领奖需要的次数
|
| | | def GetReward(self): return self.Reward # 奖励物品 |
| | | |
| | | # 诛仙装备套装属性表 |
| | | class IPY_ZhuXianSuitAttr(): |
| | | |
| | | def __init__(self): |
| | | self.SuitType = 0
|
| | | self.SuitLV = 0
|
| | | self.SuitAttrIDList = []
|
| | | self.SuitAttrValueList = [] |
| | | return |
| | | |
| | | def GetSuitType(self): return self.SuitType # 套装类型
|
| | | def GetSuitLV(self): return self.SuitLV # 套装等级
|
| | | def GetSuitAttrIDList(self): return self.SuitAttrIDList # 属性ID列表
|
| | | def GetSuitAttrValueList(self): return self.SuitAttrValueList # 属性值列表 |
| | | |
| | | # 诛仙BOSS表 |
| | | class IPY_ZhuXianBoss(): |
| | | |
| | |
| | | self.ipyActLoginAwardLen = len(self.ipyActLoginAwardCache)
|
| | | self.ipyLoginAwardCache = self.__LoadFileData("LoginAward", IPY_LoginAward)
|
| | | self.ipyLoginAwardLen = len(self.ipyLoginAwardCache)
|
| | | self.ipyZhuXianSuitAttrCache = self.__LoadFileData("ZhuXianSuitAttr", IPY_ZhuXianSuitAttr)
|
| | | self.ipyZhuXianSuitAttrLen = len(self.ipyZhuXianSuitAttrCache)
|
| | | self.ipyZhuXianBossCache = self.__LoadFileData("ZhuXianBoss", IPY_ZhuXianBoss)
|
| | | self.ipyZhuXianBossLen = len(self.ipyZhuXianBossCache)
|
| | | self.ipyZhuXianTowerCache = self.__LoadFileData("ZhuXianTower", IPY_ZhuXianTower)
|
| | |
| | | def GetActLoginAwardByIndex(self, index): return self.ipyActLoginAwardCache[index]
|
| | | def GetLoginAwardCount(self): return self.ipyLoginAwardLen
|
| | | def GetLoginAwardByIndex(self, index): return self.ipyLoginAwardCache[index]
|
| | | def GetZhuXianSuitAttrCount(self): return self.ipyZhuXianSuitAttrLen
|
| | | def GetZhuXianSuitAttrByIndex(self, index): return self.ipyZhuXianSuitAttrCache[index]
|
| | | def GetZhuXianBossCount(self): return self.ipyZhuXianBossLen
|
| | | def GetZhuXianBossByIndex(self, index): return self.ipyZhuXianBossCache[index]
|
| | | def GetZhuXianTowerCount(self): return self.ipyZhuXianTowerLen
|
New file |
| | |
| | | #!/usr/bin/python
|
| | | # -*- coding: GBK -*-
|
| | | #-------------------------------------------------------------------------------
|
| | | #
|
| | | ##@package EquipZhuXian
|
| | | #
|
| | | # @todo:诛仙装备
|
| | | # @author hxp
|
| | | # @date 2019-01-22
|
| | | # @version 1.0
|
| | | #
|
| | | # 详细描述: 诛仙装备
|
| | | #
|
| | | #-------------------------------------------------------------------------------
|
| | | #"""Version = 2019-01-22 15:30"""
|
| | | #-------------------------------------------------------------------------------
|
| | |
|
| | | import GameWorld
|
| | | import ItemCommon
|
| | | import ShareDefine
|
| | | import PlayerControl
|
| | | import DataRecordPack
|
| | | import IpyGameDataPY
|
| | | import SkillCommon
|
| | | import PyGameData
|
| | | import ChConfig
|
| | |
|
| | | def GetZhuXianEquipIndexByPlace(equipPlace):
|
| | | ## 获取诛仙装备位对应的索引
|
| | | return equipPlace - 1 - 120
|
| | |
|
| | | def GetZhuXianEquipPlaceByIndex(equipIndex):
|
| | | ## 获取诛仙装备索引对应装备位
|
| | | return equipIndex + 1 + 120
|
| | |
|
| | | def GetZhuXianEquipPlaceIndexIsUnlock(curPlayer, equipPlaceIndex):
|
| | | ## 获取诛仙装备位是否解锁
|
| | | # @param equipPlaceIndex: 注意传入的参数是装备位索引
|
| | | equipPlace = GetZhuXianEquipPlaceByIndex(equipPlaceIndex)
|
| | | placeUnlockDict = IpyGameDataPY.GetFuncEvalCfg("EquipZhuXian", 1, {}) # 诛仙装备位对应解锁所需诛仙塔层数 {"装备位":诛仙塔层数, ...} 没配的默认解锁
|
| | | if str(equipPlace) not in placeUnlockDict:
|
| | | return True
|
| | | needTowerLV = placeUnlockDict[str(equipPlace)]
|
| | | curTowerLV = 20 # 已过关的诛仙塔层数
|
| | | return curTowerLV >= needTowerLV
|
| | |
|
| | | def CheckLearnZhuXianSkill(curPlayer, skillID):
|
| | | ## 检查诛仙装备位装备阶数
|
| | | |
| | | zhuxianSkillCondition = IpyGameDataPY.GetFuncEvalCfg("EquipZhuXian", 3, {})
|
| | | if str(skillID) not in zhuxianSkillCondition:
|
| | | return True
|
| | | classLVPlaceListDict = zhuxianSkillCondition[str(skillID)]
|
| | | zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
|
| | | for classLV, placeList in classLVPlaceListDict.items():
|
| | | needClassLV = int(classLV)
|
| | | for equipPlace in placeList:
|
| | | placeIndex = GetZhuXianEquipIndexByPlace(equipPlace)
|
| | | if placeIndex < 0 or placeIndex >= zhuXianEquipPack.GetCount():
|
| | | return
|
| | | curEquip = zhuXianEquipPack.GetAt(placeIndex)
|
| | | if curEquip.IsEmpty():
|
| | | GameWorld.DebugLog("诛仙装备位无装备,无法激活神技! equipPlace=%s" % equipPlace)
|
| | | return
|
| | | curClassLV = ItemCommon.GetItemClassLV(curEquip)
|
| | | if curClassLV < needClassLV:
|
| | | GameWorld.DebugLog("诛仙装备位装备阶级不足,无法激活神技! equipPlace=%s,curClassLV=%s < needClassLV=%s" % (equipPlace, curClassLV, needClassLV))
|
| | | return
|
| | | |
| | | return True
|
| | |
|
| | | #// A3 30 装备诛仙装备 #tagCMEquipZhuXianItem
|
| | | #
|
| | | #struct tagCMEquipZhuXianItem
|
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE EquipIndex; //装备在诛仙装备背包中的索引
|
| | | # BYTE ItemIndex; //装备在诛仙物品背包中的索引
|
| | | #};
|
| | | def OnEquipZhuXianItem(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | reqEquipPlaceIndex = clientData.EquipIndex
|
| | | itemIndex = clientData.ItemIndex
|
| | | |
| | | GameWorld.DebugLog("诛仙穿戴装备: EquipIndex=%s,ItemIndex=%s" % (reqEquipPlaceIndex, itemIndex), playerID)
|
| | | |
| | | zhuXianItemPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianItem)
|
| | | curEquip = zhuXianItemPack.GetAt(itemIndex)
|
| | | if not ItemCommon.CheckItemCanUse(curEquip):
|
| | | GameWorld.DebugLog("物品为空或不可用: itemIndex=%s" % itemIndex, playerID)
|
| | | return
|
| | | if not ItemCommon.GetIsZhuXianEquip(curEquip):
|
| | | GameWorld.DebugLog("非诛仙装备: itemIndex=%s" % itemIndex, playerID)
|
| | | return
|
| | | |
| | | equipPlace = curEquip.GetEquipPlace()
|
| | | equipPlaceIndex = GetZhuXianEquipIndexByPlace(equipPlace)
|
| | | if reqEquipPlaceIndex != equipPlaceIndex:
|
| | | canPlace = False
|
| | | for sharePlaceList in ShareDefine.ShareEquipPlace:
|
| | | if reqEquipPlaceIndex in sharePlaceList and equipPlaceIndex in sharePlaceList:
|
| | | canPlace = True
|
| | | break
|
| | | if not canPlace:
|
| | | GameWorld.DebugLog("该装备位不可装备该物品!equipPlace=%s,equipPlaceIndex=%s != reqEquipPlaceIndex=%s" % (equipPlace, equipPlaceIndex, reqEquipPlaceIndex), playerID)
|
| | | return
|
| | | |
| | | zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
|
| | | if reqEquipPlaceIndex < 0 or reqEquipPlaceIndex >= zhuXianEquipPack.GetCount():
|
| | | GameWorld.ErrLog("诛仙装备背包索引异常: EquipIndex=%s" % (reqEquipPlaceIndex), playerID)
|
| | | return
|
| | | |
| | | if not GetZhuXianEquipPlaceIndexIsUnlock(curPlayer, reqEquipPlaceIndex):
|
| | | GameWorld.DebugLog("诛仙装备位未解锁: equipPlace=%s,EquipIndex=%s" % (equipPlace, reqEquipPlaceIndex))
|
| | | return
|
| | | |
| | | destEquip = zhuXianEquipPack.GetAt(reqEquipPlaceIndex)
|
| | | desItemID, desUserData = [0, ''] if destEquip.IsEmpty() else [destEquip.GetItemTypeID(), destEquip.GetUserData()]
|
| | | srcItemID, srcUserData = curEquip.GetItemTypeID(), curEquip.GetUserData()
|
| | | if not ItemCommon.DoLogicSwitchItem(curPlayer, curEquip, destEquip, ShareDefine.rptZhuXianEquip):
|
| | | return
|
| | | dataDict = {'dotype':'EquipZhuXianItem', 'desItemID':desItemID, 'desUserData':desUserData, 'srcItemID':srcItemID, 'srcUserData':srcUserData}
|
| | | DataRecordPack.Cache_FightPowerChangeInfo(curPlayer, ChConfig.PowerDownType_EquipChange, dataDict)
|
| | | |
| | | RefreshZhuXianAttr(curPlayer) |
| | | return
|
| | |
|
| | | #// A3 31 卸下诛仙装备 #tagCMUnEquipZhuXianItem
|
| | | #
|
| | | #struct tagCMUnEquipZhuXianItem
|
| | | #{
|
| | | # tagHead Head;
|
| | | # BYTE EquipIndex; //装备在诛仙装备背包中的索引
|
| | | #};
|
| | | def OnUnEquipZhuXianItem(index, clientData, tick):
|
| | | curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(index)
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | EquipIndex = clientData.EquipIndex
|
| | | |
| | | zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
|
| | | if EquipIndex < 0 or EquipIndex >= zhuXianEquipPack.GetCount():
|
| | | GameWorld.ErrLog("诛仙装备背包索引异常: EquipIndex=%s" % (EquipIndex), playerID)
|
| | | return
|
| | | curEquip = zhuXianEquipPack.GetAt(EquipIndex)
|
| | | if not ItemCommon.CheckItemCanUse(curEquip):
|
| | | GameWorld.DebugLog("诛仙装备为空或不可用: EquipIndex=%s" % EquipIndex, playerID)
|
| | | return
|
| | | |
| | | emptyIndex = ItemCommon.GetEmptyIndexInPack(curPlayer, ShareDefine.rptZhuXianItem)
|
| | | if not ItemCommon.DoLogicSwitchItemEx(curPlayer, ShareDefine.rptZhuXianEquip, ShareDefine.rptZhuXianItem, EquipIndex, emptyIndex):
|
| | | GameWorld.DebugLog("诛仙卸下装备失败: EquipIndex=%s" % (EquipIndex), playerID)
|
| | | return
|
| | | RefreshZhuXianAttr(curPlayer)
|
| | | return
|
| | |
|
| | | def RefreshZhuXianAttr(curPlayer):
|
| | | CalcZhuXianAttr(curPlayer)
|
| | | PlayerControl.PlayerControl(curPlayer).RefreshPlayerAttrState() |
| | | return
|
| | |
|
| | | def CalcZhuXianAttr(curPlayer):
|
| | | ## 刷新诛仙属性
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | PyGameData.g_zhuXianSkillAddPerDict.pop(playerID, None)
|
| | | PyGameData.g_zhuXianSkillReducePerDict.pop(playerID, None)
|
| | | |
| | | allAttrList = [{} for _ in range(4)]
|
| | | allAttrListZXSuit = [{} for _ in range(4)]
|
| | | equipScoreTotal = 0 #为解决装备评分、战力不一致的情况,装备战力改为由评分作为参数计算战力
|
| | | equipPlaceClassLVDict = {} #装备位对应装备阶 {装备位:阶, ...}
|
| | | equipPlaceBaseAttrDict = {} #装备位对应基础属性字典 {装备位:{属性ID:value, ...}, ...}
|
| | | |
| | | attrIDSkillPlusDict = IpyGameDataPY.GetFuncEvalCfg("SkillPlusAttrID", 1, {}) # 属性ID对应影响的技能TypeID列表 {属性ID:[技能TypeID列表, ...], ...}
|
| | | addAttrIDList = range(ShareDefine.Def_Effect_SkillAddPer1, ShareDefine.Def_Effect_SkillAddPer7 + 1)
|
| | | reduceAttrIDList = range(ShareDefine.Def_Effect_SkillReducePer1, ShareDefine.Def_Effect_SkillReducePer7 + 1)
|
| | | zxSkillPlusAttrDict = {} # 玩家诛仙装备影响技能TypeID属性字典 {属性ID:值, ...}
|
| | | |
| | | zhuXianEquipPack = curPlayer.GetItemManager().GetPack(ShareDefine.rptZhuXianEquip)
|
| | | equipPackCount = zhuXianEquipPack.GetCount()
|
| | | |
| | | for equipIndex in range(len(ShareDefine.ZhuXianEquipPlace)):
|
| | | if equipIndex < 0 or equipIndex >= equipPackCount:
|
| | | break
|
| | | curEquip = zhuXianEquipPack.GetAt(equipIndex) |
| | | if curEquip.IsEmpty():
|
| | | continue
|
| | | equipScoreTotal += ItemCommon.GetEquipGearScore(curEquip)
|
| | | equipPlace = GetZhuXianEquipPlaceByIndex(equipIndex)
|
| | | equipPlaceClassLVDict[equipPlace] = ItemCommon.GetItemClassLV(curEquip)
|
| | | |
| | | # 基础属性
|
| | | baseAttrDict = {}
|
| | | for effIndex in xrange(curEquip.GetEffectCount()):
|
| | | curEffect = curEquip.GetEffectByIndex(effIndex)
|
| | | if not curEffect or not curEffect.GetEffectID():
|
| | | break
|
| | | effID = curEffect.GetEffectID()
|
| | | if not effID:
|
| | | continue
|
| | | effValue = curEffect.GetEffectValue(0)
|
| | | PlayerControl.CalcAttrDict_Type(effID, effValue, allAttrList)
|
| | | baseAttrDict[effID] = baseAttrDict.get(effID, 0) + effValue
|
| | | equipPlaceBaseAttrDict[equipPlace] = baseAttrDict
|
| | | |
| | | # 传奇属性
|
| | | if curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID) == curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue):
|
| | | for i in xrange(curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)):
|
| | | legendAttrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i)
|
| | | legendAttrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
|
| | | if legendAttrID in attrIDSkillPlusDict:
|
| | | zxSkillPlusAttrDict[legendAttrID] = zxSkillPlusAttrDict.get(legendAttrID, 0) + legendAttrValue
|
| | | else:
|
| | | PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrList)
|
| | | |
| | | GameWorld.DebugLog("诛仙装备属性: allAttrList=%s" % (allAttrList))
|
| | | GameWorld.DebugLog(" zxSkillPlusAttrDict=%s" % (zxSkillPlusAttrDict))
|
| | | |
| | | # 缓存技能增强比例,目前暂写死对指定技能伤害百分比提升
|
| | | for attrID, plusValue in zxSkillPlusAttrDict.items():
|
| | | if attrID not in attrIDSkillPlusDict:
|
| | | continue
|
| | | skillTypeIDList = attrIDSkillPlusDict[attrID]
|
| | | effSkillTypeID = 0
|
| | | for skillTypeID in skillTypeIDList:
|
| | | skillData = curPlayer.GetSkillManager().FindSkillBySkillTypeID(skillTypeID)
|
| | | if not skillData:
|
| | | continue
|
| | | if SkillCommon.CheckSkillJob(curPlayer, skillData):
|
| | | effSkillTypeID = skillTypeID
|
| | | break
|
| | | if not effSkillTypeID:
|
| | | continue
|
| | | |
| | | if attrID in addAttrIDList:
|
| | | skillAddPerDict = PyGameData.g_zhuXianSkillAddPerDict.get(playerID, {})
|
| | | skillAddPerDict[effSkillTypeID] = plusValue
|
| | | PyGameData.g_zhuXianSkillAddPerDict[playerID] = skillAddPerDict
|
| | | elif attrID in reduceAttrIDList:
|
| | | skillReducePerDict = PyGameData.g_zhuXianSkillReducePerDict.get(playerID, {})
|
| | | skillReducePerDict[effSkillTypeID] = plusValue
|
| | | PyGameData.g_zhuXianSkillReducePerDict[playerID] = skillReducePerDict
|
| | | |
| | | # 计算套装,目前暂写死对诛仙装备部位基础属性提升
|
| | | suitAttrIDPlusPlaceDict = {
|
| | | ShareDefine.Def_Effect_ZXCloakAttrPer:ShareDefine.zxetCloak,
|
| | | ShareDefine.Def_Effect_ZXMaskAttrPer:ShareDefine.zxetMask,
|
| | | ShareDefine.Def_Effect_ZXGloveAttrPer:ShareDefine.zxetGlove,
|
| | | ShareDefine.Def_Effect_ZXRuyiAttrPer:ShareDefine.zxetRuyi,
|
| | | ShareDefine.Def_Effect_ZXPendantAttrPer:ShareDefine.zxetPendant,
|
| | | ShareDefine.Def_Effect_ZXRingAttrPer:ShareDefine.zxetRing,
|
| | | }
|
| | | suitPlaceGroupDict = IpyGameDataPY.GetFuncEvalCfg("EquipZhuXian", 2, {})
|
| | | for suitType, placeGroupList in suitPlaceGroupDict.items():
|
| | | suitType = int(suitType)
|
| | | suitLV = 0
|
| | | isSuit = True
|
| | | for place in placeGroupList:
|
| | | if place not in equipPlaceClassLVDict:
|
| | | isSuit = False
|
| | | GameWorld.DebugLog(" 未穿戴装备,无法激活诛仙套装! suitType=%s,placeGroupList=%s,place=%s" % (suitType, placeGroupList, place))
|
| | | break
|
| | | if not suitLV:
|
| | | suitLV = equipPlaceClassLVDict[place]
|
| | | else:
|
| | | suitLV = min(suitLV, equipPlaceClassLVDict[place])
|
| | | |
| | | if not isSuit or not suitLV:
|
| | | continue
|
| | | |
| | | suitAttrIpyData = IpyGameDataPY.GetIpyGameData("ZhuXianSuitAttr", suitType, suitLV)
|
| | | if not suitAttrIpyData:
|
| | | continue
|
| | | suitAttrIDList = suitAttrIpyData.GetSuitAttrIDList()
|
| | | suitAttrValueList = suitAttrIpyData.GetSuitAttrValueList()
|
| | | if len(suitAttrIDList) != len(suitAttrValueList):
|
| | | continue
|
| | | for i, suitEffID in enumerate(suitAttrIDList):
|
| | | suitEffValue = suitAttrValueList[i]
|
| | | if suitEffID in suitAttrIDPlusPlaceDict:
|
| | | plusPlace = suitAttrIDPlusPlaceDict[suitEffID]
|
| | | if plusPlace not in equipPlaceBaseAttrDict:
|
| | | continue
|
| | | plusEffDict = equipPlaceBaseAttrDict[plusPlace]
|
| | | for plusEffID, plusEffValue in plusEffDict.items():
|
| | | addValue = int(plusEffValue * (10000 + suitEffValue) / 10000.0)
|
| | | PlayerControl.CalcAttrDict_Type(plusEffID, addValue, allAttrListZXSuit)
|
| | | else:
|
| | | PlayerControl.CalcAttrDict_Type(suitEffID, suitEffValue, allAttrListZXSuit)
|
| | | |
| | | # 保存计算值
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquip, allAttrList)
|
| | | PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_ZXEquipSuit, allAttrListZXSuit)
|
| | | |
| | | #计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
|
| | | equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
|
| | | GameWorld.DebugLog("诛仙装备评分战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
|
| | | curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_ZhuXian, equipFightPowerEx)
|
| | | return
|
| | |
|
| | | def GetZhuXianEquipSkillAddPer(playerID, skillTypeID):
|
| | | ## 获取诛仙装备伤害百分比提升值
|
| | | if playerID not in PyGameData.g_zhuXianSkillAddPerDict:
|
| | | return 0
|
| | | skillAddPerDict = PyGameData.g_zhuXianSkillAddPerDict[playerID]
|
| | | if skillTypeID not in skillAddPerDict:
|
| | | return 0
|
| | | return skillAddPerDict[skillTypeID]
|
| | |
|
| | | def GetZhuXianEquipSkillReducePer(playerID, skillTypeID):
|
| | | ## 获取诛仙装备减伤百分比提升值
|
| | | if playerID not in PyGameData.g_zhuXianSkillReducePerDict:
|
| | | return 0
|
| | | skillReducePerDict = PyGameData.g_zhuXianSkillReducePerDict[playerID]
|
| | | if skillTypeID not in skillReducePerDict:
|
| | | return 0
|
| | | return skillReducePerDict[skillTypeID]
|
| | |
|
| | |
| | | SkillAtkRateReduce = 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())
|
| | | SkillAddPer1 = attrDict.get(ShareDefine.Def_Effect_SkillAddPer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer1C())
|
| | | SkillAddPer2 = attrDict.get(ShareDefine.Def_Effect_SkillAddPer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer2C())
|
| | | SkillAddPer3 = attrDict.get(ShareDefine.Def_Effect_SkillAddPer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer3C())
|
| | | SkillAddPer4 = attrDict.get(ShareDefine.Def_Effect_SkillAddPer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer4C())
|
| | | SkillAddPer5 = attrDict.get(ShareDefine.Def_Effect_SkillAddPer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer5C())
|
| | | SkillAddPer6 = attrDict.get(ShareDefine.Def_Effect_SkillAddPer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer6C())
|
| | | SkillAddPer7 = attrDict.get(ShareDefine.Def_Effect_SkillAddPer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillAddPer7C())
|
| | | SkillReducePer1 = attrDict.get(ShareDefine.Def_Effect_SkillReducePer1, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer1C())
|
| | | SkillReducePer2 = attrDict.get(ShareDefine.Def_Effect_SkillReducePer2, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer2C())
|
| | | SkillReducePer3 = attrDict.get(ShareDefine.Def_Effect_SkillReducePer3, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer3C())
|
| | | SkillReducePer4 = attrDict.get(ShareDefine.Def_Effect_SkillReducePer4, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer4C())
|
| | | SkillReducePer5 = attrDict.get(ShareDefine.Def_Effect_SkillReducePer5, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer5C())
|
| | | SkillReducePer6 = attrDict.get(ShareDefine.Def_Effect_SkillReducePer6, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer6C())
|
| | | SkillReducePer7 = attrDict.get(ShareDefine.Def_Effect_SkillReducePer7, 0) * (1 if not gsParamIpyData else gsParamIpyData.GetSkillReducePer7C())
|
| | |
|
| | | # 攻速不默认乘,仅作为参数提供策划使用
|
| | | AtkSpeed = attrDict.get(ShareDefine.Def_Effect_AtkSpeed, 0)
|
| | |
| | | # @remarks 函数详细说明.
|
| | | def SwitchItem(curPlayer, curItem, switchItem, putInPackIndex):
|
| | | ##物品绑定字段判定 -> 装备绑定
|
| | | if putInPackIndex == IPY_GameWorld.rptEquip:
|
| | | if putInPackIndex in [IPY_GameWorld.rptEquip, ShareDefine.rptZhuXianEquip]:
|
| | | DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
|
| | |
|
| | | # 装备技能书、坐骑装备绑定
|
| | |
| | | return
|
| | |
|
| | | ##物品绑定字段判定 -> 装备绑定
|
| | | if putInPackIndex == IPY_GameWorld.rptEquip:
|
| | | if putInPackIndex in [IPY_GameWorld.rptEquip, ShareDefine.rptZhuXianEquip]:
|
| | | DoLogic_ItemBindType(curPlayer, switchItem, ChConfig.Def_BindType_DoEquipBind)
|
| | |
|
| | | # 装备技能书、坐骑装备绑定
|
| | |
| | | import CrossRealmPlayer
|
| | | import CrossPlayerData
|
| | | import ChNetSendPack
|
| | | import EquipZhuXian
|
| | | import PlayerCoat
|
| | | import PlayerState
|
| | | import QuestCommon
|
| | |
| | |
|
| | | if not isDisconnect:
|
| | | CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
|
| | | |
| | | #清除地图玩家缓存
|
| | | playerID = curPlayer.GetPlayerID()
|
| | | PyGameData.g_zhuXianSkillAddPerDict.pop(playerID, None)
|
| | | PyGameData.g_zhuXianSkillReducePerDict.pop(playerID, None)
|
| | | return
|
| | |
|
| | | ##更新保存玩家在线时间
|
| | |
| | | FinalHurtReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurtReduce) # 最终固定伤害减少
|
| | | DamagePerPVP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePerPVP) * fpParam.GetCftDamagePerPVP() # 伤害输出计算百分比PVP
|
| | | DamagePerPVPReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePerPVPReduce) * fpParam.GetCftDamagePerPVPReduce() # 伤害输出计算百分比PVP减少
|
| | | JobAHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobAHurtAddPer) * fpParam.GetCftJobAHurtAddPer() # 对目标战士伤害加成
|
| | | JobBHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobBHurtAddPer) * fpParam.GetCftJobBHurtAddPer() # 对目标法师伤害加成
|
| | | JobCHurtAddPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobCHurtAddPer) * fpParam.GetCftJobCHurtAddPer() # 对目标弓箭伤害加成
|
| | | JobAAtkReducePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobAAtkReducePer) * fpParam.GetCftJobAAtkReducePer() # 战士攻击伤害减免
|
| | | JobBAtkReducePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobBAtkReducePer) * fpParam.GetCftJobBAtkReducePer() # 法师攻击伤害减免
|
| | | JobCAtkReducePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_JobCAtkReducePer) * fpParam.GetCftJobCAtkReducePer() # 弓箭攻击伤害减免
|
| | | |
| | | ComboRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_ComboRate) # 连击几率
|
| | | ComboDamPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_ComboDamPer) # 连击伤害
|
| | | #MaxProDef = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_MaxProDef) # 最大防护值
|
| | |
| | | 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:数值, ...}, ...}
|
| | |
| | |
|
| | | Def_Effect_NPCHurtAddPer = 89 # 对怪物伤害加成
|
| | |
|
| | | Def_Effect_JobAHurtAddPer = 90 # 对目标战士伤害加成
|
| | | Def_Effect_JobBHurtAddPer = 91 # 对目标法师伤害加成
|
| | | Def_Effect_JobCHurtAddPer = 92 # 对目标弓箭伤害加成
|
| | | Def_Effect_JobAAtkReducePer = 93 # 战士攻击伤害减免
|
| | | 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
|
| | |
|
| | | #增加%d物理伤害值,其中a值为伤害值
|
| | | Def_Effect_AddAtk = 1005
|
| | | #增加%d魔法伤害值,其中a值为伤害值
|
| | |
| | | )=range(5)
|
| | |
|
| | | # 战斗力模块类型
|
| | | Def_MFPType_Max = 28
|
| | | Def_MFPType_Max = 29
|
| | | ModuleFightPowerTypeList = (
|
| | | Def_MFPType_Role, # 角色 0
|
| | | Def_MFPType_Equip, # 装备(基本装备位) 1
|
| | |
| | | Def_MFPType_GatherSoul, # 聚魂 22
|
| | | Def_MFPType_MagicWeapon4, # 王者法宝 23
|
| | | Def_MFPType_Coat, # ʱװ 24
|
| | | Def_MFPType_ZhuXian, # 诛仙 25
|
| | | Def_MFPType_Other, # 其他
|
| | |
|
| | | #以下暂时没用到,改时再处理
|
| | |
| | | zxetWeapon4, # 诛仙剑4 132
|
| | | ) = range(121, 121 + 12)
|
| | |
|
| | | # 共享通用装备位,可装备同一类型装备
|
| | | ShareEquipPlace = [
|
| | | [zxetGlove, zxetGlove2],
|
| | | [zxetRing, zxetRing2],
|
| | | ]
|
| | |
|
| | | # 请求进入副本通用检查结果,优先提示的放前面(即索引越大,提示优先级越低)
|
| | | EnterFBAskResult = (
|
| | |
| | | import SkillShell
|
| | | import FBCommon
|
| | | import IpyGameDataPY
|
| | | 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()
|
| | |
|