Совет сборки от Профиссионалов

Саша707

Последний из атеистов
Участник
Сообщения
82
Розыгрыши
0
Репутация
0
Реакции
10
Баллы
850
Хроники
  1. Interlude
  2. Chaotic Throne: High Five
Исходники
Отсутствуют
Сборка
interlude
Привет всем, добрые люди. Посоветуйте, живые робочие исходники желательно interlude ну на крайний случай HF. (лоу рейт) Что актуально на 2024? Спасибо!
 
бесполезно покупать сборку от разрабов, если ты потом хочешь сам глубоко влезать в исходники, а разрабы их не продают, или ценник неадекватный. Я потому отказался от Люцеры
если есть желание, возможности и знания лезть "глубоко в исходники", то в целом, без разницы что брать

про люцеру можно сказать, что там обуфка не настолько сильная, было бы желание (что-то менять) - можно за декомпилить и собрать обратно (в т.ч. и по одному классу), реверс-инжиниринг это тоже своего рода "искусство".

как говорится "кто хочет - ищет возможности, не хочет - ищет оправдания".
 

бесполезно покупать сборку от разрабов, если ты потом хочешь сам глубоко влезать в исходники, а разрабы их не продают, или ценник неадекватный. Я потому отказался от Люцеры
А зачем лесть в исходы, если можно через скрипты реализовывать?
 
А зачем лесть в исходы, если можно через скрипты реализовывать?
не все можно сделать через скрипты, и не всё можно самостоятельно пофиксить
как пример, если захочешь пофиксить один бесячий баг, с формулами квестов (где у тебя шансы и количество считаются отдельно), придётся лезть в QuestState (фиксить там), и разбирать практически каждый квест (потому что где то есть есть подвязки с Rnd.chance(*)), и переписывать в нём логику, что без исходников на руках не сделаешь

если разобрать пример выше:

Метод из люцеры:
Код:
public int rollDrop(int n, int n2, double d) {
        Party party;
        if (d <= 0.0 || n <= 0 || n2 <= 0) {
            return 0;
        }
        int n3 = 1;
        d *= this.getRateQuestsDrop();
        if (Config.ALT_PARTY_BONUS_FOR_QUESTS && this.getQuest().getParty() != 0 && (party = this.getPlayer().getParty()) != null) {
            d *= Config.ALT_PARTY_BONUS[party.getMemberCountInRange(this.getPlayer(), Config.ALT_PARTY_DISTRIBUTION_RANGE) - 1];
        }
        if (d > 100.0) {
            if ((double)((int)Math.ceil(d / 100.0)) <= d / 100.0) {
                d = Math.nextUp(d);
            }
            n3 = (int)Math.ceil(d / 100.0);
            d /= (double)n3;
        }
        return Rnd.chance(d) ? Rnd.get(n * n3, n2 * n3) : 0;
    }

Метод из jts (для наглядности):

Код:
/**
     * Этот метод рассчитывает количество дропнутых вещей в зависимости от рейтов.
     * <br><br>
     * Следует учесть, что контроль за верхним пределом вещей в квестах, в которых
     * нужно набить определенное количество предметов не осуществляется.
     * <br><br>
     * Ни один из передаваемых параметров не должен быть равен 0
     *
     * @param min        минимальное количество при рейтах 1х
     * @param max        максимальное количество при рейтах 1х
     * @param calcChance шанс при рейтах 1х, в процентах
     * @return количество вещей для дропа, может быть 0
     */
    public int rollDrop(final int min, final int max, double calcChance) {
        if (calcChance <= 0 || min <= 0 || max <= 0) {
            return 0;
        }
        int dropmult = 1;
        calcChance *= getRateQuestsDrop();
        if (getQuest().getParty() > Quest.PARTY_NONE) {
            final Player player = getPlayer();
            if (player.getParty() != null) {
                calcChance *= AllSettingsConfig.ALT_PARTY_BONUS[player.getParty().getMemberCountInRange(player, AllSettingsConfig.ALT_PARTY_DISTRIBUTION_RANGE) - 1];
            }
        }
        if (calcChance > 100) {
            if ((int) Math.ceil(calcChance / 100) <= calcChance / 100) {
                calcChance = Math.nextUp(calcChance);
            }
            dropmult = (int) Math.ceil(calcChance / 100);
            calcChance /= dropmult;
        }
        return Rnd.chance(calcChance) ? Rnd.get(min * dropmult, max * dropmult) : 0;
    }

В окончательном расчете происходит

Код:
calcChance /= dropmult;
что в целом, делит шанс, на dropmult, и при разных значениях questrate, может быть абсолютно разный шанс и он будет меньше 100%, при этом он будет плавать в зависимости от разных questrate (что я уже указал), если верно подобрать, то можно добиться шанса в 99%, при этом количество предметом в данном коде умножается вполне себе адекватно.
 
Последнее редактирование:
не все можно сделать через скрипты, и не всё можно самостоятельно пофиксить
как пример, если захочешь пофиксить один бесячий баг, с формулами квестов (где у тебя шансы и количество считаются отдельно), придётся лезть в QuestState (фиксить там), и разбирать практически каждый квест (потому что где то есть есть подвязки с Rnd.chance(*)), и переписывать в нём логику, что без исходников на руках не сделаешь

если разобрать пример выше:

Метод из люцеры:
Код:
public int rollDrop(int n, int n2, double d) {
        Party party;
        if (d <= 0.0 || n <= 0 || n2 <= 0) {
            return 0;
        }
        int n3 = 1;
        d *= this.getRateQuestsDrop();
        if (Config.ALT_PARTY_BONUS_FOR_QUESTS && this.getQuest().getParty() != 0 && (party = this.getPlayer().getParty()) != null) {
            d *= Config.ALT_PARTY_BONUS[party.getMemberCountInRange(this.getPlayer(), Config.ALT_PARTY_DISTRIBUTION_RANGE) - 1];
        }
        if (d > 100.0) {
            if ((double)((int)Math.ceil(d / 100.0)) <= d / 100.0) {
                d = Math.nextUp(d);
            }
            n3 = (int)Math.ceil(d / 100.0);
            d /= (double)n3;
        }
        return Rnd.chance(d) ? Rnd.get(n * n3, n2 * n3) : 0;
    }

Метод из jts (для наглядности):

Код:
/**
     * Этот метод рассчитывает количество дропнутых вещей в зависимости от рейтов.
     * <br><br>
     * Следует учесть, что контроль за верхним пределом вещей в квестах, в которых
     * нужно набить определенное количество предметов не осуществляется.
     * <br><br>
     * Ни один из передаваемых параметров не должен быть равен 0
     *
     * @param min        минимальное количество при рейтах 1х
     * @param max        максимальное количество при рейтах 1х
     * @param calcChance шанс при рейтах 1х, в процентах
     * @return количество вещей для дропа, может быть 0
     */
    public int rollDrop(final int min, final int max, double calcChance) {
        if (calcChance <= 0 || min <= 0 || max <= 0) {
            return 0;
        }
        int dropmult = 1;
        calcChance *= getRateQuestsDrop();
        if (getQuest().getParty() > Quest.PARTY_NONE) {
            final Player player = getPlayer();
            if (player.getParty() != null) {
                calcChance *= AllSettingsConfig.ALT_PARTY_BONUS[player.getParty().getMemberCountInRange(player, AllSettingsConfig.ALT_PARTY_DISTRIBUTION_RANGE) - 1];
            }
        }
        if (calcChance > 100) {
            if ((int) Math.ceil(calcChance / 100) <= calcChance / 100) {
                calcChance = Math.nextUp(calcChance);
            }
            dropmult = (int) Math.ceil(calcChance / 100);
            calcChance /= dropmult;
        }
        return Rnd.chance(calcChance) ? Rnd.get(min * dropmult, max * dropmult) : 0;
    }

В окончательном расчете происходит

Код:
calcChance /= dropmult;
что в целом, делит шанс, на dropmult, и при разных значениях questrate, может быть абсолютно разный шанс и он будет меньше 100%, при этом он будет плавать в зависимости от разных questrate (что я уже указал), если верно подобрать, то можно добиться шанса в 99%, при этом количество предметом в данном коде умножается вполне себе адекватно.
Ну это если копать на столько глубоко) не думаю что у ТСа хватит знаний на это.
 
А зачем лесть в исходы, если можно через скрипты реализовывать?

как например поменять статы чаров или сделать автоспойл скриптами? я ненавижу делать костыли, когда можно сделать качественно и по уму с самой базы.


если есть желание, возможности и знания лезть "глубоко в исходники", то в целом, без разницы что брать

про люцеру можно сказать, что там обуфка не настолько сильная, было бы желание (что-то менять) - можно за декомпилить и собрать обратно (в т.ч. и по одному классу), реверс-инжиниринг это тоже своего рода "искусство".

как говорится "кто хочет - ищет возможности, не хочет - ищет оправдания".

резьба по калу - сомнительное занятие, хоть и занятие. брать надо изначально исходники, которые максимально хорошие, так как чем хуже исходники - тем дороже они обойдутся тебе по времени довести их до ума. когда изучаешь все с 0, тем более программирование, то лишние занятия, типа декомпила - идиотская трата времени
 
А у кого то есть на продажу l2jorion 29,30?
 
Я так понял Орион этот какой то мутный не очень о нем отзыв
 
Я так понял Орион этот какой то мутный не очень о нем отзыв
Вот один из последних Acis либо что в личку кидал на этих исходах ветка. А лучше на хф brawery делай. В общем выбора полно
 
брать надо изначально исходники, которые максимально хорошие
хороших нет, есть в меру кривые, из всех, что сейчас в шаре, нужно годик поковыряться точно, чтобы выйти в свой первый благополучный старт, с набитием шишек)
 
хороших нет, есть в меру кривые, из всех, что сейчас в шаре, нужно годик поковыряться точно, чтобы выйти в свой первый благополучный старт, с набитием шишек)
Печально что даже по сути платные сборки кривые(
 
хороших нет, есть в меру кривые, из всех, что сейчас в шаре, нужно годик поковыряться точно, чтобы выйти в свой первый благополучный старт, с набитием шишек)
ок, разжую. под хорошими имелось ввиду наименее плохие, где меньше критичных багов, общий объем правок меньше, и базово качество кода более грамотное. Очевидно, что не все сборки одинаково кривые по начинке и качеству кода.
 
Вот один из последних Acis либо что в личку кидал на этих исходах ветка. А лучше на хф brawery делай. В общем выбора полно
А можно поинтересоваться, откуда этот нейминг, 407? 407 версия акисов на 21й jdk. а эти на 11, что следовательно...)))
 
Назад
Сверху Снизу