Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
L2jserver
Interlude
Доброго времени суток господа.
Есть скилл, суть которого, такова: "Сокращает время всех (полученных) дебаф эффектов на 50%."
Вопрос: где копать на эту тему? первым, в голову лезет L2Effect.java и L2Skill.java, однако и L2Character.java не даёт покоя...
Спасибо.
Сообщений: 1,065
Тем: 20
Зарегистрирован: Mar 2010
Репутация:
3,855
не скажу как в л2ж, но в серверах на базе феникса/овера, расчет длительности дебаффа в зависимости от резистов и т.п. высчитывается в методе getEffects класса Skill.
так что попробуй в том же направлении поискать
Сообщений: 1,485
Тем: 12
Зарегистрирован: Mar 2010
Репутация:
2,994
В L2Effect - посмотреть создание эффекта и задание времени эффекта. В зависимости от этого бафа, который сокращает время на новые offensive эффекты сделать коррекцию времени.
Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
Огромное спасибо за отклик в теме.
Gaikotsu: у меня Интерлюд. К сожалению, оверы и фениксы не делали на шару данной хроники.
Visor: нашёл в L2Effect.java то что искал, однако, появилась загвостка... time - является int значением, т.е. добавить туда цифры аля 2.3 или ещё что-то вроде этого - нельзя. Например, у меня в скиле стат снижает время действия дебафф скилов на 50%, разумеется мне было бы проще и точнее делать вот так в .xml:
<mul order="0x30" stat="stat" val="0.5"/>
Так как у меня инте значение, и своего рода это пока-что костыль, я делаю так (временно):
<add order="0x40" stat="stat" val="2"/>
Однако вопрос. Как позволить в value переменной time (эффекта) считывать значения double/float? или еще проще, можно ли как то сделать это чудо через милисекунды...
Спасибо.
Сообщений: 314
Тем: 14
Зарегистрирован: Sep 2008
Репутация:
360
06-20-2013, 09:53 PM
(Сообщение последний раз редактировалось: 06-20-2013, 10:01 PM Archiel.)
finfan Написал:Огромное спасибо за отклик в теме.
Gaikotsu: у меня Интерлюд. К сожалению, оверы и фениксы не делали на шару данной хроники.
Visor: нашёл в L2Effect.java то что искал, однако, появилась загвостка... time - является int значением, т.е. добавить туда цифры аля 2.3 или ещё что-то вроде этого - нельзя. Например, у меня в скиле стат снижает время действия дебафф скилов на 50%, разумеется мне было бы проще и точнее делать вот так в .xml:
<mul order="0x30" stat="stat" val="0.5"/>
Так как у меня инте значение, и своего рода это пока-что костыль, я делаю так (временно):
<add order="0x40" stat="stat" val="2"/>
Однако вопрос. Как позволить в value переменной time (эффекта) считывать значения double/float? или еще проще, можно ли как то сделать это чудо через милисекунды...
Спасибо.
Не претендую на идеальный код, но как вариант:
Код: int a = 0; //время действия баффов
double b = a;//дабл для вычисления
b *= val; //вычисление
a = (int)b; //результат в формуле
Добавлено через 4 минуты
ой, что-то я не совсем то написал. Короче, просто показал как произвести вычисления с использованием дополнительной переменной. Тогда val у вас будет относиться к "b" и восприниматься нормально.
Сообщений: 555
Тем: 2
Зарегистрирован: Feb 2011
Репутация:
1,507
создать параметр, модифицировать его эффектом по типу, при добавлении нового эффекта, например по типу buff - начальный период из темплейта * на этот модификатор.
лучше переписать алгоритмы эффекта, там с тиками жесть. еще будет облом после ре-логина, если у тебя и получится что ты задумал
Сообщений: 1,485
Тем: 12
Зарегистрирован: Mar 2010
Репутация:
2,994
Добавить стат в stats - который будет мулить этот баф, мул считается вокруг 1 и идет по 0х30 ордеру в l2j.
Далее calcStat у владельца эффекта определить модификатор поотношению init 1 - и потом умножить на время перед запуском собственно таймера дебафа для кол-ва тиков в эффекте 1. С эффектами типа пореза с кол-вом тиков больше 1 видимо нужно применить на уменьшение кол-ва тиков эффекта, пропорционально снижению общего времени дебафа время*кол-во.
Если так бегло, то я бы примерно так и решил эту задачку.
Сообщений: 1,058
Тем: 129
Зарегистрирован: May 2009
Репутация:
11,626
Спасибо всем, проблема решена!
|