From d0f5f9922f17f5bff4288173f18a9ed827d95db8 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期六, 22 六月 2019 15:00:13 +0800 Subject: [PATCH] 1 装备评分增加装备掉率参数固定值 DropEquipPer --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 63 +++++++++++++++++++------------ 1 files changed, 38 insertions(+), 25 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py index 9ef6b9d..3f0eebf 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -88,7 +88,6 @@ import CrossRealmPlayer import CrossPlayerData import ChNetSendPack -#import EquipZhuXian import PlayerCoat import PlayerState import QuestCommon @@ -1238,8 +1237,6 @@ 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) @@ -3451,8 +3448,7 @@ if addPoint == None: raise Exception('玩家获得升级属性点异常, curLV = %s PlayerID = %s' % (curLV, curPlayerID)) return - - return int(addPoint) + GetFabaoAddPoint(curPlayer) + return int(addPoint+ GetFabaoAddPoint(curPlayer) + GetTitleAddExtraPoint(curPlayer)) def GetAllPointByLV(curPlayer): ##获取当前等级可得到属性点数 @@ -3460,18 +3456,26 @@ curLV = curPlayer.GetLV() if curLV < openLV: return 0 - # 初始点+升级点+境界点 + # 初始点+(升级点+法宝效果)*称号效果倍数+境界点 setFreePoint = IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 2) fabaoAddPoint = GetFabaoAddPoint(curPlayer) + titleAddPoint = GetTitleAddExtraPoint(curPlayer) addPointDict = IpyGameDataPY.GetFuncEvalCfg("LVUPAddPoint", 1, {}) for rangLVs, point in addPointDict.items(): if curLV < rangLVs[0]: continue - setFreePoint += (point + fabaoAddPoint) * (min(curLV, rangLVs[1]) - rangLVs[0] + 1) + setFreePoint += (point + fabaoAddPoint + titleAddPoint) * (min(curLV, rangLVs[1]) - rangLVs[0] + 1) #境界提升点数 setFreePoint += curPlayer.GetOfficialRank() * IpyGameDataPY.GetFuncCfg("LVUPAddPoint", 3) return setFreePoint + +def GetTitleAddExtraPoint(curPlayer): + # 称号额外增加玩家每级获得的灵根点 + titleID = IpyGameDataPY.GetFuncCfg("TitleAddPoint") + if titleID and curPlayer.GetDienstgradManager().GetDienstgrad(titleID): + return IpyGameDataPY.GetFuncCfg("TitleAddPoint", 2) + return 0 def GetFabaoAddPoint(curPlayer): #法宝额外增加玩家每级获得的灵根点 @@ -3781,9 +3785,9 @@ # @param expViewType 经验获得的渠道 # @param isSysHint 是否系统提示(默认是) # @return 布尔值 - def AddExp(self, addExp, expViewType=ShareDefine.Def_ViewExpType_Mission, isSysHint=True): + def AddExp(self, addExp, expViewType=ShareDefine.Def_ViewExpType_Mission, isSysHint=True, addSkillID=0): curPlayer = self.__Player - finalAddExp, expNotifyType = self.__AddExp(curPlayer, addExp, expViewType, isSysHint) + finalAddExp, expNotifyType = self.__AddExp(curPlayer, addExp, expViewType, isSysHint, addSkillID) # 通知客户端经验来源 if finalAddExp: @@ -3799,7 +3803,8 @@ return finalAddExp - def __AddExp(self, curPlayer, addExp, expViewType, isSysHint): + # 参数 addSkillID 表示因什么技能杀死NPC获得经验 + def __AddExp(self, curPlayer, addExp, expViewType, isSysHint, addSkillID=0): if addExp == 0: # 不进入计算 return addExp, expViewType @@ -3828,9 +3833,17 @@ if expViewType == ShareDefine.Def_ViewExpType_KillNPC: exp_rate = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TotalExpRate) superRate = PassiveBuffEffMng.GetPassiveSkillValueByTriggerType(curPlayer, None, None, ChConfig.TriggerType_AddExpRate) - exp_rate += superRate if superRate: + # 龙凤镯 经验 expViewType = ShareDefine.Def_ViewExpType_KillNPCSuper + if addSkillID == ChConfig.Def_SkillID_LXHY_AddExpRate: + addSkill = GameWorld.GetGameData().GetSkillBySkillID(addSkillID) + hasEffect = SkillCommon.GetSkillEffectByEffectID(addSkill, ChConfig.Def_Skill_Effect_AddExpRate) + if hasEffect: + #烈焰战神 经验 + superRate += hasEffect.GetEffectValue(0) + expViewType = ShareDefine.Def_ViewExpType_LYZS + exp_rate += superRate elif expViewType in [ShareDefine.Def_ViewExpType_GameEvent, ShareDefine.Def_ViewExpType_Sit]: exp_rate = curPlayer.GetGameEventExpRate() @@ -4028,7 +4041,8 @@ if aftLV > befLV: curPlayer.SetLV(aftLV, False) # 这里不再通知GameServer PlayerSuccess.UptateSuccessProgress(curPlayer, ShareDefine.SuccType_HeroLV, aftLV) - PlayerActivity.DoAddActivity(curPlayer, (aftLV - befLV)*IpyGameDataPY.GetFuncCfg('ImmortalDomainActivePoint',3)) + PlayerActivity.DoAddActivityByLV(curPlayer, befLV, aftLV) + if aftFreePoint > befFreePoint: curPlayer.SetFreePoint(aftFreePoint) #NotifyCode(curPlayer, "ObtainAttributeDot", [aftFreePoint - befFreePoint]) @@ -4057,7 +4071,7 @@ PlayerGreatMaster.Sync_GreatMasterFreeSkillPoint(curPlayer) # 升级需要执行的游戏功能处理 GameFuncComm.DoFuncOpenLogic(curPlayer) - #ChEquip.CalcEquips_OutOfPrint(curPlayer) # 缓存绝版属性 + ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer) # 灵器属性会随等级成长 if aftLV%10 == 0: # 控制下刷新次数 PlayerPet.CalcPetItemAddPlayerAttr(curPlayer) # 宠物有随等级变化的技能 @@ -4247,7 +4261,6 @@ ChEquip.RefreshPlayerEquipAttribute(curPlayer) ChEquip.RefreshPlayerLingQiEquipAttr(curPlayer) #SkillShell.RefreshPlayerBuffOnAttrAddEffect(curPlayer) - #PlayerWing.CalcWingAttr(curPlayer) # 翅膀暂时算在灵器里面 PlayerHorse.CalcHorseAttrEx(curPlayer) PlayerPrestigeSys.CalcOfficialRankAttr(curPlayer) PlayerGodWeapon.CalcGodWeaponAttr(curPlayer) @@ -4261,7 +4274,6 @@ PlayerFamilyTech.CalcFamilyTechAttr(curPlayer) PlayerEquipDecompose.RefreshEDAttr(curPlayer) PlayerDogz.RefreshDogzAttr(curPlayer) - #EquipZhuXian.CalcZhuXianAttr(curPlayer) PlayerGatherSoul.RefreshGatherSoulAttr(curPlayer) PlayerCoat.CalcClothesCoatSkinAttr(curPlayer) self.RefreshAllState(isForce=True) @@ -4464,7 +4476,6 @@ ChConfig.TYPE_Calc_StoneBasePer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Stone], ChConfig.TYPE_Calc_RealmBasePer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Prestige], ChConfig.TYPE_Calc_HorseAtkPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Horse], - ChConfig.TYPE_Calc_WingHPPer:funcAttrInfoList[ChConfig.Def_CalcAttrFunc_Wing], } # 3.2 统计各功能之间非线性属性交叉影响累加 funcCrossAttrPerInfoDict = {} # 百分比交叉影响所提升的属性值 {功能属性编号:{提升的属性类型:数值, ...}, ...} @@ -4500,7 +4511,7 @@ # 3.3 统计所有功能固定属性影响累加 allFixAttrDict = {} # 固定属性层级总属性基值 for funcIndex, funcAttrList in enumerate(funcAttrInfoList): - # 技能模块不算计入功能固定属性、不计战力 + # 技能模块不计入功能固定属性、不计战力 if funcIndex in ChConfig.CalcAttrFuncSkillList: continue AddAttrDictValue(allFixAttrDict, funcAttrList[ChConfig.CalcAttr_Battle]) @@ -4532,7 +4543,7 @@ mfpAttrExDict = {} for funcIndex in attrFuncIndexList: if funcIndex in ChConfig.CalcAttrFuncSkillList: - # 技能模块不算计入功能固定属性、不计战力 + # 技能模块不计入功能固定属性、不计战力 continue funcAttrList = funcAttrInfoList[funcIndex] funcInsidePerAttrDict = funcInsidePerAttrList[funcIndex] # 功能点内部百分比加成属性 @@ -4608,7 +4619,9 @@ if beforePointList[i] != afterPointList[i]: diffPointAttrList.append(attrID) SkillShell.RefreshElementSkillByAttr(curPlayer, diffPointAttrList) - + # 更新开服活动灵根数据 + OpenServerCampaign.UpdOpenServerCampaignLingGenData(curPlayer) + # 同步前端战力,因为有 SetFightPower 所以累加战力放在这里所有刷新及计算处理完后才处理,才能正常触发set同步前端 self.SendModuleFightPowerPack(curPlayer, mfpDict) billFuncCnt = len(PyGameData.g_refreshAttrBillboardFunc) # 只处理固定次数,防止死循环 @@ -4673,12 +4686,12 @@ # 速度特殊处理 计算一次 self.__RefreshMoveSpeed(allAttrListBuffs) + # GM测试属性特殊逻辑 + self.__DoRefreshGMAttr() + # 刷新攻击速度 self.__SetAtkInterval() GameWorld.DebugLog("Buff层属性: %s" % allAttrListBuffs) - - # GM测试属性特殊逻辑 - self.__DoRefreshGMAttr() return def __DoRefreshGMAttr(self): @@ -4731,8 +4744,8 @@ setAttrDict[ChConfig.AttrName_Def] = int(lvIpyData.GetReDef() * attrPer) # 防御 setAttrDict[ChConfig.AttrName_Hit] = int(lvIpyData.GetReHit() * attrPer) # 命中 setAttrDict[ChConfig.AttrName_DefRate] = int(lvIpyData.GetReMiss() * attrPer) # 闪避 - setAttrDict[ChConfig.AttrName_AtkSpeed] = int(lvIpyData.GetReAtkSpeed() * attrPer) # 攻击速度 - setAttrDict[ChConfig.AttrName_SkillAtkRate] = int(max(0, lvIpyData.GetReSkillAtkRate() - 10000) * attrPer) # 技能伤害比例 + setAttrDict[ChConfig.AttrName_AtkSpeed] = int((lvIpyData.GetReAtkSpeed() + 10000) * attrPer) # 攻击速度, 策划等级表配置的是附加值,所以这里要加 + setAttrDict[ChConfig.AttrName_SkillAtkRate] = int(max(0, lvIpyData.GetReSkillAtkRate() - 10000) * attrPer) # 技能伤害比例, 策划等级表配置的是最终值,初始值是0,所以这里要减 setAttrDict[ChConfig.AttrName_DamagePVP] = int(lvIpyData.GetReDamagePer() * attrPer) # PVP固定伤害 setAttrDict[ChConfig.AttrName_DamagePVPReduce] = int(lvIpyData.GetReDamReduce() * attrPer) # PVP固定减伤 setAttrDict[ChConfig.AttrName_IgnoreDefRate] = int(lvIpyData.GetReIgnoreDefRate() * attrPer) # 无视防御比例 @@ -4742,7 +4755,7 @@ setAttrDict[ChConfig.AttrName_IceAtk] = int(lvIpyData.GetReIceAtk() * attrPer) # 真实伤害 setAttrDict[ChConfig.AttrName_IceDef] = int(lvIpyData.GetReIceDef() * attrPer) # 真实抵御 setAttrDict[ChConfig.AttrName_PetAtk] = int(lvIpyData.GetRePetAtk() * attrPer) # 灵宠攻击 - setAttrDict[ChConfig.AttrName_PetSkillAtkRate] = int(lvIpyData.GetRePetSkillAtkRate() * attrPer) # 灵宠技能 + setAttrDict[ChConfig.AttrName_PetSkillAtkRate] = int(max(0, lvIpyData.GetRePetSkillAtkRate() - 10000) * attrPer) # 灵宠技能, 策划等级表配置的是最终值,初始值是0,所以这里要减 setAttrDict[ChConfig.AttrName_PetDamPer] = int(lvIpyData.GetRePetDamPer() * attrPer) # 灵宠伤害增加 setAttrDict[ChConfig.AttrName_FinalHurt] = int(lvIpyData.GetReFinalHurt() * attrPer) # 固定伤害增加 setAttrDict[ChConfig.AttrName_FinalHurtReduce] = int(lvIpyData.GetReFinalHurtReduce() * attrPer) # 固定伤害减少 -- Gitblit v1.8.0