Аттрибуты / Элементы Over/Last

Violence

Гений мысли
Проверенный
Победитель в номинации 2019
Мастер реакций
Любитель реакций
Знаток великого письма
Знаток письма
Куратор Данных
Старожил I степени
Медаль за активность на Форуме
Преподаватель
За веру и верность форуму
За заслуги перед форумом
Сообщения
1 047
Розыгрыши
1
Репутация
2 246
Реакции
1 303
Баллы
1 808
Т.к ранее был более ближе расположен к лыже , решил посмотреть разницу между аттрибутами в скилловой части.
Собственно в лыже присутствуют 2 интересных параметра как :

/** If {@code true} this skill's effect should stay after death. */
private final boolean _stayAfterDeath;
/** If {@code true} this skill's effect should stay after class-subclass change. */
private final boolean _stayOnSubclassChange;

Решил посмотреть в лостах этих параметров так и не нашёл или возможно данные параметры находятся под другими названиями , кто может уточнить есть такая возможность в скилловой части лостов или нет ?
 
Лень переводить. Какие функции эти параметры выполняют ?
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Лень переводить. Какие функции эти параметры выполняют ?
1 оставляет эффект скилла как я понял после смерти, а вторая после смены сабкласса. Сделать аналоги и избавиться от костылей в виде какие эффекты оставлять в овере не составит труда :-)
 
isPreservedOnDeath - default false, если описать в скиле true - после смерти баф останется.
P.S. - после смены саба нету.
 
Последнее редактирование:
2 пункт - лост.

Skill.java - >

private boolean _stayOnSubclassChange;
Куда нибудь сюда
protected Skill(final StatsSet set)
{
_stayOnSubclassChange = set.getBool("stayOnSubclassChange", false);

-> где нибудь внизу без разницы.

public boolean isStayOnSubclassChange()
{
return _stayOnSubclassChange;
}


Далее Player.java метод setActiveSubClass ищем getEffectList().stopAllEffects(); заменяем на ->
Код:
        for(final Effect effect : player.getEffectList().getAllEffects())
        {
            if(!effect.getSkill().getTemplate().isStayOnSubclassChange())
            {
                effect.exit();
            }
        }

Соответственно в скиле
Код:
    <skill id="5000" levels="1" name="bbb">
        <set name="stayOnSubclassChange" val="true"/>
    </skill>

После смены саба данный баф останется.
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Оффтоп:
Mangol ответь в личку и добавь плз в скайпе)
 
@Mangol все бы так, но у лыжи атрибут по дефолту true, а если false то при смене саба эффект удалится и после возврата на саб в списке сохраненных эффектов его не будет.

Поэтому лучше не так
Далее Player.java метод setActiveSubClass ищем getEffectList().stopAllEffects(); заменяем на ->
Код:
        for(final Effect effect : player.getEffectList().getAllEffects())
        {
            if(!effect.getSkill().getTemplate().isStayOnSubclassChange())
            {
                effect.exit();
            }
        }

а в CharacterEffectDAO.java в методе insert передавать булевую метку саб ли это
Код:
    public void insert(final Player player, final boolean sub)
и сделать проверку
Код:
            for(Effect effect : effects)
            {
                if(effect.isInUse())
                {
                    final SkillEntry skill = effect.getSkill();
                    final Skill template = skill.getTemplate();
                    if(!template.isToggle())
                    {
                        final EffectType type = effect.getEffectType();
                        if(type != EffectType.HealOverTime && type != EffectType.CombatPointHealOverTime)
                        {
                            final boolean save = ((sub && template.isStayOnSubclassChange()) || !sub) && effect.isSaveable();
                            if(save)
                            {
                                sb = new StringBuilder("(");
                                sb.append(player.getObjectId()).append(",");
                                sb.append(skill.getId()).append(",");
                                sb.append(skill.getLevel()).append(",");
                                sb.append(effect.getCount()).append(",");
                                sb.append(effect.getTime()).append(",");
                                sb.append(effect.getPeriod()).append(",");
                                sb.append(order).append(",");
                                sb.append(player.getActiveClassId()).append(")");
                                b.write(sb.toString());
                            }

                            while((effect = effect.getNext()) != null && save)
                            {
                                sb = new StringBuilder("(");
                                sb.append(player.getObjectId()).append(",");
                                sb.append(skill.getId()).append(",");
                                sb.append(skill.getLevel()).append(",");
                                sb.append(effect.getCount()).append(",");
                                sb.append(effect.getTime()).append(",");
                                sb.append(effect.getPeriod()).append(",");
                                sb.append(order).append(",");
                                sb.append(player.getActiveClassId()).append(")");
                                b.write(sb.toString());
                            }
                            order++;
                        }
                    }
                }
            }

и естественно поставить true в дефолте
Код:
_stayOnSubclassChange = set.getBool("stayOnSubclassChange", true);
 
  • Мне нравится
Реакции: kick и FirstBlood

    Mangol

    Баллов: 9
    Без комментариев

    Violence

    Баллов: 7
    Без комментариев

    kick

    Баллов: 30
    Без комментариев
@Mangol все бы так, но у лыжи атрибут по дефолту true, а если false то при смене саба эффект удалится и после возврата на саб в списке сохраненных эффектов его не будет.

Поэтому лучше не так


а в CharacterEffectDAO.java в методе insert передавать булевую метку саб ли это
Код:
    public void insert(final Player player, final boolean sub)
