From 22c0a62a2b77f5e9fff6faa1164216d310e73404 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期三, 22 五月 2019 11:04:03 +0800
Subject: [PATCH] 6501 任务状态通知后再触发功能开启
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameBuffs/Buff_4012.py | 42 ++++++++++++++++++++++++++++++++++++++++--
1 files changed, 40 insertions(+), 2 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 9f93f20..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,7 +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)
+ if CanDelStateEffect(curObj, ChConfig.Def_Skill_Effect_BuffState, stateType):
+ GameObj.SetPyPlayerState(curObj, stateType, 0)
+ GameWorld.DebugLog("取消影响玩家状态效果---%s - %s"%(curObj.GetID(), stateType))
+ return
+
+
+# 大于等于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