Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
новый SkillType
#21
Это же зарядка как у танков.
Ответ
#22
Во первых целеста не спадает на ИЛ если ты будешь бить или кастовать скилы.
Я тут вспомнил что "Sleep" спадает если был получен урон.
Кто-нибудь знает где это в ядре прописано???
Вообщем думаю нужно сделать новый скилл тайп по аналогии с BUFF, но добавить то, что он пропадает при определенных условиях, а именно после удара/уклонения/получения дебаффа и т.д.
хелпаните плз где искать, условия спадания слипа, сборка l2jfrozen, если че
Ответ
#23
Епа-копа!
Вам не нужен новый скилтип. Данная способность работает эффектом.
<effect name="Buff" time="5" val="0">
<mul order="0x30" stat="pAtk" val="1.5"/>
</effect>

Однако дополнение механики эффекта например effectEvent="REMOVE_ON_ATTACK;REMOVE_ON_EVADE;etc..." и обработка её в ядре, позволит вам реализовать свою задумку.

для начала понадобится enum EffectEvents {
REMOVE_ON_ATTACK,
REMOVE_AFTER_ATTACK,
// и т.д.
}

потом нужно будет бомбануть обработчик для этого добра в тех местах, где они будут использоваться. Например метод reduceCurrentHp может обрабатывать на получение урона ;D! Круто да? КОроче пуляем логическую цепочку:

REMOVE_AFTER_ATTACK - снимаем когда нас атаковали (не важно, попали или нет, главнео что атака нас - произошла).
REMOVE_AFTER_ATTACK_HIT - снимаем эффект когда нас атаковали но при этом атака не была промахом. (она может быть чем угодно главное чтобы мы получили урон)
REMOVE_AFTER_ATTACK_HIT_CRIT - аналог предъидущего но только критом.

Короче, во фрозенах есть чанс скилл триггер. Найдите эту хрень, там есть большинство вариантов всех енумов. Эти енумы можно вполне реально использовать, чтобы не плодить другие.

Когда найшли енумы, нужно нестись в DocumentBase (нам же надо парсануть внутри эффекта новую строчку
<effect name="Buff" time="5" val="0" removeAfter="ATTACK,CAST,EVADE">
<mul order="0x30" stat="pAtk" val="1.5"/>
</effect>

Чтобы писать туда наши енум значения из chanceskilltrigger nichoci.
Там увидите на примере любой переменной (пропарсенной) как это делать.

И всё.

1. Обработка.
Примерно будет выглядеть как:
for(L2Effect chaEff : cha.getAllEffects())
if(chaEff.isRemovedOn(ATTACK)) {
chaEff.exit();
}

Это обобщённый вариант, я хз как там что устроено внутри фрозенов.
2. Парс.
может быть похожим на это:
L2EffectEvents[] effectEvent = null;
if (attrs.getNamedItem("effectEvent") != null) {
String str = getValue(attrs.getNamedItem("effectEvent").getNodeValue(), template);
if (str.isEmpty()) {
effectEvent = new L2EffectEvents[0];
} else {
String[] stats = str.split(";");
L2EffectEvents[] array = new L2EffectEvents[stats.length];

for (int i = 0; i < stats.length; i++) {
L2EffectEvents events = null;
try {
events = Enum.valueOf(L2EffectEvents.class, stats[i]);
} catch (Exception e) {
throw new IllegalArgumentException("EffectEvent: " + events + "Enum value of type " + L2EffectEvents.class.getName() + " required, but found: " + stats[i]);
}

array[i] = events;
}
effectEvent = array;
}
}

3. Профит.

Это не должно быть созданием скилл типа, а должно быть доработкой механизма эффектов nichoci.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Описание SkillType'ов Kassidy 4 2,000 07-24-2016, 03:11 PM
Последний пост: FaintSmile
  новый моб cool235 11 3,389 04-10-2013, 02:40 PM
Последний пост: smeli
  Новый таргет тип: TARGET_CORPSE_MOB_PET finfan 1 1,432 08-06-2012, 07:27 PM
Последний пост: Visor
  Создание новых SkillType, от подсказки не откажусь. finfan 3 1,910 04-10-2012, 08:06 PM
Последний пост: Nehrk
  Новый стат finfan 5 1,752 03-12-2012, 08:49 AM
Последний пост: Azagthtot
  [Новый Скилл] Что сделал не так? finfan 11 3,321 02-14-2012, 11:58 AM
Последний пост: finfan
  Новый эффект FaintSmile 12 3,636 08-15-2011, 04:06 AM
Последний пост: FaintSmile
  Новый класс MROBAR 10 2,920 07-25-2011, 09:11 AM
Последний пост: ANZO
  Новый Гм шоп skil 5 3,619 10-17-2009, 09:45 PM
Последний пост: FXAntiXrist

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)