From c939b30761259159d62bdc92320375310b3bb010 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 22 四月 2019 21:11:16 +0800 Subject: [PATCH] 6459 【后端】【2.0】缥缈仙域开发单(查询副本功能线路人数信息逻辑修改,支持查询妖王地图) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 167 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 122 insertions(+), 45 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 8ab0775..edf4546 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -352,6 +352,18 @@ SendMail("", content, 30, playerIDList, addItemList, gold, goldPaper, silver, detail, moneySource) return +def SendCrossMail(serverGroupID, mailTypeKey, playerIDList, addItemList, paramList=[]): + ## 发送跨服邮件 + if not serverGroupID: + return + dataMsg = {"MailTypeKey":mailTypeKey, "Player":playerIDList} + if addItemList: + dataMsg["Item"] = CombineMailItem(addItemList) + if paramList: + dataMsg["Param"] = paramList + GameWorld.SendMsgToClientServer(ShareDefine.CrossServerMsg_SendMail, dataMsg, [serverGroupID]) + return + ## 功能发放物品补偿/奖励邮件 # @param addItemList [(itemID, itemCnt, 是否拍品), {或物品信息字典}, ...] # @return @@ -370,6 +382,13 @@ if GameWorld.IsCrossServer(): return + combineItemList = CombineMailItem(addItemList) + cmdList = [title, content, getDays, playerIDList, combineItemList, gold, goldPaper, silver, detail, moneySource] + GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SendMail", '%s' % (cmdList), len(str(cmdList))) + return True + +def CombineMailItem(addItemList): + ## 合并邮件物品 itemCountDict = {} combineItemList = [] # 合并后的物品列表 for mailItem in addItemList: @@ -399,9 +418,7 @@ for key, itemCnt in itemCountDict.items(): itemID, isAuctionItem = key combineItemList.append((itemID, itemCnt, isAuctionItem)) - cmdList = [title, content, getDays, playerIDList, combineItemList, gold, goldPaper, silver, detail, moneySource] - GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, "SendMail", '%s' % (cmdList), len(str(cmdList))) - return True + return combineItemList ## 构建系统提示参数列表 # @param msgParamList 信息参数列表 @@ -778,8 +795,8 @@ return #副本中不打断 - if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull: - return + #if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull: + # return tagObj = curPlayer.GetActionObj() @@ -799,10 +816,14 @@ #GameWorld.Log("BreakPlayerCollect ->没有这个NPC", curPlayer.GetPlayerID()) return - if curNPC.GetNPCID() not in ReadChConfig.GetEvalChConfig('BreakPlayerCollectNPCIDList'): + npcID = curNPC.GetNPCID() + collectNPCIpyData = IpyGameDataPY.GetIpyGameDataNotLog("CollectNPC", npcID) + if not collectNPCIpyData: return - GameWorld.DebugLog(' 采集被打断 采集物NPCID=%s' % curNPC.GetNPCID()) + if not collectNPCIpyData.GetCanBreakCollect(): + return + #取消采集状态 ChangePlayerAction(curPlayer, IPY_GameWorld.paNull) @@ -1211,12 +1232,11 @@ PyGameData.g_needRefreshMapServerState = True # 有玩家离开地图设置需要刷新 PlayerSuccess.FinishDelayAddSuccessProgress(curPlayer, tick) - + playerID = curPlayer.GetPlayerID() if not isDisconnect: CrossPlayerData.ClearCrossSyncDataCache(curPlayer) - + PyGameData.g_fbBuyBuffTimeDict.pop(playerID, None) #清除地图玩家缓存 - playerID = curPlayer.GetPlayerID() PyGameData.g_zhuXianSkillAddPerDict.pop(playerID, None) PyGameData.g_zhuXianSkillReducePerDict.pop(playerID, None) PyGameData.g_playerFuncAttrDict.pop(playerID, None) @@ -1593,6 +1613,18 @@ if mapID not in ChConfig.Def_CrossMapIDList: return + tick = GameWorld.GetGameWorld().GetTick() + lastRequestTick = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_RequestEnterCrossServerTick) + if lastRequestTick and tick - lastRequestTick < 5000: + GameWorld.DebugLog(" 请求进入跨服CD中!", playerID) + NotifyCode(curPlayer, "RequestEnterCrossServerCD") + return + + crossRegisterMap = curPlayer.NomalDictGetProperty(ChConfig.Def_PlayerKey_CrossRegisterMap) + if crossRegisterMap: + GameWorld.ErrLog("跨服已经在上传数据,不重复提交!crossRegisterMap=%s,mapID=%s" % (crossRegisterMap, mapID), playerID) + return + if GameWorld.IsCrossServer(): GameWorld.DebugLog("跨服服务器不允许该操作!") return @@ -1617,22 +1649,39 @@ NotifyCode(curPlayer, "SingleEnterPK", [mapID]) return + fbIpyData = FBCommon.GetFBIpyData(mapID) + if fbIpyData: + fbLineIpyData = FBCommon.GetFBLineIpyData(mapID, lineID, False) + if not fbLineIpyData: + GameWorld.DebugLog("副本表找不到副本对应功能线路!mapID=%s,lineID=%s" % (mapID, lineID)) + return + ret = FBCommon.CheckCanEnterFBComm(curPlayer, mapID, lineID, fbIpyData, fbLineIpyData) + if ret != ShareDefine.EntFBAskRet_OK: + return + + if not FBLogic.OnEnterFBEvent(curPlayer, mapID, lineID, tick): + GameWorld.DebugLog(" OnEnterFBEvent False!", curPlayer.GetPlayerID()) + NotifyCode(curPlayer, "SingleEnterDefaul") + return + # 需要动态分布线路的地图,发送到跨服服务器进行分配 if mapID in ChConfig.Def_CrossDynamicLineMap: extendInfo = {} if mapID == ChConfig.Def_FBMapID_CrossDemonKing: - bossID = GameLogic_CrossDemonKing.GetCurFBLineBOSSID(lineID) + bossID = GameLogic_CrossDemonKing.GetCurFBLineBOSSID(mapID, lineID) if not bossID: return extendInfo["BossID"] = bossID - msgDict = {"PlayerID":curPlayer.GetPlayerID(), "DataMapID":mapID, "FuncLineID":lineID} + msgDict = {"PlayerID":curPlayer.GetPlayerID(), "MapID":mapID, "FuncLineID":lineID} if extendInfo: msgDict.update(extendInfo) GameWorld.SendMsgToCrossServer(ShareDefine.ClientServerMsg_EnterFB, msgDict) - return - - GY_Query_CrossRealmReg.RegisterEnterCrossServer(curPlayer, mapID) + else: + isSend = GY_Query_CrossRealmReg.RegisterEnterCrossServer(curPlayer, mapID, lineID=lineID) + if not isSend: + return + curPlayer.SetDict(ChConfig.Def_PlayerKey_RequestEnterCrossServerTick, tick) return ##玩家进入副本 @@ -1728,6 +1777,9 @@ if enterCnt >= FBCommon.GetEnterFBMaxCnt(curPlayer, ChConfig.Def_FBMapID_ZhuXianBoss): if curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_ZhuXianBossHelpCnt): extendParamList = [bossID, curPlayer.GetFamilyID()] + elif mapID == ChConfig.Def_FBMapID_DemonKing: + bossID = GameLogic_CrossDemonKing.GetCurFBLineBOSSID(mapID, lineID) + extendParamList = [bossID] SendToGameServerEnterFB(curPlayer, mapID, lineID, tick, extendParamList) return @@ -3469,8 +3521,6 @@ def ClearAttr(self): for attrIndex in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX): value = 0 -# if attrIndex == ChConfig.TYPE_Calc_SuperHit: -# value = ChConfig.Def_SuperHitPercent # 默认最低暴击倍值 setattr(self, self.__AttrName % attrIndex, value) for attrIndex in self.__NolineAttrList: setattr(self, self.__AttrNameNoline % attrIndex, 0) @@ -3519,15 +3569,18 @@ Miss = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrMiss) * fpParam.GetCftMiss() # 闪避值 AtkSpeed = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrAtkSpeed) # 攻击速度(数值非攻击间隔) SuperHitRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHitRate) # 暴击率 - SuperHit = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHit) # 暴击伤害倍率 - SuperHitReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHitReducePer) * fpParam.GetCftSuperHitReduce() # 暴击伤害减免 + SuperHitRateReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHitRateReduce) # 暴击概率抗性 + SuperHit = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHit) # 暴击伤害固定值 + SuperHitReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SuperHitReduce) * fpParam.GetCftSuperHitReduce() # 暴击固定减伤 LuckyHitRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHitRate) # 会心一击 - LuckyHit = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHit) # 会心一击伤害倍率 LuckyHitRateReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHitRateReduce) * fpParam.GetCftLuckyHitRateReduce() # 会心一击概率抗性 + LuckyHit = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHit) # 会心一击伤害固定值 + LuckyHitReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_LuckyHitReduce) # 会心一击伤害固定减伤 SkillAtkRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SkillAtkRate) * fpParam.GetCftSkillAtkRate() # 技能攻击比例加成 SkillAtkRateReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_SkillAtkRateReduce) * fpParam.GetCftSkillAtkRateReduce() # 技能攻击比例减少 - DamagePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePer) * fpParam.GetCftDamagePer() # 伤害输出计算百分比 - DamReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrDamReduce) * fpParam.GetCftDamReduce() # 伤害输出计算百分比减少, 伤害吸收 + DamagePVP = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVP) * fpParam.GetCftDamagePer() # PVP固定伤害 + DamagePVPReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVPReduce) * fpParam.GetCftDamReduce() # PVP固定减伤 + DamagePVE = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamagePVE) * fpParam.GetCftDamagePer() # PVE固定伤害 HPRestore = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_HPRestorePer) # 自动回复血量,固定值 DamBackPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_DamBackPer) * fpParam.GetCftDamBackPer() # 反伤百分比 SpeedValue = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_AttrSpeed) # 移动速度值 @@ -3546,6 +3599,8 @@ FaintDefRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FaintDefRate) * fpParam.GetCftFaintDefRate() # 击晕抵抗 FinalHurt = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurt) # 最终固定伤害增加 FinalHurtReduce = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurtReduce) # 最终固定伤害减少 + FinalHurtPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurtPer) # 最终伤害万分率 + FinalHurtReducePer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FinalHurtReducePer) # 最终伤害减少万分率 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() # 对目标战士伤害加成 @@ -3554,6 +3609,12 @@ 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() # 弓箭攻击伤害减免 + + NormalHurt = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_NormalHurt) + NormalHurtPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_NormalHurtPer) + FabaoHurt = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FabaoHurt) + FabaoHurtPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_FabaoHurtPer) + Luck = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_Luck) ComboRate = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_ComboRate) # 连击几率 ComboDamPer = getattr(self, self.__AttrName % ChConfig.TYPE_Calc_ComboDamPer) # 连击伤害 @@ -4613,8 +4674,8 @@ setAttrDict[ChConfig.AttrName_DefRate] = int(lvIpyData.GetReMiss() * attrPer) # 闪避 setAttrDict[ChConfig.AttrName_AtkSpeed] = int(lvIpyData.GetReAtkSpeed() * attrPer) # 攻击速度 setAttrDict[ChConfig.AttrName_SkillAtkRate] = int(lvIpyData.GetReSkillAtkRate() * attrPer) # 技能伤害比例 - setAttrDict[ChConfig.AttrName_DamagePer] = int(lvIpyData.GetReDamagePer() * attrPer) # 增加伤害 - setAttrDict[ChConfig.AttrName_DamReducePer] = int(lvIpyData.GetReDamReduce() * attrPer) # 减少伤害 + 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) # 无视防御比例 setAttrDict[ChConfig.AttrName_LuckyHitRate] = int(lvIpyData.GetReLuckyHitRate() * attrPer) # 会心一击率 setAttrDict[ChConfig.AttrName_LuckyHit] = int(lvIpyData.GetReLuckyHit() * attrPer) # 会心一击伤害 @@ -4950,9 +5011,6 @@ ChConfig.TYPE_Calc_HitSucessRate:ChConfig.Def_MaxRateValue, ChConfig.TYPE_Calc_CurePer:ChConfig.Def_MaxRateValue, - #ChConfig.TYPE_Calc_SuperHit:ChConfig.Def_SuperHitPercent, - #ChConfig.TYPE_Calc_GreatHit:ChConfig.Def_GreatHitVal, - #ChConfig.TYPE_Calc_LuckyHit:ChConfig.Def_LuckyHitVal, } for i in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX): @@ -6274,16 +6332,19 @@ def SetJobCAtkReducePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_JobCAtkReducePer, value) #---特殊伤害减免--- -## 会心一击伤害减免 -def GetLuckyHitReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_LuckyHitReducePer) -def SetLuckyHitReducePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_LuckyHitReducePer, value) +## 会心一击伤害减免固定值 +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) + ## 卓越一击伤害减免 def GetGreatHitReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_GreatHitReducePer) def SetGreatHitReducePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_GreatHitReducePer, value) -## 致命一击伤害减免 -def GetSuperHitReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SuperHitReducePer) -def SetSuperHitReducePer(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_SuperHitReducePer, value) +## 暴击伤害减免 +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) ## 无视防御伤害减免 def GetIgnoreDefReducePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_IgnoreDefReducePer) @@ -6298,9 +6359,11 @@ ## 抗卓越一击概率 def GetGreatHitRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_GreatHitRateReduce) def SetGreatHitRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_GreatHitRateReduce, value) -## 抗致命一击概率 +## 抗暴击概率 def GetSuperHitRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SuperHitRateReduce) -def SetSuperHitRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SuperHitRateReduce, value) +def SetSuperHitRateReduce(curPlayer, value): + curPlayer.SetDict(ChConfig.Def_PlayerKey_SuperHitRateReduce, value) + curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_SuperHitRateReduce, value, False) ## 抗无视防御概率 def GetIgnoreDefRateReduce(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_IgnoreDefRateReduce) def SetIgnoreDefRateReduce(curPlayer, value): @@ -6323,6 +6386,13 @@ def SetFinalHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FinalHurtPer, value) curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_FinalHurtPer, value, False) + +## 最终伤害减免百分比 +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) + ## 最终固定伤害增加 def GetFinalHurt(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FinalHurt) def SetFinalHurt(curPlayer, value): @@ -6485,15 +6555,22 @@ def SetSkillAtkRateReduce(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SkillAtkRateReduce, value) curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_SkillAtkRateReduce, value, False) -#---伤害输出计算百分比---- -def GetDamagePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamagePer) -def SetDamagePer(curPlayer, value): - curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDamagePer, value) - curPlayer.SendPropertyRefresh(ShareDefine.CDBPlayerRefresh_DamagePer, value, False) -#---伤害输出计算百分比对NPC附加---- -def GetDamagePerPVE(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamagePerPVE) -def SetDamagePerPVE(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrDamagePerPVE, 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) +#---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) +#---伤害输出固定值计算对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) + #---伤害输出计算百分比对玩家附加---- def GetDamagePerPVP(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_AttrDamagePerPVP) def SetDamagePerPVP(curPlayer, value): -- Gitblit v1.8.0