Настройка опыта в группе и штрафы

valsha

Выдающийся
Участник
Сообщения
234
Розыгрыши
0
Репутация
31
Реакции
91
Баллы
1 320
Хроники
  1. Interlude
  2. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
none
Привет всем :Run:

В каких из сборок (mobius, pw, asic), есть возможность тонких настроек опыта в группах и штрафов?
Например что бы можно было как то так указать
Получение опыта в группе
1 игрок - 1.0 бонус
2 игрока - 1.1 бонус
Штафы
разница в опыте между игроком и мобами +10 уровней
штаф на экспу -50%
штаф на дроп -50%
штаф на урон по мобам -50%
 
Если "Исходники: Присутствуют" - можно все!
Получение опыта в группе
1 игрок - 1.0 бонус
2 игрока - 1.1 бонус
org.l2jmobius.gameserver.model.Party
Java:
    // @formatter:off
    private static final double[] BONUS_EXP_SP =
    {
        1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 2.0
    };
    // @formatter:on
Ну, а по остальному не скажу... Слишком непонятно как хотите чтоб это было.
Условно на офе раньше если расстояние между игроками было очень большое - то на убийцу не накладывались никакие штрафы от группы, а эффекты от мафр-ов действовали (потом это пофиксили ибо покупку мафров сделали одноразовыми)
Senny написал(а):
– Следующие эффекты от Рун Мафр "шанс получения трофеев", "шанс присвоения трофеев" и "количество получаемых аден" теперь не действуют на членов группы, которые находятся на расстоянии 1000 и более от убитого монстра/босса.
(c) -
штаф на экспу -50%
Вроде и так режится:
org.l2jmobius.gameserver.model.Party
Java:
    private double calculateExpSpPartyCutoff(Player player, int topLvl, double addExpValue, double addSpValue, boolean vit)
    {
        double addExp = addExpValue * Config.EXP_AMOUNT_MULTIPLIERS[player.getClassId().getId()];
        double addSp = addSpValue * Config.SP_AMOUNT_MULTIPLIERS[player.getClassId().getId()];
       
        // Premium rates
        if (player.hasPremiumStatus())
        {
            addExp *= Config.PREMIUM_RATE_XP;
            addSp *= Config.PREMIUM_RATE_SP;
        }

        double xp = addExp;
        double sp = addSp;
        if (Config.PARTY_XP_CUTOFF_METHOD.equalsIgnoreCase("highfive"))
        {
            int i = 0;
            final int levelDiff = topLvl - player.getLevel();
            for (int[] gap : Config.PARTY_XP_CUTOFF_GAPS)
            {
                if ((levelDiff >= gap[0]) && (levelDiff <= gap[1]))
                {
                    xp = (addExp * Config.PARTY_XP_CUTOFF_GAP_PERCENTS[i]) / 100;
                    sp = (addSp * Config.PARTY_XP_CUTOFF_GAP_PERCENTS[i]) / 100;
                    player.addExpAndSp(xp, sp, vit);
                    break;
                }
                i++;
            }
        }
        else
        {
            player.addExpAndSp(addExp, addSp, vit);
        }
        return xp;
    }
Ну, а по поводу резки шанса - только по последнему нанесенному (убивцу) идет расчет дропа.
Ну и по "резки" урона - тут тоже сложно, это считать нужно каждый удар и тд )

Ну, а так - все возмоно при наличии исходника - если у вас есть несколько шекелей :D
 
развернутый ответ, спасибо ))
а в уже готовом виде нет не в каких сборках таких фишек? что бы можно было посмоттреть их реализацию?
 
развернутый ответ, спасибо ))
а в уже готовом виде нет не в каких сборках таких фишек? что бы можно было посмоттреть их реализацию?
ну у мобиуса можно вот сделающее сделать:
public DamageReturn(boolean terminate, boolean override, boolean abort, double damage)
Java:
    private static DamageReturn onDamageReceivedDiffEvent(OnCreatureDamageReceived event)
    {
        if (event.getTarget() == null || !event.getTarget().isNpc() || event.getAttacker() == null || event.getAttacker().getActingPlayer() == null)
        {
            return null;
        }
        final levelDiff = (выдуманый класс, который смотрит разницу уровней у ближайших игроков группы) party.getLevelDiffCloseMembers(event.getAttacker());
        if (levelDiff < 10)
        {
            return null;
        }
        return new DamageReturn(false, true, false, event.getDamage() / 2d);
    }
 
Последнее редактирование:
Видел в ruasics подробную настройку, но под твои критерии самому ядро править.
 
Привет всем :Run:

В каких из сборок (mobius, pw, asic), есть возможность тонких настроек опыта в группах и штрафов?
Например что бы можно было как то так указать
Получение опыта в группе
1 игрок - 1.0 бонус
2 игрока - 1.1 бонус
Штафы
разница в опыте между игроком и мобами +10 уровней
штаф на экспу -50%
штаф на дроп -50%
штаф на урон по мобам -50%

а зачем занижаешь бонус от пати?
по первому пункту бонуса в пати - это в датапаке сервера поискать, может есть табличка с коэффициентами патибонуса. или как и второй пункт - все в методе выдачи опыта в ядре, просто ручками поправить и скомпилить с изменениями. Там есть уже подобные ропверки, просто значения и дельту уровней вставить свои.
 
Я не углублялся в сборку, в конфигах по мимо рейтов в в пати, можно еще редактировать систему получения exp, sp в пати, вот с конфига скопировал:

# ПАРТИЙНОЕ РАСПРЕДЕЛЕНИЕ XP
# С "автоматическим методом" участник исключается из распределения Exp / SP, когда его доля меньше, чем полученный для него бонус группы (30% для группы из 2 участников).
# В этом случае он не получит никакого опыта / SP от группы и не засчитывается для бонуса группы.
# Если вы не хотите иметь точку отсечки для распределения опыта членов группы, установите для первого параметра значение «нет».
# Доступные параметры: авто, уровень, процент, нет
# По умолчанию: уровень
PartyXpCutoffMethod = level

# Эта опция вступает в силу при выборе "процентного" метода. Не используйте для этого высокие значения!
# По умолчанию: 3.0
PartyXpCutoffPercent = 3.0

# Эта опция вступает в силу, когда выбран метод "level". Не используйте для этого низкие значения!
# По умолчанию: 20
PartyXpCutoffLevel = 20

# Диапазон пати, используемый для таких проверок, как квест, распределение предметов и т.д. (По умолчанию 1500).
PartyRange = 1500
 
Назад
Сверху Снизу