Руна опыта

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

blodden

Выдающийся
Местный
Легенда Истоков
Сообщения
55
Розыгрыши
0
Решения
1
Репутация
16
Реакции
13
Баллы
1 313
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
L2Open
Всем привет, ребят подскажите такой момент, сейчас провел тест и заметил малую проблему.
Руна опыта и СП не работают в пати, но в соло работает.
В Java к сожалению не сильно силен, но немножко что-то ковырнуть могу ))
 
копать в классе Party (или L2Party) - скорее всего в методе вычисляющем рейты пати не учитываются бонусы от рун. метод скорее всего называется recalculatePartyData или типа того.
 
У меня есть вопрос поширше. В какиx случаях руны опыта или SP должны работать, а в каких случаях они не будут работать?
 
У меня есть вопрос поширше. В какиx случаях руны опыта или SP должны работать, а в каких случаях они не будут работать?
Работать она должна постоянно.
Но в пати она должна работать только на персонаже у которого есть руна.
На квесты тоже вроде должна влиять так как получаете опыт и сп за квесты.

Но может могу и ошибатся )
 
Работать она должна постоянно.
Но в пати она должна работать только на персонаже у которого есть руна.
На квесты тоже вроде должна влиять так как получаете опыт и сп за квесты.

Но может могу и ошибатся )
Например есть различные условия работы. В группе или нет. При квестах. При крафтинге. Будет она влиять ли на саммоны. То есть в принципе нужно собрать перечнь условий когда персонаж может получить опыт или SP. Но я в принципе так и вижу что руна должна работать всегда.
 
L2Player
Java:
    @Override
    public double getRateItems()
    {
        //return calcStat(Stats.DROP, _party == null ? _bonus.RATE_DROP_ITEMS*getAltBonus() : _party._rateDrop, this, null);
        return _party == null ? (_bonus.RATE_DROP_ITEMS*getAltBonus() + getBonusRunaItems()): _party._rateDrop;
    }
    
    public double getBonusRunaItems() 
    {
        return calcStat(Stats.DROP, 0, null, null);
    }


L2Party
Java:
    public void recalculatePartyData()
    {
        _partyLvl = 0;
        float rateExp = 0;
        float rateSp = 0;
        float rateDrop = 0;
        float rateAdena = 0;
        float rateSpoil = 0;
        float minRateExp = Float.MAX_VALUE;
        float minRateSp = Float.MAX_VALUE;
        float minRateDrop = Float.MAX_VALUE;
        float minRateAdena = Float.MAX_VALUE;
        float minRateSpoil = Float.MAX_VALUE;
        byte count = 0;
        for(L2Player member : _members)
            if(member != null)
            {
                int level = member.getLevel();
                _partyLvl = Math.max(_partyLvl, level);
                count++;

                rateExp += member.getBonus().RATE_XP*member.getAltBonus();
                rateSp += member.getBonus().RATE_SP*member.getAltBonus();
                rateDrop += member.getBonus().RATE_DROP_ITEMS*member.getAltBonus() + member.getBonusRunaItems();
                rateAdena += member.getBonus().RATE_DROP_ADENA*member.getAltBonus();
                rateSpoil += member.getBonus().RATE_DROP_SPOIL*member.getAltBonus();

                minRateExp = Math.min(minRateExp, member.getBonus().RATE_XP*member.getAltBonus());
                minRateSp = Math.min(minRateSp, member.getBonus().RATE_SP*member.getAltBonus());
                minRateDrop = Math.min(minRateDrop, member.getBonus().RATE_DROP_ITEMS*member.getAltBonus());
                minRateAdena = Math.min(minRateAdena, member.getBonus().RATE_DROP_ADENA*member.getAltBonus());
                minRateSpoil = Math.min(minRateSpoil, member.getBonus().RATE_DROP_SPOIL*member.getAltBonus());
            }
        _rateExp = ConfigValue.RatePartyMin ? minRateExp : rateExp / count;
        _rateSp = ConfigValue.RatePartyMin ? minRateSp : rateSp / count;
        _rateDrop = ConfigValue.RatePartyMin ? minRateDrop : rateDrop / count;
        _rateAdena = ConfigValue.RatePartyMin ? minRateAdena : rateAdena / count;
        _rateSpoil = ConfigValue.RatePartyMin ? minRateSpoil : rateSpoil / count;
    }
 
Назад
Сверху