From 4a5b10c5ca95f49cf3700619e1033da645c9de89 Mon Sep 17 00:00:00 2001 From: xdh <xiefantasy@qq.com> Date: 星期五, 23 十一月 2018 11:37:37 +0800 Subject: [PATCH] 4969 上古战场退出副本清除buff --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 60 +++++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 37 insertions(+), 23 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 bb43579..ef41edc 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -83,6 +83,7 @@ import PlayerFamilyTech import PlayerCostRebate import PlayerFairyCeremony +import FunctionNPCCommon import ChNetSendPack import PlayerState import QuestCommon @@ -3395,8 +3396,7 @@ __AttrName = "%s" # 参数为ChConfig.Def_Calc_AllAttrType_MAX对应所有属性列表索引 __AttrNameNoline = "Noline_%s" # 参数为ChConfig.Def_Calc_AllAttrType_MAX对应所有属性列表索引 - __NolineAttrList = [ChConfig.TYPE_Calc_AttrSpeed, ChConfig.TYPE_Calc_AttrATKMin, ChConfig.TYPE_Calc_AttrATKMax, - ChConfig.TYPE_Calc_AttrMaxHP] # 需要记录的非线性战斗属性 + __NolineAttrList = [ChConfig.TYPE_Calc_AttrSpeed] # 需要记录的非线性战斗属性 ## 初始化 # @param self 类实例 @@ -3504,21 +3504,10 @@ #其他需作为公式参数的系数 AtkSpeedParameter = fpParam.GetCftAtkSpeed() LuckyHitParameter = fpParam.GetCftLuckyHit() - - fpEx = 0 - #装备模块特殊处理 - if self.mfpType == ShareDefine.Def_MFPType_Equip: - AtkPer = getattr(self, self.__AttrNameNoline % ChConfig.TYPE_Calc_AttrATKMax) * fpParam.GetCftAtkPer() # 攻击百分比系数 - MaxHPPer = getattr(self, self.__AttrNameNoline % ChConfig.TYPE_Calc_AttrMaxHP) * fpParam.GetCftMaxHPPer() # 生命百分比系数 - fpEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 3)) - GameWorld.DebugLog("装备模块攻击生命百分比传奇属性战力: fpEx=%s" % fpEx) - else: - AtkPer = 0 - MaxHPPer = 0 #获取策划配置的表格 FightpowerFormula = IpyGameDataPY.GetFuncCfg("FightpowerFormula") - totalFightPower = eval(FormulaControl.GetCompileFormula("FightpowerFormula", FightpowerFormula)) + fpEx + totalFightPower = eval(FormulaControl.GetCompileFormula("FightpowerFormula", FightpowerFormula)) #GameWorld.DebugLog("MfpType=%s,FightPower=%s, %s" % (self.mfpType, totalFightPower, self.GetMFPAttrStr())) if totalFightPower > ShareDefine.Def_UpperLimit_DWord: @@ -3937,7 +3926,8 @@ FBLogic.OnPlayerLVUp(curPlayer) # 记录开服活动冲级数据 OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_LV, curPlayer.GetLV()) - + #神秘限购 + FunctionNPCCommon.MysticalShopOpen(curPlayer, befLV, aftLV) #不需要做升级任务, 设置玩家经验 SetPlayerTotalExp(curPlayer, curTotalExp) return @@ -5110,6 +5100,7 @@ index = 0 buffSkillIDList = [] + passiveEff = PassiveBuffEffMng.GetPassiveEffManager().GetPassiveEff(curPlayer) while index < buffState.GetBuffCount(): curBuff = buffState.GetBuff(index) #异常 @@ -5124,10 +5115,16 @@ continue #BuffSkill.DoBuffDisApper(curPlayer, curBuff, tick) - buffSkillIDList.append([curBuff.GetSkill().GetSkillID(), curBuff.GetOwnerID(), curBuff.GetOwnerType()]) + #buffSkillIDList.append([curBuff.GetSkill().GetSkillID(), curBuff.GetOwnerID(), curBuff.GetOwnerType()]) + buffSkillIDList.append(curBuff.GetSkill().GetSkillID()) + #GameWorld.DebugLog("死亡清理-----%s"%curBuff.GetSkill().GetSkillID()) + if passiveEff: + passiveEff.DelBuffInfo(curBuff.GetSkill()) + #删除这个buff buffState.DeleteBuffByIndex(index) - + + SkillShell.ClearBuffEffectBySkillIDList(curPlayer, buffState, buffSkillIDList) return @@ -5634,6 +5631,9 @@ # SetExAttr1 ~ SetExAttr14(DWORD uiExAttr10, bool bNotifyAll = false, bool bNotifyGameServer = false) # @param bNotifyAll: 是否广播所周围玩家,默认false,只会发给自己 # @param bNotifyGameServer: 是否同步GameServer,默认false +# SetExAttr15 ~ SetExAttr20(DWORD uiExAttr15) +# 15~20扩展属性同步封包:0309 选角登录简短信息、0434 周围玩家出现、0102 登录地图玩家信息; +# 同步前端及GameServer需要自己写通知,设置函数自身不带通知参数 # # 发送0418包 # SendPropertyRefresh(int inputType, int inputValue, bool boardCast, bool includeSelf = true) @@ -5641,6 +5641,8 @@ # # 通知GsmeServer; # SendGameServerRefreshState(int inputType, int inputValue) + +# SetExAttr15 ~ 18 对应神兵类型等级,场景特效用 # 禁言 通知gameServer def SetGMForbidenTalk(curPlayer, value): @@ -6655,12 +6657,24 @@ def GetCalcAttrListValue(curPlayer, funcIndex): ## 获取功能点预先计算的所加属性值 attrList = [{} for _ in range(4)] - for attrIndex, attrDict in enumerate(attrList): - for i in xrange(Def_MaxAddAttrTypeCnt): - attrType = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CalcAddAttrType % (funcIndex, attrIndex, i)) - if attrType == 0: - break - attrDict[attrType] = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CalcAddAttrValue % (funcIndex, attrIndex, i)) + if isinstance(funcIndex, int): + funcIndexList = [funcIndex] + elif isinstance(funcIndex, list): + funcIndexList = funcIndex + else: + return attrList + + for funcIndex in funcIndexList: + for attrIndex, attrDict in enumerate(attrList): + for i in xrange(Def_MaxAddAttrTypeCnt): + attrType = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CalcAddAttrType % (funcIndex, attrIndex, i)) + if attrType == 0: + break + attrValue = curPlayer.GetDictByKey(ChConfig.Def_PlayerKey_CalcAddAttrValue % (funcIndex, attrIndex, i)) + if attrType in attrDict: + attrDict[attrType] = attrValue + attrDict[attrType] + else: + attrDict[attrType] = attrValue return attrList ## 刷属性时累加功能事先计算好的属性值 -- Gitblit v1.8.0