From 0b52fea0c2dec053c44678d94bd66c10db1b0b91 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 06 四月 2021 17:27:57 +0800 Subject: [PATCH] 8870 【BT2】【后端】战力、伤害、玩家生命的数值调整为大数值(超21亿) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 183 ++++++++++++++++++++++++++------------------- 1 files changed, 105 insertions(+), 78 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 6fc4016..94a8b74 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -82,6 +82,7 @@ import GY_Query_CrossRealmReg import PlayerCrossRealmPK import FunctionNPCCommon +import IPY_PlayerDefine import CrossRealmPlayer import CrossPlayerData import NPCHurtManager @@ -593,7 +594,7 @@ # @remarks 检查玩家状态是否可以传送 def CheckPlayerTransport(curPlayer): #死亡不可使用 - if curPlayer.GetHP() <= 0: + if GameObj.GetHP(curPlayer) <= 0: return False # if curPlayer.GetPKValue() > 0: @@ -1615,8 +1616,8 @@ # 从副本中切图 if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull: #默认回满血 - if curPlayer.GetHP() > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie and curPlayer.GetHP() < curPlayer.GetMaxHP(): - curPlayer.SetHP(curPlayer.GetMaxHP()) + if GameObj.GetHP(curPlayer) > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie and GameObj.GetHP(curPlayer) < GameObj.GetMaxHP(curPlayer): + GameObj.SetHPFull(curPlayer) #2. 调用切换地图接口 curPlayer.DoResetWorldPosAndClear() @@ -1711,7 +1712,7 @@ # #如果玩家是死亡状态,则先复活,手游策划不想复活退出 # if curPlayer.GetPlayerAction() == IPY_GameWorld.paDie: # curPlayer.Reborn(ChConfig.rebornType_System) - # curPlayer.SetHP(curPlayer.GetMaxHP()) + # GameObj.SetHPFull(curPlayer) # ChangePlayerAction(curPlayer, IPY_GameWorld.paNull) #=============================================================================================== @@ -1756,7 +1757,7 @@ NotifyCode(curPlayer, "CrossMatching18") return - if curPlayer.GetHP() <= 0: + if GameObj.GetHP(curPlayer) <= 0: NotifyCode(curPlayer, "CrossMap4") return @@ -1945,7 +1946,7 @@ if ret != ShareDefine.EntFBAskRet_OK: return ret - if curPlayer.GetHP() <= 0: + if GameObj.GetHP(curPlayer) <= 0: GameWorld.Log("玩家已经死亡, 无法进入副本!") return ShareDefine.EntFBAskRet_Dead @@ -2276,7 +2277,7 @@ # @remarks 玩家切换地图 def PlayerResetWorldPos(curPlayer, mapID, posX, posY, takeTruck, lineID=-1, msg='', canLock=True, exData1=0): #更改: 死亡允许切换地图, 在副本中被怪打死, 副本时间到, 回收副本 -# if curPlayer.GetHP() <= 0 : +# if GameObj.GetHP(curPlayer) <= 0 : # GameWorld.Log("死亡无法切换地图") # return @@ -2749,7 +2750,7 @@ # GameWorld.Log(" i=%s,成员不存在!" % (i)) continue - if curTeamPlayer.GetHP() <= 0: + if GameObj.GetHP(curTeamPlayer) <= 0: #if isLog: # GameWorld.Log(" i=%s,成员血量为0!playerID=%s" % (i, curTeamPlayer.GetPlayerID())) continue @@ -2866,7 +2867,7 @@ return if value < 0: value = GetPlayerCurrency(curPlayer, currencyType) - curPlayer.SendPropertyRefresh(refreshType, value, False) + SendPropertyRefresh(curPlayer, refreshType, value) return # 通知玩家所有自定义货币 @@ -2879,9 +2880,10 @@ continue #此处根据需求若Value为0 可不通知客户端,具体功能制作者决定 + value = GetPlayerCurrency(curPlayer, currencyType) notifyStruct = ChPyNetSendPack.tagRefreshType() notifyStruct.RefreshType = refreshType - notifyStruct.Value = GetPlayerCurrency(curPlayer, currencyType) + notifyStruct.Value = value notifyList.append(notifyStruct) #属性组合包 通知自己 @@ -4087,7 +4089,7 @@ def PlayerLvUp(self, handLvUp=False): curPlayer = self.__Player - if curPlayer.GetHP() <= 0: + if GameObj.GetHP(curPlayer) <= 0: #玩家死亡不可升级 return @@ -4219,7 +4221,7 @@ #放在功能开启后面 PlayerWorldAverageLv.UpdatePlayerWorldAverageLv(curPlayer) #将血设置为最大 - curPlayer.SetHP(curPlayer.GetMaxHP()) + GameObj.SetHPFull(curPlayer) if curPlayer.GetMaxMP() > 0: curPlayer.SetMP(curPlayer.GetMaxMP()) @@ -4356,7 +4358,11 @@ continue notifyStruct = ChPyNetSendPack.tagRefreshType() notifyStruct.RefreshType = attrType - notifyStruct.Value = curPlayerState + if attrType in [IPY_PlayerDefine.CDBPlayerRefresh_HP, IPY_PlayerDefine.CDBPlayerRefresh_MaxHP]: + notifyStruct.Value = curPlayerState % ShareDefine.Def_PerPointValue + notifyStruct.ValueEx = curPlayerState / ShareDefine.Def_PerPointValue + else: + notifyStruct.Value = curPlayerState if notifySelf: notifySelfList.append(notifyStruct) if notifyAll: @@ -4453,7 +4459,7 @@ return GameWorld.DebugLog("Start RefreshPlayerAttrByBuffEx!!!") - beforeMaxHP = curPlayer.GetMaxHP() + beforeMaxHP = GameObj.GetMaxHP(curPlayer) beforeMoveSpeedValue = GetSpeedValue(curPlayer) #构建玩家刷新通知客户端字典, 缓存[索引, 数值] playerStateDict = {} @@ -4546,7 +4552,7 @@ GameWorld.DebugLog("Start RefreshPlayerAttrStateEx!!!") #beforeAtkInterval = curPlayer.GetAtkInterval() - beforeMaxHP = curPlayer.GetMaxHP() + beforeMaxHP = GameObj.GetMaxHP(curPlayer) beforeMoveSpeedValue = GetSpeedValue(curPlayer) beforeMaxProDef = GetMaxProDef(curPlayer) #[金木水火土] @@ -4729,7 +4735,7 @@ mfpSkill = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPSkill % mfpObj.mfpType) mfpEx = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_MFPEx % mfpObj.mfpType) mfpTotal = mfpValue + mfpSkill + mfpEx - mfpDict[mfpObj.mfpType] = mfpTotal + mfpDict[mfpObj.mfpType] = min(mfpTotal, ChConfig.Def_UpperLimit_DWord) if mfpType == ShareDefine.Def_MFPType_Plus: OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Plus, mfpTotal) @@ -4810,12 +4816,13 @@ curPlayer = self.__Player if GetProDefHPPer(curPlayer) == 0: return - maxHP = curPlayer.GetMaxHP() + maxHP = GameObj.GetMaxHP(curPlayer) proDefPer = GetProDefHPPer(curPlayer) #获取策划配置的表格 GodWeapon4 = IpyGameDataPY.GetFuncCfg("GodWeapon4", 2) maxProDef = eval(FormulaControl.GetCompileFormula("GodWeapon4", GodWeapon4)) + maxProDef = min(maxProDef, ChConfig.Def_UpperLimit_DWord) SetMaxProDef(curPlayer, int(maxProDef)) @@ -4962,12 +4969,11 @@ ''' curPlayer = self.__Player #------------------------------计算完毕-------------------------------- - afterMaxHP = curPlayer.GetMaxHP() + afterMaxHP = GameObj.GetMaxHP(curPlayer) addMaxHP = max(0, afterMaxHP - beforeMaxHP) if beforeMaxHP > 0 and addMaxHP > 0 and curPlayer.GetPlayerAction() != IPY_GameWorld.paDie: # 最大血量增加时,同步增加等量的当前血量 (死亡状态下不刷当前血量) - curPlayer.SetHP(min(curPlayer.GetHP() + addMaxHP, afterMaxHP)) - + GameObj.SetHP(curPlayer, min(GameObj.GetHP(curPlayer) + addMaxHP, afterMaxHP)) #self.PrintAttr(curPlayer, "最终的") curPlayer.EndRefreshState() # 统一在刷属性结束逻辑中调用 #--------------------------------------------------------------------- @@ -5113,31 +5119,33 @@ mfpDataList.append(mfpData) totalFightPower += fightPower # 累加总战斗力 - if totalFightPower > ShareDefine.Def_UpperLimit_DWord: - GameWorld.ErrLog("总战力超过数值上限!totalFightPower=%s" % totalFightPower, curPlayer.GetPlayerID()) - totalFightPower = ShareDefine.Def_UpperLimit_DWord - # //A3 A1 各功能模块战斗力信息 #tagMCModuleFightPowerInfo mfpInfo = ChPyNetSendPack.tagMCModuleFightPowerInfo() mfpInfo.Clear() - mfpInfo.TotalFightPower = totalFightPower + mfpInfo.TotalFightPower = totalFightPower % ChConfig.Def_PerPointValue + mfpInfo.TotalFightPoweEx = totalFightPower / ChConfig.Def_PerPointValue mfpInfo.MFPCnt = len(mfpDataList) mfpInfo.MFPList = mfpDataList NetPackCommon.SendFakePack(curPlayer, mfpInfo) - beforeFightPower = curPlayer.GetFightPower() - curPlayer.SetFightPower(totalFightPower, False) + beforeFightPower = GetFightPower(curPlayer) + SetFightPower(curPlayer, totalFightPower) if totalFightPower < beforeFightPower: DataRecordPack.DR_FightPowerChangeInfo(curPlayer, beforeFightPower) highestFightPower = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FightPower_Highest, 0, ChConfig.Def_PDictType_FightPower) + highestFightPower += curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FightPower_HighestEx, 0, + ChConfig.Def_PDictType_FightPower) * ChConfig.Def_PerPointValue if totalFightPower > highestFightPower: - NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FightPower_Highest, totalFightPower, + highestFightPower = totalFightPower + NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FightPower_Highest, highestFightPower % ChConfig.Def_PerPointValue, + ChConfig.Def_PDictType_FightPower) + NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FightPower_HighestEx, highestFightPower / ChConfig.Def_PerPointValue, ChConfig.Def_PDictType_FightPower) GameWorld.DebugLog("总战力: %s, 历史最高战力: %s, beforeFightPower=%s" % (totalFightPower, highestFightPower, beforeFightPower)) PlayerBillboard.UpdatePlayerFPTotalBillboard(curPlayer) - # 记录开服活动数据 - OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, totalFightPower) + # 记录开服活动数据,开服活动前X天理论上不会超过20E,暂不处理 + OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_FightPower, min(totalFightPower, ChConfig.Def_UpperLimit_DWord)) if beforeFightPower != totalFightPower: CrossPlayerData.OnPlayerFightPowerChange(curPlayer) return @@ -5227,15 +5235,15 @@ #玩家未初始化成功, 不修正血量和魔法值, 因此时有可能因为某些影响主角的物品未初始化完毕(如宠物装备) return - curPlayerHP = curPlayer.GetHP() - curPlayerMaxHP = curPlayer.GetMaxHP() + curPlayerHP = GameObj.GetHP(curPlayer) + curPlayerMaxHP = GameObj.GetMaxHP(curPlayer) #======================================================================= # curPlayerMP = curPlayer.GetMP() # curPlayerMaxMP = curPlayer.GetMaxMP() #======================================================================= if curPlayerHP > curPlayerMaxHP: - curPlayer.SetHP(curPlayerMaxHP) + GameObj.SetHPFull(curPlayer) #======================================================================= # if curPlayerMP > curPlayerMaxMP: @@ -5388,8 +5396,8 @@ # self.RefreshAllState() #=============================================================================== - if curPlayer.GetHP() != 0: - curPlayer.SetHP(0) + if GameObj.GetHP(curPlayer) != 0: + GameObj.SetHP(curPlayer, 0) #清空移动错误距离 GameWorld.ClearPlayerPosCount(curPlayer) @@ -5973,12 +5981,23 @@ # 同步前端及GameServer需要自己写通知,设置函数自身不带通知参数 # # 发送0418包 -# SendPropertyRefresh(int inputType, int inputValue, bool boardCast, bool includeSelf = true) +# SendPropertyRefresh(int inputType, int inputValue, int inputValueEx, bool boardCast, bool includeSelf = true) # @param : boardCast-是否广播周围玩家;includeSelf-是否包含自己 # # 通知GsmeServer; -# SendGameServerRefreshState(int inputType, int inputValue) +# SendGameServerRefreshState(int inputType, int inputValue, int inputValueEx) +def SendPropertyRefresh(curPlayer, inputType, value, boardCast=False): + ''' 发送0418包 + @param boardCast: 是否广播周围玩家,一定会发给自己 + ''' + curPlayer.SendPropertyRefresh(inputType, value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue, boardCast) + return + +def SendGameServerRefreshState(curPlayer, inputType, value): + ## 同步属性到GameServer IPY_GRefreshPlayerProperty + curPlayer.SendGameServerRefreshState(inputType, value % ShareDefine.Def_PerPointValue, value / ShareDefine.Def_PerPointValue) + return # 禁言 通知gameServer def SetGMForbidenTalk(curPlayer, value): @@ -6014,16 +6033,16 @@ def __SetGMForbidenTalkValue(curPlayer, value): curPlayer.SetGMForbidenTalk(value) - curPlayer.SendGameServerRefreshState(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, value, False) + SendGameServerRefreshState(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, value) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, value) GameWorld.DebugLog("__SetGMForbidenTalkValue %s" % value, curPlayer.GetPlayerID()) return def SetPlayerAccState(curPlayer, accState): curPlayer.SetAccState(accState) curPlayer.SetExAttr17(accState) # 同步设置该值 0309 封包登录时需要用到 - curPlayer.SendGameServerRefreshState(ShareDefine.CDBPlayerRefresh_ExAttr17, accState) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ExAttr17, accState, False) + SendGameServerRefreshState(curPlayer, ShareDefine.CDBPlayerRefresh_ExAttr17, accState) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ExAttr17, accState) GameWorld.DebugLog("SetPlayerAccState %s" % (accState), curPlayer.GetPlayerID()) return @@ -6039,7 +6058,7 @@ GameWorld.Log("上线时角色为被禁言状态!", curPlayer.GetPlayerID()) __SetGMForbidenTalkValue(curPlayer, 1) else: - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ForbidenTalk, 0) return ## 协助目标玩家ID @@ -6138,9 +6157,15 @@ def GetPrestige(curPlayer): return 0 def SetPrestige(curPlayer, value): return -## 设置模块战斗力 +##总战斗力,支持超过20E +def GetFightPower(curPlayer): return curPlayer.GetFightPowerEx() * ChConfig.Def_PerPointValue + curPlayer.GetFightPower() +def SetFightPower(curPlayer, value): + curPlayer.SetFightPower(value % ChConfig.Def_PerPointValue, value / ChConfig.Def_PerPointValue, False) # 不通知GameServer bNotifyGameServer False + return + +## 设置模块战斗力,最大20E def SetMFPFightPower(curPlayer, mfpType, fightPower): - curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPFightPower % mfpType, fightPower) + curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPFightPower % mfpType, min(fightPower, ChConfig.Def_UpperLimit_DWord)) return ## 获取模块战斗力 @@ -6545,7 +6570,7 @@ def GetSpeedValue(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SpeedValue) def SetSpeedValue(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SpeedValue, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_SpeedValue, value, True) # 移动速度值暂定广播周围玩家 + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_SpeedValue, value, True) # 移动速度值暂定广播周围玩家 ##获取玩家攻击速度,用于计算攻击间隔 # @param curPlayer 玩家实例 @@ -6592,7 +6617,7 @@ def GetNPCHurtAddPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_NPCHurtAddPer) def SetNPCHurtAddPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_NPCHurtAddPer, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_NPCHurtAddPer, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_NPCHurtAddPer, value) #---职业伤害加成--- ## 目标战士伤害加成 @@ -6624,7 +6649,7 @@ def GetLuckyHitReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_LuckyHitReduce) def SetLuckyHitReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_LuckyHitReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_LuckyHitReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_LuckyHitReduce, value) ## 卓越一击伤害减免 def GetGreatHitReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_GreatHitReducePer) @@ -6633,7 +6658,7 @@ def GetSuperHitReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SuperHitReduce) def SetSuperHitReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SuperHitReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_SuperHitReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_SuperHitReduce, value) ## 无视防御伤害减免 def GetIgnoreDefReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_IgnoreDefReducePer) def SetIgnoreDefReducePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_IgnoreDefReducePer, value) @@ -6643,7 +6668,7 @@ def GetLuckyHitRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_LuckyHitRateReduce) def SetLuckyHitRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_LuckyHitRateReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_LuckyHitRateReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_LuckyHitRateReduce, value) ## 抗卓越一击概率 def GetGreatHitRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_GreatHitRateReduce) def SetGreatHitRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_GreatHitRateReduce, value) @@ -6651,12 +6676,12 @@ def GetSuperHitRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SuperHitRateReduce) def SetSuperHitRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SuperHitRateReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_SuperHitRateReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_SuperHitRateReduce, value) ## 抗无视防御概率 def GetIgnoreDefRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_IgnoreDefRateReduce) def SetIgnoreDefRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_IgnoreDefRateReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_IgnoreDefRateReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_IgnoreDefRateReduce, value) #---特殊伤害概率--- ## 富豪一击概率 @@ -6667,30 +6692,30 @@ def GetBleedDamage(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_BleedDamage) def SetBleedDamage(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_BleedDamage, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_BleedDamage, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_BleedDamage, value) ## 最终伤害百分比 def GetFinalHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtPer) def SetFinalHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FinalHurtPer, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FinalHurtPer, value) ## 最终伤害减免百分比 def GetFinalHurtReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtReducePer) def SetFinalHurtReducePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtReducePer, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FinalHurtReducePer, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FinalHurtReducePer, value) ## 最终固定伤害增加 def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt) def SetFinalHurt(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurt, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FinalHurt, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FinalHurt, value) ## 最终固定伤害减少 def GetFinalHurtReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurtReduce) def SetFinalHurtReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FinalHurtReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FinalHurtReduce, value) ## 对指定boss伤害加成固定值 def GetBossIDHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_BossIDHurt) def SetBossIDHurt(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_BossIDHurt, value) @@ -6736,7 +6761,7 @@ def GetOnlyFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_OnlyFinalHurt) def SetOnlyFinalHurt(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_OnlyFinalHurt, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_OnlyFinalHurt, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_OnlyFinalHurt, value) return # PVP攻击回血 @@ -6812,13 +6837,13 @@ def GetFaintRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrFaintRate) def SetFaintRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrFaintRate, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FaintRate, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FaintRate, value) #---击晕抵抗---- def GetFaintDefRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrFaintDefRate) def SetFaintDefRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrFaintDefRate, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FaintDefRate, value, False) - + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_FaintDefRate, value) + #---触发定身---- def GetAtkerFreezed(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrAtkerFreezed) def SetAtkerFreezed(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrAtkerFreezed, value) @@ -6831,43 +6856,43 @@ def GetComboRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrComboRate) def SetComboRate(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrComboRate, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ComboRate, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ComboRate, value) #---连击伤害---- def GetComboDamPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrComboDamPer) def SetComboDamPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrComboDamPer, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ComboDamPer, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ComboDamPer, value) #---技能攻击比例减少---- def GetSkillAtkRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SkillAtkRateReduce) def SetSkillAtkRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SkillAtkRateReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_SkillAtkRateReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_SkillAtkRateReduce, value) #---PVP固定伤害---- def GetDamagePVP(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamagePVP) def SetDamagePVP(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDamagePVP, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_DamagePVP, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_DamagePVP, value) #---PVP固定伤害减少---- def GetDamagePVPReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamagePVPReduce) def SetDamagePVPReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDamagePVPReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_DamagePVPReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_DamagePVPReduce, value) #---伤害输出固定值计算对NPC附加---- def GetDamagePVE(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamagePVE) def SetDamagePVE(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDamagePVE, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_DamagePVE, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_DamagePVE, value) #---伤害输出计算百分比对玩家附加---- def GetDamagePerPVP(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamagePerPVP) def SetDamagePerPVP(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDamagePerPVP, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_DamagePerPVP, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_DamagePerPVP, value) def GetDamagePerPVPReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamagePerPVPReduce) def SetDamagePerPVPReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDamagePerPVPReduce, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_DamagePerPVPReduce, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_DamagePerPVPReduce, value) #---受伤计算百分比---- def GetHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrHurtPer) @@ -6885,7 +6910,7 @@ def GetDamChanceDef(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamChanceDef) def SetDamChanceDef(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDamChanceDef, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_DamChanceDef, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_DamChanceDef, value) #---当前防护值,需存DB---- def GetProDef(curPlayer): return curPlayer.GetExAttr4() @@ -6899,17 +6924,19 @@ def GetMaxProDef(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrMaxProDef) def SetMaxProDef(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrMaxProDef, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_MaxProDef, value, False) # 周围玩家需要通知 + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_MaxProDef, value) # 周围玩家需要通知 + #---生命上限换算为防护值的百分比---- def GetProDefHPPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrProDefHPPer) def SetProDefHPPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrProDefHPPer, value) - #curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ProDefHPPer, value, False) + #SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ProDefHPPer, value) + #---防护值吸收伤害比率---- def GetProDefAbsorb(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrProDefAbsorb) def SetProDefAbsorb(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrProDefAbsorb, value) - #curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_ProDefAbsorb, value, False) + #SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_ProDefAbsorb, value) #---宠物攻击提升值---- def GetPetMinAtk(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetMinAtk) @@ -6922,7 +6949,7 @@ # def GetPetDamPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrPetDamPer) # def SetPetDamPer(curPlayer, value): # curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrPetDamPer, value) -# curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_PetDamPer, value, False) +# SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_PetDamPer, value) #=============================================================================== #---宠物技能伤害百分比提升---- def GetPetSkillAtkRate(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_PetSkillAtkRate) @@ -6940,8 +6967,8 @@ def SetDropEquipPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDropEquipPer, value) #---功能层防御值---- -def GetFuncDef(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CopyFuncAttr % (ChConfig.TYPE_Calc_AttrDEF - 1)) -def SetFuncDef(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_CopyFuncAttr % (ChConfig.TYPE_Calc_AttrDEF - 1), value) +def GetFuncDef(curPlayer): return EffGetSet.GetCopyFuncAttrValue(curPlayer, ChConfig.TYPE_Calc_AttrDEF) +def SetFuncDef(curPlayer, value): EffGetSet.SetCopyFuncAttrValue(curPlayer, ChConfig.TYPE_Calc_AttrDEF, value) #普通攻击增伤:普通攻击附加的固定值伤害 def GetNormalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_NormalHurt) @@ -6960,13 +6987,13 @@ def GetLostYinjiTime(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_LostYinjiTime) def SetLostYinjiTime(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_LostYinjiTime, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_YinjiTime, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_YinjiTime, value) # 当前印记数 def GetYinjiCnt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_YinjiCnt) def SetYinjiCnt(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_YinjiCnt, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_YinjiCnt, value, False) + SendPropertyRefresh(curPlayer, ShareDefine.CDBPlayerRefresh_YinjiCnt, value) # 减少指定技能组CD XX% def GetTheFBSkillsCD(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TheFBSkillsCD) @@ -7138,7 +7165,7 @@ ## 设置玩家字典值, 存库 def NomalDictSetProperty(curPlayer, key, value, dType=0): if CrossPlayerData.IsNeedProcessCrossPlayer(curPlayer) and key not in \ - [ChConfig.Def_PDict_FightPower_Total, ChConfig.Def_PlayerKey_CrossRegisterMap]: + [ChConfig.Def_PDict_FightPower_Total, ChConfig.Def_PDict_FightPower_TotalEx, ChConfig.Def_PlayerKey_CrossRegisterMap]: playerID = curPlayer.GetPlayerID() changeDict = PyGameData.g_crossPlayerDictChangeInfo.get(playerID, {}) changeDict[(key, dType)] = value -- Gitblit v1.8.0