и сделать проверку
Код:
            for(Effect effect : effects)
            {
                if(effect.isInUse())
                {
                    final SkillEntry skill = effect.getSkill();
                    final Skill template = skill.getTemplate();
                    if(!template.isToggle())
                    {
                        final EffectType type = effect.getEffectType();
                        if(type != EffectType.HealOverTime && type != EffectType.CombatPointHealOverTime)
                        {
                            final boolean save = ((sub && template.isStayOnSubclassChange()) || !sub) && effect.isSaveable();
                            if(save)
                            {
                                sb = new StringBuilder("(");
                                sb.append(player.getObjectId()).append(",");
                                sb.append(skill.getId()).append(",");
                                sb.append(skill.getLevel()).append(",");
                                sb.append(effect.getCount()).append(",");
                                sb.append(effect.getTime()).append(",");
                                sb.append(effect.getPeriod()).append(",");
                                sb.append(order).append(",");
                                sb.append(player.getActiveClassId()).append(")");
                                b.write(sb.toString());
                            }

                            while((effect = effect.getNext()) != null && save)
                            {
                                sb = new StringBuilder("(");
                                sb.append(player.getObjectId()).append(",");
                                sb.append(skill.getId()).append(",");
                                sb.append(skill.getLevel()).append(",");
                                sb.append(effect.getCount()).append(",");
                                sb.append(effect.getTime()).append(",");
                                sb.append(effect.getPeriod()).append(",");
                                sb.append(order).append(",");
                                sb.append(player.getActiveClassId()).append(")");
                                b.write(sb.toString());
                            }
                            order++;
                        }
                    }
                }
            }

и естественно поставить true в дефолте
Код:
_stayOnSubclassChange = set.getBool("stayOnSubclassChange", true);
:OnionHead: Возможно я лыжу смотрел последний раз когда еще был l2jfree.
 
:OnionHead: Возможно я лыжу смотрел последний раз когда еще был l2jfree.
Мне просто интересно стало какой атрибут у них стоит по дефолту вот и глянул, этой чудо сборки в инете валом, долго не пришлось искать ))
 
Лень переводить. Какие функции эти параметры выполняют ?
Дык там же комментарий в описании , я думал все разработчики знающие хотя бы один или более языков программирования , знаток английского языка ...
Мне просто интересно стало какой атрибут у них стоит по дефолту вот и глянул, этой чудо сборки в инете валом, долго не пришлось искать ))
Печально только то что делая логический вывод на пустом осадке остаётся сжатые сроки и более удобный код для самих разработчиков , по этому в овер/лостах такая мусорка , и например как для меня любителя лыжи просмотрев их исходы было весьма непривычно... Ибо большая часть аттрибутов переименованные либо совершенно иные по характеристикам с l2j.

Спасибо большое за помощь Вам всем , весьма признателен за разжёванные ответы.
[P/s] Манголу пора подучить английский язык или перестать лениться хД
 
А вообще не стоит смотреть даже в сторону лыжи
 
Могу сказать одно у всех оверо-подобных есть подобные фишки :
//playsound не пашет у всех овероподобных (при использовании выбора любой мелодии из клиента)
Хромает управление клавишами

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

// Ps не хочу разворачивать опять больной вопрос между оверами и лыжой , просто говорю о фактах которые на лицо.
// Безусловно оверы / ласты по реализации как были первыми так и будут.
 
Последнее редактирование:
Дык там же комментарий в описании , я думал все разработчики знающие хотя бы один или более языков программирования , знаток английского языка ...
Печально только то что делая логический вывод на пустом осадке остаётся сжатые сроки и более удобный код для самих разработчиков , по этому в овер/лостах такая мусорка , и например как для меня любителя лыжи просмотрев их исходы было весьма непривычно... Ибо большая часть аттрибутов переименованные либо совершенно иные по характеристикам с l2j.

Спасибо большое за помощь Вам всем , весьма признателен за разжёванные ответы.
[P/s] Манголу пора подучить английский язык или перестать лениться хД
Русское комьюнити значит описание должно быть на русском. Т.к. это вам нужно и вы обязаны описать достойно тему это как минимум. А не так чтобы люди гуглили и искали в других сборках типа l2j что это такое.
 
Я не виноват что языкам программирования присвоили интернациональный язык а не русский , тем более комьюнити то русское а обсуждаем тут одно - разработки (на основе программирования) - следовательно это не столь существенно , и набрасываться на меня за пост по поводу английского языка адресованного Вам не вижу смысла , т.к ничего плохого не сказал , не хотел сказать , и не стану говорить , ну не знает человек английский ну и ладно. !

Описал более чем подробно , все меня прекрасно поняли и разъяснили , за что Вам и тем кто помог огромный поклон и спасибо!
По поводу гугла и l2j (а что на форуме есть и такие люди ?)
 
Я не виноват что языкам программирования присвоили интернациональный язык а не русский , тем более комьюнити то русское а обсуждаем тут одно - разработки (на основе программирования) - следовательно это не столь существенно , и набрасываться на меня за пост по поводу английского языка адресованного Вам не вижу смысла , т.к ничего плохого не сказал , не хотел сказать , и не стану говорить , ну не знает человек английский ну и ладно. !

Описал более чем подробно , все меня прекрасно поняли и разъяснили , за что Вам и тем кто помог огромный поклон и спасибо!
По поводу гугла и l2j (а что на форуме есть и такие люди ?)
Если бы русский был выглядело бы это по меньшей мере смешно.
 
Если бы интернет изобрели в СССР
1391700461_692582776.webp
быдлокодеры использовали бы матерные теги
13917021918882.webp
 
Последнее редактирование:
Последнее редактирование модератором:
  • Мне нравится
Реакции: kick
Назад
Сверху Снизу