Event trigger

  • Автор темы Автор темы Hibiki
  • Дата начала Дата начала

Hibiki

Прославленный
VIP
Сообщения
138
Розыгрыши
0
Решения
2
Репутация
86
Реакции
74
Баллы
1 403
Хроники
  1. Shadow of the Kamael
Исходники
Отсутствуют
Сборка
Classic
Есть анимации привязанные к месту с номером, по типу барьера в новое гнездо антараса, или тумана на локации. Не могу обнаружить где они записаны в клиенте ид, координаты и сам эффект.
 

где они записаны в клиенте ид, координаты и сам эффект

EventCmd=1 ищите и указывайте потом эти ИДшники в EventTrigger.

Вообще там получается несколько этих "ИДшников".
Код:
  LEC_None,
  LEC_Show,
  LEC_Play,
  LEC_CastleGoodEffectShow,
  LEC_CastleEvilEffectShow,
  LEC_NPCSpawnToShow,
  LEC_NPCSpawnToHide,
  LEC_CharRaceEffectShow,
  LEC_CharClassEffectShow
Вот этот как раз LEC_Show - отображается при получении клиентом пакета EventTrigger.
Вот эти 2 - LEC_CastleGoodEffectShow, LEC_CastleEvilEffectShow, работают только при отправке пакета ExCastleState
 
Спасибо за информацию, вечерком поковыряю

Возник вопрос каким образом раскурочить файлы уровня чтоб видеть тригеры, по-моему на название только и натыкался
 
Последнее редактирование:
Спасибо за информацию, вечерком поковыряю

Возник вопрос каким образом раскурочить файлы уровня чтоб видеть тригеры, по-моему на название только и натыкался
пользуюсь l2pe
 
А где порыться в 110 протоколе Grand Crusade где записаны айди евентов для смены брони в локации
1715929640397.webp

Нашел датку где описаны во что одеться, судя по всему это eventLookChange.dat
а где указаны координаты карт и как эти данные сопоставить?
 
А где порыться в 110 протоколе Grand Crusade где записаны айди евентов для смены брони в локации
Посмотреть вложение 74722

Нашел датку где описаны во что одеться, судя по всему это eventLookChange.dat
а где указаны координаты карт и как эти данные сопоставить?
может это просто обычный AVE?)
 
может это просто обычный AVE?)
да, это ave, данные для определеных авешек берутся с этого файла, ну и часть еще с AbnormalDefaultEffect.dat

не разобрался, вот вопрос как оно срабатывает на карте, где маркет что отобразить когда ты попал в зону
про вид у линдвиора - это вроде тупо захардено, что при входе в конкретные координаты (или зону из ZoneName) автоматом вешает аве с этим костюмом.
 
Последнее редактирование модератором:
Lindvior (and other places like this) is hardcoded in map / core.

1715938622701.png
 
Ну тебе же никто не мешает самому со стороны сервера вешать/снимать такие авешки на игроков при заходе/входе в определенные зоны через листенер, если такое тебе внезапно потребовалось :)

Вот я тут уже пример такого выкладывал когда-то:
Java:
package listeners.zones;

import java.util.List;

import l2p.commons.util.Rnd;
import l2p.gameserver.enums.skills.AbnormalVisualEffect;
import l2p.gameserver.enums.zones.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 List<AbnormalVisualEffect> _ave = List.of(AbnormalVisualEffect.SWEET_ICE_FLAKES, AbnormalVisualEffect.FANTASY_ICE_FLAKES, AbnormalVisualEffect.RUNWAY_ARMOR6);
    private static final ZoneListener _zoneListener = new ZoneListener();

    @Override
    public void onLoad()
    {
        ReflectionUtils.getZonesByType(ZoneType.water).forEach(zone -> zone.addListener(_zoneListener));
    }

    private static class ZoneListener implements OnZoneEnterLeaveListener
    {
        @Override
        public void onEnter(Zone zone, Creature cha)
        {
            if (cha.isPlayer())
                cha.startAbnormalEffect(_ave.get(Rnd.get(_ave.size())));
        }

        @Override
        public void onLeave(Zone zone, Creature cha)
        {
            if (cha.isPlayer())
                _ave.forEach(ave -> cha.stopAbnormalEffect(ave));
        }
    }
}
 
Последнее редактирование:
Ну тебе же никто не мешает самому со стороны сервера вешать/снимать такие авешки на игроков при заходе/входе в определенные зоны через листенер, если такое тебе внезапно потребовалось :)

Вот я тут уже пример такого выкладывал когда-то:
Java:
package listeners.zones;

import java.util.List;

import l2p.commons.util.Rnd;
import l2p.gameserver.enums.skills.AbnormalVisualEffect;
import l2p.gameserver.enums.zones.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 List<AbnormalVisualEffect> _ave = List.of(AbnormalVisualEffect.SWEET_ICE_FLAKES, AbnormalVisualEffect.FANTASY_ICE_FLAKES, AbnormalVisualEffect.RUNWAY_ARMOR6);
    private static final ZoneListener _zoneListener = new ZoneListener();

    @Override
    public void onLoad()
    {
        ReflectionUtils.getZonesByType(ZoneType.water).forEach(zone -> zone.addListener(_zoneListener));
    }

    private static class ZoneListener implements OnZoneEnterLeaveListener
    {
        @Override
        public void onEnter(Zone zone, Creature cha)
        {
            if (cha.isPlayer())
                cha.startAbnormalEffect(_ave.get(Rnd.get(_ave.size())));
        }

        @Override
        public void onLeave(Zone zone, Creature cha)
        {
            if (cha.isPlayer())
                _ave.forEach(ave -> cha.stopAbnormalEffect(ave));
        }
    }
}
То понятно, но там есть удобная кнопочка отключение и выглядит это интереснее
 
Назад
Сверху Снизу