From f198885f31c9c7eb19eb28adce562e39e64d581c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 18 七月 2025 16:23:11 +0800 Subject: [PATCH] 121 【武将】武将系统-服务端(属性计算、战斗力计算;新角色初始给默认装备、默认阵容武将;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 145 +----------------------------------------------- 1 files changed, 4 insertions(+), 141 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py index 017176d..8b29dc8 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py @@ -232,7 +232,7 @@ if "LV" in npcFBAttrDict: strengthenLV = npcFBAttrDict["LV"] - attrDict = GetNPCStrengthenAttrDict(npcID, strengthenLV, strengthenPlayerCnt, strengthenIpyData) + attrDict = {} #GetNPCStrengthenAttrDict(npcID, strengthenLV, strengthenPlayerCnt, strengthenIpyData) attrDict.update(npcFBAttrDict) # 如果副本有指定属性,则以副本为主 if not attrDict: return @@ -320,130 +320,6 @@ for skillID in skillIDList: skillManager.LearnSkillByID(skillID) return - -def GetNPCStrengthenAttrDict(npcID, strengthenLV=0, strengthenPlayerCnt=0, strengthenIpyData=None): - if not strengthenLV and not strengthenPlayerCnt: - return {} - npcData = GameWorld.GetGameData().FindNPCDataByID(npcID) - if not npcData: - return {} - - attrStrengthenInfo = ReadChConfig.GetEvalChConfig("NPCAttrStrengthen") - if not attrStrengthenInfo: - return {} - - attrDict = {} - paramDict = attrStrengthenInfo[NPCAttr_ParamDict] # 过程参数公式字典 - attrStrengthenDict = attrStrengthenInfo[NPCAttr_AttrStrengthenList] # 属性成长公式字典 - playerCntCoefficient = attrStrengthenInfo[NPCAttr_PlayerCntCoefficient] # 人数系数 - npcIDPlayerCntCoefficient = attrStrengthenInfo[NPCAttr_NPCPlayerCntCoefficient] # 特殊NPC人数系数 - baseMaxHP = GameObj.GetHP(npcData) # NPCData 没有提供Max接口,对应使用GetHP - - if strengthenLV: - if not strengthenIpyData: - strengthenIpyData = IpyGameDataPY.GetIpyGameDataNotLog("NPCStrengthen", npcID) - if not strengthenIpyData: - return {} - - playerCurLVIpyData = PlayerControl.GetPlayerLVIpyData(strengthenLV) # 取增强怪物等级对应此等级的玩家参考属性值 - if not playerCurLVIpyData: - return {} - - # NPC表可用参数 - SkillAtkRate = GetSkillAtkRate(npcData) # 技能伤害 - FinalHurt = GetFinalHurt(npcData) - - # 参考玩家属性参数 - ReMaxHP = playerCurLVIpyData.GetReMaxHP() # 最大生命值 - ReAtk = playerCurLVIpyData.GetReAtk() # 攻击(最小、最大攻击) - ReDef = playerCurLVIpyData.GetReDef() # 防御 - ReHit = playerCurLVIpyData.GetReHit() # 命中 - ReMiss = playerCurLVIpyData.GetReMiss() # 闪避 - ReAtkSpeed = playerCurLVIpyData.GetReAtkSpeed() # 攻击速度 - ReSkillAtkRate = playerCurLVIpyData.GetReSkillAtkRate() # 技能伤害比例 - ReDamagePer = playerCurLVIpyData.GetReDamagePer() # 增加伤害 - ReDamReduce = playerCurLVIpyData.GetReDamReduce() # 减少伤害 - ReIgnoreDefRate = playerCurLVIpyData.GetReIgnoreDefRate() # 无视防御比例 - ReLuckyHitRate = playerCurLVIpyData.GetReLuckyHitRate() # 会心一击率 - ReLuckyHit = playerCurLVIpyData.GetReLuckyHit() # 会心一击伤害 - ReBleedDamage = playerCurLVIpyData.GetReBleedDamage() # 流血伤害增加 - ReIceAtk = playerCurLVIpyData.GetReIceAtk() # 真实伤害 - ReIceDef = playerCurLVIpyData.GetReIceDef() # 真实抵御 - RePetAtk = playerCurLVIpyData.GetRePetAtk() # 灵宠攻击 - RePetSkillAtkRate = playerCurLVIpyData.GetRePetSkillAtkRate() # 灵宠技能 - RePetDamPer = playerCurLVIpyData.GetRePetDamPer() # 灵宠伤害增加 - ReFinalHurt = playerCurLVIpyData.GetReFinalHurt() # 固定伤害增加 - ReFinalHurtReduce = playerCurLVIpyData.GetReFinalHurtReduce() # 固定伤害减少 - RePotionReply = playerCurLVIpyData.GetRePotionReply() # 血瓶恢复量 - RePotionCD = playerCurLVIpyData.GetRePotionCD() # 血瓶CD - ReFightPower = playerCurLVIpyData.GetReFightPower() # 战斗力 - - # 增加NPC属性参数 - HitTime = strengthenIpyData.GetHitTime() # 怪物受击次数 - DefCoefficient = strengthenIpyData.GetDefCoefficient() # 人物防御系数 - AtkCoefficient = strengthenIpyData.GetAtkCoefficient() # 人物攻击系数 - AdjustCoefficient = strengthenIpyData.GetAdjustCoefficient() # 调整系数比例 - AtkInterval = strengthenIpyData.GetAtkInterval() # 怪物攻击间隔 - HitRate = strengthenIpyData.GetHitRate() # 对人物的命中率 - MissRate = strengthenIpyData.GetMissRate() # 对人物的闪避率 - MonterNum = strengthenIpyData.GetMonterNum() # 怪物数 - IceAtkCoefficient = strengthenIpyData.GetIceAtkCoefficient() # 元素攻击比例 - IceDefCoefficient = strengthenIpyData.GetIceDefCoefficient() # 元素抗性比例 - MaxEnduranceTime = strengthenIpyData.GetMaxEnduranceTime() # 玩家最大承受伤害时间 - FightPowerCoefficient = strengthenIpyData.GetFightPowerCoefficient() # 压制战斗力系数 - - # 过程参数 - AtkReplyCoefficient = eval(FormulaControl.GetCompileFormula("NPCParam_AtkReplyCoefficient", - paramDict["AtkReplyCoefficient"])) # 怪物攻击回复调整值 - MonterHurt = eval(FormulaControl.GetCompileFormula("NPCParam_MonterHurt", paramDict["MonterHurt"])) # 怪物固定伤害 - LostHPPerSecond = eval(FormulaControl.GetCompileFormula("NPCParam_LostHPPerSecond", paramDict["LostHPPerSecond"])) # 玩家每秒掉血量 - LVStrengthenMark = strengthenIpyData.GetLVStrengthenMark() - attrStrengthenList = attrStrengthenDict.get(LVStrengthenMark, []) - for attrKey, strengthenFormat in attrStrengthenList: - strengthenValue = int(eval(FormulaControl.GetCompileFormula("NPCStrengthen_%s_%s" % (attrKey,LVStrengthenMark), strengthenFormat))) - #GameWorld.DebugLog(" %s=%s" % (attrKey, strengthenValue)) - locals()[attrKey] = strengthenValue # 创建该属性局部变量作为参数提供给后面属性计算时用 - attrDict[attrKey] = strengthenValue - - # 当战力系数为0时,NPC战力默认为NPC表压制战力 - if FightPowerCoefficient: - attrDict["FightPower"] = int(ReFightPower * FightPowerCoefficient / 10000.0) - - if strengthenPlayerCnt: - mapID = GameWorld.GetMap().GetMapID() - dataMapID = FBCommon.GetRecordMapID(mapID) - formulaKey = "MapCoefficient_%s" % mapID - playerCntAttrCoefficient = playerCntCoefficient.get(mapID, {}) - if not playerCntAttrCoefficient and dataMapID in playerCntCoefficient: - playerCntAttrCoefficient = playerCntCoefficient[dataMapID] - formulaKey = "MapCoefficient_%s" % dataMapID - if npcID in npcIDPlayerCntCoefficient: - playerCntAttrCoefficient = npcIDPlayerCntCoefficient[npcID] - formulaKey = "NPCCoefficient_%s" % npcID - for attrKey, coefficientDict in playerCntAttrCoefficient.items(): - if attrKey in attrDict: - attrValue = attrDict[attrKey] - elif attrKey == "MaxHP": - attrValue = baseMaxHP - else: - attrFuncName = "Get%s" % attrKey - if not hasattr(npcData, attrFuncName): - continue - attrValue = getattr(npcData, attrFuncName)() - # 按字典配置 - if isinstance(coefficientDict, dict): - coefficient = GameWorld.GetDictValueByRangeKey(coefficientDict, strengthenPlayerCnt, 1) - # 按公式配置 - elif isinstance(coefficientDict, str): - formulaKey = "%s_%s" % (formulaKey, attrKey) - coefficient = eval(FormulaControl.GetCompileFormula(formulaKey, coefficientDict)) - else: - coefficient = 1 - attrDict[attrKey] = int(attrValue * coefficient) - - #GameWorld.DebugLog("计算NPC属性成长: npcID=%s,strengthenLV=%s,strengthenPlayerCnt=%s,baseMaxHP=%s,attrDict=%s" - # % (npcID, strengthenLV, strengthenPlayerCnt, baseMaxHP, attrDict)) - return attrDict def GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, exp_rate=None, mailTypeKey=None, isMail=False, extraItemList=[], prizeMultiple=1, dropItemMapInfo=[], curGrade=0, isVirtualDrop=False): @@ -1836,8 +1712,8 @@ addAngry += useSkill.GetSkillAngry() # 玩家攻击增加额外仇恨 - if objDetel.GetGameObjType() == IPY_GameWorld.gotPlayer: - addAngry += PlayerControl.GetAddAngry(objDetel) + #if objDetel.GetGameObjType() == IPY_GameWorld.gotPlayer: + # addAngry += PlayerControl.GetAddAngry(objDetel) self.AddObjToAngryList(objDetel, addAngry) return @@ -2726,19 +2602,6 @@ curNPC.SetMaxAtk(heroAttrDict.get(ShareDefine.Def_Effect_Atk, 1)) curNPC.SetDef(heroAttrDict.get(ShareDefine.Def_Effect_Def, 1)) GameObj.SetMaxHP(curNPC, heroAttrDict.get(ShareDefine.Def_Effect_MaxHP, 1)) - - #GameObj.SetMissRate(curNPC, npcDataEx.GetMissRate()) - #GameObj.SetMissDefRate(curNPC, npcDataEx.GetMissDefRate()) - #GameObj.SetSuperHitRate(curNPC, npcDataEx.GetSuperHitRate()) - #GameObj.SetSuperHitRateReduce(curNPC, npcDataEx.GetSuperHitRateReduce()) - #GameObj.SetFaintRate(curNPC, npcDataEx.GetFaintRate()) - #GameObj.SetFaintDefRate(curNPC, npcDataEx.GetFaintDefRate()) - #GameObj.SetComboRate(curNPC, npcDataEx.GetComboRate()) - #GameObj.SetComboDefRate(curNPC, npcDataEx.GetComboDefRate()) - #GameObj.SetAtkBackRate(curNPC, npcDataEx.GetAtkBackRate()) - #GameObj.SetAtkBackDefRate(curNPC, npcDataEx.GetAtkBackDefRate()) - #GameObj.SetSuckHPPer(curNPC, npcDataEx.GetSuckHPPer()) - #GameObj.SetSuckHPDefPer(curNPC, npcDataEx.GetSuckHPDefPer()) return ## 刷新NPC属性 @@ -3232,7 +3095,7 @@ PlayerVip.DoAddVIPKillLVExp(lastHurtPlayer, GetNPCLV(curNPC)) # SP值 - PlayerControl.AddZhenQiByKillNPC(lastHurtPlayer, curNPC.GetSP()) + #PlayerControl.AddZhenQiByKillNPC(lastHurtPlayer, curNPC.GetSP()) return #--------------------------------------------------------------------- -- Gitblit v1.8.0