Перейти к содержанию
Авторизация  
brunzak

боевая зона и трансформации

Рекомендуемые сообщения

всем привет, создал боевую зону в городе и все работает замечательно и даже при входе в чат влетает оповещение и т.д 

но что нужно дописать к этой зоне что-бы снимало трансформации при входе в эту зону ? 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

написать и зарегать листенер для нее и в обработке входа в зону делать что душе угодно.

надеюсь у тебя в сборке поддержка таких листенеров имеется.

пример простого листенера для овероподобных сборок

package listeners.zones;

import l2p.commons.util.Rnd;
import l2p.gameserver.enums.AbnormalVisualEffect;
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.utils.ReflectionUtils;

/**
 * При входе в зону воды вешает на игрока случайный абнормал, меняющий внешний вид одетой брони на купальник, а при выходе из зоны убирает его обратно.
 * 
 * @author Gaikotsu
 */
public class WaterZone implements ScriptFile
{
	private static final AbnormalVisualEffect[] _ae = { AbnormalVisualEffect.SHAPE_BIKINI_A, AbnormalVisualEffect.SHAPE_BIKINI_B, AbnormalVisualEffect.SHAPE_BIKINI_C };

	private static final ZoneListener _zoneListener = new ZoneListener();

	@Override
	public void onLoad()
	{
		for (Zone zone : ReflectionUtils.getZonesByType(ZoneType.water))
			zone.addListener(_zoneListener);
	}

	@Override
	public void onReload()
	{}

	@Override
	public void onShutdown()
	{}

	public static class ZoneListener implements OnZoneEnterLeaveListener
	{
		@Override
		public void onZoneEnter(Zone zone, Creature cha)
		{
			if (!cha.isPlayer())
				return;

			cha.startAbnormalEffect(_ae[Rnd.get(_ae.length)]);
		}

		@Override
		public void onZoneLeave(Zone zone, Creature cha)
		{
			if (!cha.isPlayer())
				return;

			for (AbnormalVisualEffect ae : _ae)
				cha.stopAbnormalEffect(ae);
		}
	}
}

 

Изменено пользователем Gaikotsu
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 минут назад, Gaikotsu сказал:

написать и зарегать листенер для нее и в обработке входа в зону делать что душе угодно.

надеюсь у тебя в сборке поддержка таких листенеров имеется.

омг а попроще нет вариантов? в духе допиши вот этот атрибут к зоне и все будет норм? )))

 

<zone name="[Gludin-PvP]" type="battle_zone">
        <set name="entering_message_no" val="283"/>
        <set name="leaving_message_no" val="284"/>
        <polygon>
            <coords loc="-81224 152456 -3175"/>
            <coords loc="-84552 152328 -3136"/>
            <coords loc="-84904 149336 -3152"/>
            <coords loc="-81080 149176 -3128"/>
        </polygon>
    </zone>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

поддержка листенеров имеется, но писать что-то новое не вижу смысла, думаю таких решений готовых должно быть вагон и тележка 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ага, так и вижу что прям авторы сборки думали "вот точно кому-то потом потребуется такая фигня - обязательно добавим такое"

и вобще куда уж проще то может быть? написать листенер по сути в несколько строк и при старте серва пркреплять его к зоне/зонам с определенным типом или именем.

Изменено пользователем Gaikotsu
  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...