EtoJeFlexx 2 Опубликовано 31 августа, 2016 Хотел бы узнать, возможно ли создать зону, чтобы игрок в ней бафался от NPC бафера, но при выходе из неё терял весь баф, который на нём висит. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Rollfer 188 Опубликовано 31 августа, 2016 пример можно взять с зон "ослабления" на осаждаемых территориях Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 1 сентября, 2016 даже сборку не указал. если сборкой поддерживаются листенеры зон, то повесить на зону листенер и в обработке выхода из зоны в этом листенере снимать бафф. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 1 сентября, 2016 Хотел бы узнать, возможно ли создать зону, чтобы игрок в ней бафался от NPC бафера, но при выходе из неё терял весь баф, который на нём висит. Есть такие зоны, как "Горячий источник" они снимают холеру, флю и так далее, найди эти зоны в ДП и посмотри принцип их работы. 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 1 сентября, 2016 Есть такие зоны, как "Горячий источник" они снимают холеру, флю и так далее, найди эти зоны в ДП и посмотри принцип их работы. Только они работают по методу онЗонеЕнтер (при входе), а нужно онЗонеЛив (при выходе). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 1 сентября, 2016 (изменено) пример реализации обработки входа/выхода в зону, если в сборке есть поддержка листенеров package listeners.zones; import l2p.commons.util.Rnd; import l2p.gameserver.enums.Race; import l2p.gameserver.enums.ZoneType; import l2p.gameserver.listener.zone.OnZoneEnterLeaveListener; import l2p.gameserver.model.Creature; import l2p.gameserver.model.Zone; import l2p.gameserver.scripts.ScriptFile; import l2p.gameserver.skills.AbnormalEffect; import l2p.gameserver.utils.ReflectionUtils; /** * При входе в зону воды вешает на игрока случайный абнормал, меняющий внешний вид одетой брони на купальник, а при выходе из зоны убирает его обратно. * Работает для всех кроме расы Артеек - для них нет моделей/текстур купальников. * * @author Gaikotsu */ public class WaterZone implements ScriptFile { private static final AbnormalEffect[] _ae = new AbnormalEffect[] { AbnormalEffect.SHAPE_BIKINI_A, AbnormalEffect.SHAPE_BIKINI_B, AbnormalEffect.SHAPE_BIKINI_C }; private static ZoneListener _zoneListener; @Override public void onLoad() { _zoneListener = new ZoneListener(); for (Zone zone : ReflectionUtils.getZonesByType(ZoneType.water)) zone.addListener(_zoneListener); } @Override public void onReload() {} @Override public void onShutdown() {} public class ZoneListener implements OnZoneEnterLeaveListener { @Override public void onZoneEnter(Zone zone, Creature cha) { if (!cha.isPlayer() || cha.getPlayer().getAppearance().getRace() == Race.ERTHEIA) return; cha.startAbnormalEffect(_ae[Rnd.get(_ae.length)]); } @Override public void onZoneLeave(Zone zone, Creature cha) { if (!cha.isPlayer() || cha.getPlayer().getAppearance().getRace() == Race.ERTHEIA) return; for (AbnormalEffect ae : _ae) cha.stopAbnormalEffect(ae); } } } по аналогии можно сделать обработку наложенных баффов Изменено 1 сентября, 2016 пользователем Gaikotsu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
SmokiMo 892 Опубликовано 1 сентября, 2016 Только они работают по методу онЗонеЕнтер (при входе), а нужно онЗонеЛив (при выходе). Я чет не правильно прочитал, что он хочет. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты