Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Обновление бафа
#1
Добрый вечер товарищи! Wink
Мне необходима ваша помощь, сделал скилл, который "При атаке мага увеличивает его маг. защиту, на финальной стадии маг сильно защищен"
То есть, у меня есть пассивка:
[SRC="xml"] <skill id="187" levels="7" name="BUFFMAGAZEMLI">
<table name="#magicLevel">20 30 40 50 60 70 84</table>
<set name="icon" val="icon.skill0788" />
<set name="magicLevel" val="#magicLevel" />
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="BUFF" />
<set name="operateType" val="OP_PASSIVE" />
<triggers>
<trigger id="188" level="1" type="RECEIVE_DAMAGE" chance="100">
<player damage="1;0" />
</trigger>
</triggers>
</skill>[/SRC]
Она работает как надо, дальше есть этот сам баф:
[SRC="xml"]<skill id="188" levels="15" name="BUFFMAGAZEMLI2">
<table name="#magicLevel">20 30 40 50 60 70 84 84 84 84 84 84 84 84 84</table>
<table name="#levelfit">1 2 3 4 5 6 7 8 9 10 11 12 13 14 1</table>
<table name="#stack">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15</table>
<table name="#mDef">1.10 1.11 1.13 1.14 1.15 1.16 1.16 1.17 1.18 1.20 1.21 1.22 1.23 1.25 2.5</table>
<table name="#time">600 600 600 600 600 600 600 600 600 600 600 600 600 600 25</table>
<table name="#id">188 188 188 188 188 188 188 188 188 188 188 188 188 189 189</table>
<set name="magicType" val="SPECIAL" />
<set name="icon" val="icon.skill0788" />
<set name="magicLevel" val="#magicLevel" />
<set name="castRange" val="400" />
<set name="isTrigger" val="true" />
<set name="hitCancelTime" val="500" />
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="BUFF_CHARGER" />
<set name="targetBuff" val="188" />
<set name="operateType" val="OP_ACTIVE" />
<set name="negateSkill" val="189" />
<for>
<effect count="1" name="Buff" time="#time" val="0" stackOrder="#stack" stackType="buffmagazemli">
<mul order="0x30" stat="mDef" val="#mDef" />
<triggers>
<trigger id="#id" level="#levelfit" type="RECEIVE_DAMAGE" chance="100">
<player damage="1;0" />
</trigger>
</triggers>
</effect>
</for>
</skill>[/SRC]
При 15ой атаке, он должен вешать новый тригер с id 189, вот он:
[SRC="java"]<skill id="189" levels="1" name="FinalDef">
<set name="magicType" val="SPECIAL" />
<set name="icon" val="icon.skill0788" />
<set name="magicLevel" val="84" />
<set name="castRange" val="900" />
<set name="hitCancelTime" val="500" />
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="BUFF" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect abnormal="invul1" count="1" name="Buff" time="20" val="0" stackOrder="55" stackType="buffmagazemli">
<mul order="0x30" stat="mDef" val="2.5" />
</effect>
</for>
</skill>[/SRC]
Он вешает, все как надо, но когда вешается 189 баф, если мага еще раз атакуют, вешается снова 188 баф, хотя он не должен вешаться, пока весит 189. Помогите пожалуйста в чем проблема?
И еще в систем чат пишет двойное сообщение иногда, именно у этого бафа
[Изображение: caa03fcb527c609364f5ae3446f1553b.png]
Надеюсь на ваше понимание Sad
Ответ
#2
Я так понимаю: При атаке владельца, его защита увеличивается на определённый %. Т.е. если владелец имеет 15 уровень скила (макс. защиту от эффекта), то при получении урона, эффект 15 уровня тупо обновляется. Если же в течении N времени (пока действует макс. защита) владелец не получает урона, то эффект сбрасывается и это говно набирается снова.

Так ли должен работать этот скилл?



Обошёлся двумя обыкновенными скилами в хмл и лютейшим гавнокодом на 18 строк. Обычные проверки для одного единственного скила и чара

Если делать рьёзно, то достаточно будет просто модифицировать chanceSkillCondition, а именно, добавить возможность счётчика для ЛЮБОГО эффекта (counter), который и будет просчитывать какой лвл эффекта накидывать на нашего имбицила, т.к. этот галимый чансовик нихрена не динамичен.:

[SRC="xml"] <skill id="1698" levels="1" name="Опёка земли стартер чар пассив скилл">
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="BUFF"/>
<set name="operateType" val="OP_PASSIVE"/>
</skill>

<skill id="1699" levels="12" name="Опёка земли активный-накладываемый">
<table name="#val">10 20 30 40 50 60 70 80 90 100 110 1000</table>
<table name="#time">600 600 600 600 600 600 600 600 600 600 600 25</table>
<set name="target" val="TARGET_SELF"/>
<set name="skillType" val="BUFF"/>
<set name="operateType" val="OP_ACTIVE"/>
<for>
<effect name="Buff" time="#time" val="0" stackType="def" stackOrder="12">
<add order="0x40" stat="armorDef" val="#val"/>
</effect>
</for>
</skill>[/SRC]

