Показать сообщение отдельно
Непрочитано 19.06.2011, 15:53   #1
Пользователь

Автор темы (Топик Стартер) Эффект от умения(магии) * закончился

Такой вопрос. Кто может скинуть кусок скрипта метода protected void addEffectFromQueue(L2Effect newEffect)
Код:
*L2Effect*
--------------------------------------

	protected void addEffectFromQueue(L2Effect newEffect)
	{
		if (newEffect == null) return;

		L2Skill newSkill = newEffect.getSkill();

		if (newSkill.isDebuff())
		{
			if (_debuffs == null) _debuffs = new FastList<L2Effect>().shared();
			for (L2Effect e : _debuffs)
			{
				if (e != null
						&& e.getSkill().getId() == newEffect.getSkill().getId()
						&& e.getEffectType() == newEffect.getEffectType()
						&& e.getStackOrder() == newEffect.getStackOrder()
						&& e.getStackType().equals(newEffect.getStackType()))
				{
					// Started scheduled timer needs to be canceled.
					newEffect.exit(true);
					return; 
				}
			}
			_debuffs.addLast(newEffect);
		}
		else
		{
			if (_buffs == null) _buffs = new FastList<L2Effect>().shared();

			for (L2Effect e : _buffs)
			{
				if (e != null
						&& e.getSkill().getId() == newEffect.getSkill().getId()
						&& e.getEffectType() == newEffect.getEffectType()
						&& e.getStackOrder() == newEffect.getStackOrder()
						&& e.getStackType().equals(newEffect.getStackType()))
				{
					e.exit(true);
				}
			}

			// if max buffs, no herb effects are used, even if they would replace one old
			if (newEffect.isHerbEffect() && getBuffCount() >= _owner.getMaxBuffCount())
			{ 
				newEffect.stopEffectTask(); 
				return; 
			}

			// Remove first buff when buff list is full
			if (!doesStack(newSkill) && !newSkill.is7Signs())
			{
				int effectsToRemove;
				if (newSkill.isDance())
				{
					effectsToRemove = getDanceCount() - Config.DANCES_MAX_AMOUNT;
					if (effectsToRemove >= 0)
					{
						for (L2Effect e : _buffs)
						{
							if (e == null || !e.getSkill().isDance())
								continue;
							
							// get first dance
							e.exit(true);
							effectsToRemove--;
							if (effectsToRemove < 0)
								break;
						}
					}
				}
				else
				{
					effectsToRemove = getBuffCount() - _owner.getMaxBuffCount();
					if (effectsToRemove >= 0)
					{
						switch (newSkill.getSkillType())
						{
							case BUFF:
							case REFLECT:
							case HEAL_PERCENT:
							case MANAHEAL_PERCENT:
								for (L2Effect e : _buffs)
								{
									if (e == null || e.getSkill().isDance())
										continue;

									switch (e.getSkill().getSkillType())
									{
										case BUFF:
										case REFLECT:
										case HEAL_PERCENT:
										case MANAHEAL_PERCENT:
											e.exit(true);
											effectsToRemove--;
											break; // break switch()
										default:
											continue; // continue for()
									}
									if (effectsToRemove < 0)
										break; // break for()
								}
						}
					}
				}
			}
У меня такая прабла. Если скил стакающийся(стак ордер != null) и я его перебиваю другим скилом. То через некоторое время (когда 1ый скил который был, заканчивается) выскакивает табличка что скил закончился. Мне надо это убрать...



__________________
nikitawasa вне форума Ответить с цитированием