| | |
| | | import PlayerDogz
|
| | | import ChPlayer
|
| | | import GMShell
|
| | | import GameObj
|
| | |
|
| | | import random
|
| | | import types
|
| | |
| | | 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
|
| | |
| | | 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:
|
| | |
| | | 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 信息参数列表
|
| | |
| | | return
|
| | |
|
| | | #副本中不打断
|
| | | if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
|
| | | return
|
| | | #if GameWorld.GetMap().GetMapFBType() != IPY_GameWorld.fbtNull:
|
| | | # return
|
| | |
|
| | | tagObj = curPlayer.GetActionObj()
|
| | |
|
| | |
| | | #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)
|
| | |
|
| | |
| | | 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)
|
| | | PyGameData.g_playerEquipPartAttrDict.pop(playerID, None)
|
| | | PyGameData.g_equipChangeClassLVInfo.pop(playerID, None)
|
| | | return
|
| | |
|
| | | ##更新保存玩家在线时间
|
| | |
| | | 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
|
| | |
| | | NotifyCode(curPlayer, "SingleEnterPK", [mapID])
|
| | | return
|
| | |
|
| | | tick = GameWorld.GetGameWorld().GetTick()
|
| | | for mapIDList in ChConfig.Def_FB_MapID.values():
|
| | | if mapID not in mapIDList:
|
| | | continue
|
| | | 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
|
| | | break
|
| | | |
| | | |
| | | # 需要动态分布线路的地图,发送到跨服服务器进行分配
|
| | | if mapID in ChConfig.Def_CrossDynamicLineMap:
|
| | | extendInfo = {}
|
| | |
| | | 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
|
| | |
|
| | | ##玩家进入副本
|
| | |
| | | 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)
|
| | |
| | | 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) # 移动速度值
|
| | |
| | | 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() # 对目标战士伤害加成
|
| | |
| | | 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) # 连击伤害
|
| | |
| | | maxLV = IpyGameDataPY.GetFuncCfg("PlayerMaxLV", 1)
|
| | |
|
| | | curPlayer.BeginRefreshState()
|
| | | befXP = curPlayer.GetXP()
|
| | | #befXP = curPlayer.GetXP()
|
| | | befLV = curPlayer.GetLV()
|
| | | befFreePoint = curPlayer.GetFreePoint()
|
| | | befBaseSTR = curPlayer.GetBaseSTR()
|
| | |
| | | beforeMaxHP = curPlayer.GetMaxHP()
|
| | | beforeMoveSpeedValue = GetSpeedValue(curPlayer)
|
| | | beforeMaxProDef = GetMaxProDef(curPlayer)
|
| | | #[金木水火土]
|
| | | beforePointList = [GetMetal(curPlayer), GetWood(curPlayer), GetWater(curPlayer), GetFire(curPlayer), GetEarth(curPlayer)]
|
| | | #构建玩家刷新通知客户端字典, 缓存[索引, 数值]
|
| | | playerStateDict = {}
|
| | | for index in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX):
|
| | |
| | |
|
| | | #通知基础属性
|
| | | self.__SyncBaseAttr(curPlayer, baseAttrList)
|
| | | |
| | | #五行灵根变更需要处理的逻辑
|
| | | afterPointList = [GetMetal(curPlayer), GetWood(curPlayer), GetWater(curPlayer), GetFire(curPlayer), GetEarth(curPlayer)]
|
| | | if beforePointList !=afterPointList:
|
| | | diffPointAttrList = []
|
| | | for i, attrID in enumerate([ShareDefine.Def_Effect_Metal, ShareDefine.Def_Effect_Wood, ShareDefine.Def_Effect_Water,
|
| | | ShareDefine.Def_Effect_Fire, ShareDefine.Def_Effect_Earth]):
|
| | | if beforePointList[i] != afterPointList[i]:
|
| | | diffPointAttrList.append(attrID)
|
| | | SkillShell.RefreshElementSkillByAttr(curPlayer, diffPointAttrList)
|
| | | |
| | | |
| | | # 同步前端战力,因为有 SetFightPower 所以累加战力放在这里所有刷新及计算处理完后才处理,才能正常触发set同步前端
|
| | | self.SendModuleFightPowerPack(curPlayer, mfpDict)
|
| | | billFuncCnt = len(PyGameData.g_refreshAttrBillboardFunc) # 只处理固定次数,防止死循环
|
| | |
| | | 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) # 会心一击伤害
|
| | |
| | | ChConfig.TYPE_Calc_AttrPetExpRate:GameWorld.GetGameWorld().GetExpRate(),
|
| | | 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,
|
| | | ChConfig.TYPE_Calc_YinjiTime:IpyGameDataPY.GetFuncCfg('Yinji', 1), # 每X秒自动消失一个印记
|
| | | }
|
| | |
|
| | | for i in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX):
|
| | |
| | | DoPlayerDead(curPlayer)
|
| | |
|
| | | PlayerTJG.PlayerTJGReborn(curPlayer, tick)
|
| | | GameObj.ClearPyPlayerState(curPlayer)
|
| | | return
|
| | |
|
| | |
|
| | |
| | | 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)
|
| | |
| | | ## 抗卓越一击概率
|
| | | 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):
|
| | |
| | | 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):
|
| | |
| | | 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):
|
| | |
| | | def GetFabaoHurtPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_FabaoHurtPer)
|
| | | def SetFabaoHurtPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_FabaoHurtPer, value)
|
| | |
|
| | | # 每X秒自动消失一个印记, 毫秒记录
|
| | | 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)
|
| | |
|
| | | # 当前印记数
|
| | | 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)
|
| | |
|
| | | # 减少指定技能组CD XX%
|
| | | def GetTheFBSkillsCD(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_TheFBSkillsCD)
|
| | | def SetTheFBSkillsCD(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_TheFBSkillsCD, value)
|
| | | # 灼烧固定伤害
|
| | | def GetBurnValue(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_BurnValue)
|
| | | def SetBurnValue(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_BurnValue, value)
|
| | | # 延长灼烧时间百分比
|
| | | def GetBurnTimePer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_BurnTimePer)
|
| | | def SetBurnTimePer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_BurnTimePer, value)
|
| | | # 减移动速度百分比
|
| | | def GetSubSpeedPer(curPlayer): return curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_SubSpeedPer)
|
| | | def SetSubSpeedPer(curPlayer, value): curPlayer.SetDict(ChConfig.Def_PlayerKey_SubSpeedPer, value)
|
| | |
|
| | | ## 计算功能背包物品属性
|
| | | # @param curPlayer 当前玩家
|
| | | # @param packType 背包类型
|