[SRC="java"]
if(target.getKnownSkill(1698) != null)
{
final L2Effect eff = target.getFirstEffect(1699);
int lvl = 0;
if(eff == null)
SkillTable.getInstance().getInfo(1699, 1).addEffects(target, target);
else
{
lvl = eff.getLevel() + 1;
if(lvl > eff.getStackOrder())
lvl = (int) eff.getStackOrder();
SkillTable.getInstance().getInfo(eff.getSkill().getId(), lvl).addEffects(target, target);
}

if(lvl < 1)
target.sendMessage("Защита ур: 1");
else
target.sendMessage("Ваша защита увеличивается на " + lvl);
}
[/SRC]
Ответ
#3
Почти такSmile
Атакуют, скил +1 лвл за удар, на 15 лвл скила должен повесится скилл с ID 189, он вешается, но опять же при ударе вешается самый начальный скилл, возможно как-то можно не при помощи ядра, а при помощи стаков. Скилл работает почти как надо, сейчас запилю видос.

Добавлено через 27 минут
http://youtu.be/S7UYSoPUhKE
В общем, когда вешается бафф на 20 сек, он должен висеть эти 20 секунд, даже если его бьют, а после когда бафф пройдет, снова должен вешаться первый бафф при атаке. Получается совсем не такSad

Добавлено через 56 минут
В общем почти разобрался. Мне нужно чтобы этот баф:
[SRC="xml"] <skill id="188" levels="14" name="USILENIE">
<table name="#magicLevel">20 30 40 50 60 70 84 84 84 84 84 84 84 84 84 84</table>
<table name="#levelfit">1 2 3 4 5 6 7 8 9 10 11 12 13 1 1</table>
<table name="#mDef">1.10 1.10 1.10 1.10 1.10 1.10 1.10 1.10 1.10 1.10 1.10 1.10 1.10 1.10 1.10</table>
<table name="#stack">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15</table>
<table name="#id">0 0 0 0 0 0 0 0 0 0 0 0 0 189 189</table>
<set name="magicType" val="SPECIAL" />
<set name="icon" val="icon.skill0788" />
<set name="magicLevel" val="#magicLevel" />
<set name="castRange" val="900" />
<set name="hitCancelTime" val="500" />
<set name="target" val="TARGET_SELF" />
<set name="isTrigger" val="true" />
<set name="skillType" val="BUFF_CHARGER" />
<set name="targetBuff" val="188" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect count="1" name="Buff" time="600" val="0" stackOrder="#stack" stackType="buffmagazemli">
<mul order="0x30" stat="mDef" val="#mDef" />
<triggers>
<trigger id="#id" level="#levelfit" type="RECEIVE_DAMAGE" chance="100">
<player damage="1;0" />
</trigger>
</triggers>
</effect>
</for>
</skill>[/SRC]
Не заменял этот:
[SRC="xml"] <skill id="189" levels="1" name="FinalStage">
<set name="magicType" val="SPECIAL" />
<set name="icon" val="icon.skill0788" />
<set name="magicLevel" val="84" />
<set name="castRange" val="900" />
<set name="hitCancelTime" val="500" />
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="BUFF" />
<set name="operateType" val="OP_ACTIVE" />
<for>
<effect count="1" name="Buff" time="20" val="0" stackOrder="50" stackType="buffmagazemli">
<mul order="0x30" stat="mDef" val="2.5" />
</effect>
</for>
</skill>[/SRC]

Добавлено через 1 час 1 минуту
Уффф. Все сделал. Спасибо finfanу за помощь. Даже не знаю как сделал, но работает, если кому нужно, могу скинуть скилл.
Ответ
#4
Возможно дело в длительности?... когда эффект ниже по времени перебивает новый- просто сделать эти баффы меньше 20 сек... но пока писал, понял что маловероятно)

И что это за странность? stackOrder="55" в 189, а в 188 "15" - посмотри как сделан скилл id="784" levels="1" name="Spirit of Phoenix">

Тогда еще вариант- перекрывание низкоуровневого баффа с более высоким уровнем- в 188 он аж 15 уровень, 189 только 1
Ответ
#5
Ну такой стакордер поставлен, чтобы перекрывал тот скил, с таким же стакнеймом Smile
Я уже сделал, не знаю как Smile
Спасибо кто отозвался Smile
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Исчезновение бафа после срабатывания тригера L2J 2 1,417 08-11-2014, 08:40 PM
Последний пост: L2J
  Кнопка восстановление бафа niko42 1 1,819 03-14-2011, 11:50 PM
Последний пост: Gaikotsu
  Увеличение время бафа DreD 14 40,992 01-22-2010, 12:10 PM
Последний пост: makz
  Блокировка бафа Hunk 2 2,761 07-11-2009, 05:08 PM
Последний пост: Hunk
  Скролы для бафа FotoMEH 0 2,202 07-25-2008, 12:48 AM
Последний пост: FotoMEH

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


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