если есть желание, возможности и знания лезть "глубоко в исходники", то в целом, без разницы что братьбесполезно покупать сборку от разрабов, если ты потом хочешь сам глубоко влезать в исходники, а разрабы их не продают, или ценник неадекватный. Я потому отказался от Люцеры
А зачем лесть в исходы, если можно через скрипты реализовывать?бесполезно покупать сборку от разрабов, если ты потом хочешь сам глубоко влезать в исходники, а разрабы их не продают, или ценник неадекватный. Я потому отказался от Люцеры
не все можно сделать через скрипты, и не всё можно самостоятельно пофикситьА зачем лесть в исходы, если можно через скрипты реализовывать?
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;
}
/**
* Этот метод рассчитывает количество дропнутых вещей в зависимости от рейтов.
* <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;
Ну это если копать на столько глубоко) не думаю что у ТСа хватит знаний на это.не все можно сделать через скрипты, и не всё можно самостоятельно пофиксить
как пример, если захочешь пофиксить один бесячий баг, с формулами квестов (где у тебя шансы и количество считаются отдельно), придётся лезть в 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; }
В окончательном расчете происходит
что в целом, делит шанс, на dropmult, и при разных значениях questrate, может быть абсолютно разный шанс и он будет меньше 100%, при этом он будет плавать в зависимости от разных questrate (что я уже указал), если верно подобрать, то можно добиться шанса в 99%, при этом количество предметом в данном коде умножается вполне себе адекватно.Код:calcChance /= dropmult;
А зачем лесть в исходы, если можно через скрипты реализовывать?
если есть желание, возможности и знания лезть "глубоко в исходники", то в целом, без разницы что брать
про люцеру можно сказать, что там обуфка не настолько сильная, было бы желание (что-то менять) - можно за декомпилить и собрать обратно (в т.ч. и по одному классу), реверс-инжиниринг это тоже своего рода "искусство".
как говорится "кто хочет - ищет возможности, не хочет - ищет оправдания".
Даже не думай, это еще то дерьмо.А у кого то есть на продажу l2jorion 29,30?
Мне чел советовалДаже не думай, это еще то дерьмо.
А у кого то есть на продажу l2jorion 29,30?
А исходники есть?Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
А исходники есть?
А исходники есть?
это v30?Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Не знаю, одни из последних ревизий либо крайний. Я так понял проект заброшен этого ориона. На мой взгляд лучше те что я тебе в личку кидалэто v30?
Вот один из последних AcisЯ так понял Орион этот какой то мутный не очень о нем отзыв
хороших нет, есть в меру кривые, из всех, что сейчас в шаре, нужно годик поковыряться точно, чтобы выйти в свой первый благополучный старт, с набитием шишек)брать надо изначально исходники, которые максимально хорошие
Печально что даже по сути платные сборки кривые(хороших нет, есть в меру кривые, из всех, что сейчас в шаре, нужно годик поковыряться точно, чтобы выйти в свой первый благополучный старт, с набитием шишек)
ок, разжую. под хорошими имелось ввиду наименее плохие, где меньше критичных багов, общий объем правок меньше, и базово качество кода более грамотное. Очевидно, что не все сборки одинаково кривые по начинке и качеству кода.хороших нет, есть в меру кривые, из всех, что сейчас в шаре, нужно годик поковыряться точно, чтобы выйти в свой первый благополучный старт, с набитием шишек)
А можно поинтересоваться, откуда этот нейминг, 407? 407 версия акисов на 21й jdk. а эти на 11, что следовательно...)))Вот один из последних AcisВы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрациялибо что в личку кидал на этих исходах ветка. А лучше на хф brawery делай. В общем выбора полно
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?