From fc0477a43ec7ad1536a15efd2f229b140ba33fc7 Mon Sep 17 00:00:00 2001 From: hch <305670599@qq.com> Date: 星期六, 25 五月 2019 16:53:05 +0800 Subject: [PATCH] 6942 【后端】视野层级设计 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py | 39 +++++++++++++++++++++++++++++++++++---- 1 files changed, 35 insertions(+), 4 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py index c98bdaa..e021870 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py @@ -27,7 +27,7 @@ ## 添加BUFF后的逻辑 # @param None # @return None -def DoAddBuffOver(curObj, addBuff, curEffect, tick): +def DoAddBuffOver(curObj, addBuff, curEffect, tick, buffOwner): stateType = curEffect.GetEffectValue(0) GameObj.SetPyPlayerState(curObj, stateType, 1) @@ -47,14 +47,45 @@ def OnBuffDisappear(curObj, curSkill, curBuff, curEffect, tick): stateType = curEffect.GetEffectValue(0) - GameObj.SetPyPlayerState(curObj, stateType, 0) + if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType): + GameObj.SetPyPlayerState(curObj, stateType, 0) + GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType)) return def OnBuffDisappearEx(curObj, curSkill, curBuff, curEffect, tick): stateType = curEffect.GetEffectValue(0) - GameObj.SetPyPlayerState(curObj, stateType, 0) + if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType): + GameObj.SetPyPlayerState(curObj, stateType, 0) + GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType)) return - \ No newline at end of file + +# 大于等于2个状态 则不清理状态 +def CanDelStateEffect(curObj, effectID, stateType): + cnt = 0 + for buffType in xrange(IPY_GameWorld.bfBuff, IPY_GameWorld.btBufMax): + if buffType in ChConfig.Def_BuffType_OnlyPlayer: + continue + + buffTuple = SkillCommon.GetBuffManagerByBuffType(curObj, buffType) + #通过类型获取目标的buff管理器为空,则跳出 + if buffTuple == (): + continue + + buffManager = buffTuple[0] + + for i in range(buffManager.GetEffectCount()): + effect = buffManager.GetEffect(i) + if not effect: + continue + if effect.GetEffectID() != effectID: + continue + + if effect.GetEffectValue(0) == stateType: + cnt += 1 + if cnt >= 2: + return False + + return True -- Gitblit v1.8.0