kanutoiiika 17 Опубликовано 5 декабря, 2013 (изменено) Пытаюсь реализировать функцию, которая будет снимать "стан-станом"...иными словами, если на игроке висит стан, то при повторном юзе скила на него типажа L2Effect.EffectType.STUN и удачном прохождении старый стан будет сбиватся. делал по аналогии с автоатакой (мулька что при автоатаке есть рандом шанс сбивания стана) вот код методов: метод прекращения эффекта. L2Character.java public final void stopStunning(L2Effect effect) { if(!isStunned()) return; if(effect == null) { stopEffects(L2Effect.EffectType.STUN); } else { removeEffect(effect); } setIsStunned(false); getAI().notifyEvent(CtrlEvent.EVT_THINK, null); updateAbnormalEffect(); } метод запуска эффекта (красным что добавил) L2Character.java public final void startStunning() { if (isStunned()) { [color=#ff0000]stopStunning(null);[/color] return; } setIsStunned(true); /* Aborts any attacks/casts if stunned */ abortAttack(); abortCast(); getAI().stopFollow(); // Like L2OFF char stop to follow if sticked to another one stopMove(null); getAI().notifyEvent(CtrlEvent.EVT_STUNNED, null); updateAbnormalEffect(); } откуда брал пример (пример с автоатакой) CharStatus.java if(getActiveChar().isStunned() && Rnd.get(10) == 0) { getActiveChar().stopStunning(null); } вообщем беда в том, что эффект убирается...тоесть работает все отлично, ноесть одно НО, а именно, что иконка эффекта остается в баффаъ\дебафах не знаю что делать...догадуюсь, что вообще не в тех классах и методах копаю, может кто подскажет ? Изменено 5 декабря, 2013 пользователем kanutoiiika Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
JoeyTribbiani 822 Опубликовано 5 декабря, 2013 Хмм,обычно и так стан сбивается станом. Без каких либо исправлений. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kanutoiiika 17 Опубликовано 5 декабря, 2013 (изменено) судя по public void reduceHp(double value, L2Character attacker, boolean awake) { .......................................... if(getActiveChar().isStunned() && Rnd.get(10) == 0) { getActiveChar().stopStunning(null); } .......................................... он сбивается в том случае если наносится урон станом, а что в случае с стан шилдом который не наносит урон? Изменено 5 декабря, 2013 пользователем kanutoiiika Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
dislike 302 Опубликовано 6 декабря, 2013 Да все верно, если в этом методе будет условие, то сбиваться будет только после получения урона. Попробуй отправить пакет на обновление иконок в стоп станинг. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты