Перейти к содержанию
Авторизация  
Beliy.IV

Ищу "учителя" По Рассусоливанию Дроп/спойла В Ядре

Рекомендуемые сообщения

Привет Всем, ищу человека который может посмотреть и понять как работает расчёт дропа/спойла и шансов в сервере.

Т.е. заменить программный код на понятные слова или конкретный пример.

Либо обсудить построчно его на форуме.

 

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

На данный момент реализовал 100% формирование споил патча, осталось внести формула расчета спойла и шанса.

 

По завершении хочу сделать инструкцию что бы каждый смог сделать патч под свой droplist

Изменено пользователем Beliy.IV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю как там запилен дроп в ваших droplist'ах, но на оф сервере есть понятие группы.

Есть парсер для дроп/спойл патча с npcdata.txt птски. В клиенте выглядит так.

Можно запилить и под ваш droplist. Вопрос в цене.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю как там запилен дроп в ваших droplist'ах, но на оф сервере есть понятие группы.

Есть парсер для дроп/спойл патча с npcdata.txt птски. В клиенте выглядит так.

Можно запилить и под ваш droplist. Вопрос в цене.

Извиняюсь что не по теме ! Кто делал вам дизайн сайта и форума ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извиняюсь что не по теме ! Кто делал вам дизайн сайта и форума ?

Руководитель проекта сам и рисовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю как там запилен дроп в ваших droplist'ах, но на оф сервере есть понятие группы.

Есть парсер для дроп/спойл патча с npcdata.txt птски. В клиенте выглядит так.

Можно запилить и под ваш droplist. Вопрос в цене.

Я не спрашивал как у Вас. За птс, спс, добавлю - ПРОШУ рассказать как ява просчитывает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или подскажите в сборках в каком файле лежит расчёт

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Я не спрашивал как у Вас. За птс, спс, добавлю - ПРОШУ рассказать как ява просчитывает.

зависит от сборки

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

где-то группы есть и работают именно так как они работают на оффе - к примеру так в овере и в производных от овера сборках.

 

вот пример правильного дропа с группами

<!-- Wilderness Protector / Дикий Хранитель -->
<npc id="23353" name="Wilderness Protector" title="">
	<rewardlist type="RATED_GROUPED">
		<group id="1" chance="70.00000">
			<reward item_id="57" min="2853" max="6656" chance="100.00000" />	<!-- [70.00000%] Adena / Адена -->
		</group>
		<group id="2" chance="5.35000">
			<reward item_id="36557" min="1" max="1" chance="84.11215" />	<!-- [4.50000%] Accessory Gem / Самоцвет для Аксессуара -->
			<reward item_id="36558" min="1" max="1" chance="15.88785" />	<!-- [0.85000% | 1/118] Accessory Gem (Mid-grade) / Самоцвет для Аксессуара Среднего Качества -->
		</group>
		<group id="3" chance="1.01200">
			<reward item_id="36759" min="1" max="1" chance="49.40711" />	<!-- [0.50000% | 1/200] Recipe: Immortal Sigil (60%) / Рецепт: Символ Бессмертия (60%) -->
			<reward item_id="36748" min="1" max="1" chance="49.40711" />	<!-- [0.50000% | 1/200] Recipe: Immortal Shield (60%) / Рецепт: Щит Бессмертия (60%) -->
			<reward item_id="36918" min="1" max="1" chance="0.59289" />	<!-- [0.00600% | 1/16667] Recipe: Weapon Fragment (Mid-grade) - Upgrade / Рецепт: Фрагмент Оружия Среднего Качества - Повышение -->
			<reward item_id="36907" min="1" max="1" chance="0.29644" />	<!-- [0.00300% | 1/33333] Recipe: Adamantite Wire - Upgrade / Рецепт: Адамантитовый Трос - Повышение -->
			<reward item_id="36867" min="1" max="1" chance="0.29644" />	<!-- [0.00300% | 1/33333] Recipe: Adamantite - Downgrade / Рецепт: Адамантит - Понижение -->
		</group>
		<group id="4" chance="0.27500">
			<reward item_id="9549" min="1" max="1" chance="90.90909" />	<!-- [0.25000% | 1/400] Wind Stone / Руда Ветра -->
			<reward item_id="9555" min="1" max="1" chance="9.09091" />	<!-- [0.02500% | 1/4000] Wind Crystal / Кристалл Ветра -->
		</group>
	</rewardlist>
	<rewardlist type="SWEEP">
		<reward item_id="36517" min="1" max="1" chance="65.70000" />	<!-- [65.70000%] Leather / Кожа -->
		<reward item_id="36518" min="1" max="1" chance="13.12000" />	<!-- [13.12000%] Durable Leather / Толстая Кожа -->
		<reward item_id="36884" min="1" max="1" chance="0.30000" />	<!-- [0.30000% | 1/333] Recipe: Synthetic Braid - Upgrade / Рецепт: Синтетическая Веревка - Повышение -->
		<reward item_id="36883" min="1" max="1" chance="0.30000" />	<!-- [0.30000% | 1/333] Recipe: Synthetic Braid - Downgrade / Рецепт: Синтетическая Веревка - Понижение -->
	</rewardlist>
</npc>

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это аналог таблицы БД droplist

 

А где же сама формула умножения на рейты, расчета шанса выпадения, где формула в которой задействованы эта аргументы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это аналог таблицы БД droplist

 

А где же сама формула умножения на рейты, расчета шанса выпадения, где формула в которой задействованы эта аргументы

 

В ядре все формулы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В ядре все формулы.

Вот вот. Я за них и говорю, неужели мы подходим к сути.

Я вот ради эксперимента поставил l2j нашёл там l2jserver.jar , открыл, там классы, может в них формула? если да то в каком

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могут же чисто min и max умножаться, я не разу не видел что спойлили по 20 точек.

 

Ребят, неужели не кто не знает в каком файле в ядре лежит расчёт?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могут же чисто min и max умножаться, я не разу не видел что спойлили по 20 точек.

 

Ребят, неужели не кто не знает в каком файле в ядре лежит расчёт?

Все сокращено.

 

class L2Character

public boolean doDie(L2Character killer)

{

calculateRewards(killer)

}

 

 

class L2Attackable

protected void calculateRewards(L2Character lastAttacker)

 

и все дальше смотрите сами l2jhf5

Изменено пользователем LifeGame32

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нечего из этих строк не понял.

Где лежит файл, как называется?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

там много классов завязано

 

и вобще, если ты ну никак не разбираешся в яве, то может и не стоит лезть в это?

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот в этом Я разобрался

 

// Кол-во и шансы для серверов с высокими рейтами
if (ШАНС > 1.000.000 && !L2Config.PRECISE_DROP_CALCULATION)
{
разница = шанс / 1000000;
if (minCount < maxCount) itemCount += ШАНС(minCount * разница, maxCount * разница);
else
if (minCount == maxCount) itemCount += minCount * разница;
else
itemCount += разница;

ШАНС = ШАНС % 1.000.000;
}



// Check if the Item must be dropped
int random = ШАНС(от 0 до 1.000.000);
while (random < ШАНС)
{
// Get the item quantity dropped
if (minCount < maxCount) itemCount += ШАНС(minCount, maxCount);
else
if (minCount == maxCount) itemCount += minCount;
else itemCount++;

// Prepare for next iteration
if ШАНС > 1.000.000
ШАНС -= 1.000.000;
}

973 private RewardItem calculateRewardItem(L2PcInstance lastAttacker, L2DropData drop, int levelModifier, boolean isSweep)
974 {
975 // Стандартные шансы дропа
976 float ШАНС = drop.getChance();
977 // deepBlueDrop - это мобы низкого лвл, у которых темно синий ник
978 int deepBlueDrop = 1;
979 if (L2Config.DEEPBLUE_DROP_RULES)
980 {
// Level Modifier = (level+89)/100
981 if (levelModifier > 0)
982 {
983 // Мы должны умножить на рейты дропа сервера, так что мы всегда получаем низкий шанс дропа с тёмно синих мобов.
984 // Только на дроп адены, на остольное идёт умножение рейтов сервера
985 deepBlueDrop = 3;
986 if (drop.getItemId() == 57) deepBlueDrop *= (int)L2Config.RATE_DROP_ITEMS;
987 }
988 }
989
990 if(deepBlueDrop == 0) //страховка, что бы deepBlueDrop не был 0
991 deepBlueDrop = 1;

992 // Проверка дропа для синих мобов
993 if (L2Config.DEEPBLUE_DROP_RULES) ШАНС = ((ШАНС - ((ШАНС * levelModifier)/100)) / deepBlueDrop);
994
995 // Применение конфигов рейтов к дропу
996 if (drop.getItemId() == 57) ШАНС *= L2Config.RATE_DROP_ADENA;
997 else if (isSweep) ШАНС *= L2Config.RATE_DROP_SPOIL;
998 else ШАНС *= L2Config.RATE_DROP_ITEMS;
999
1003 // Округление шансов дропа, что бы было целое число
// Math.round = округление
1004 ШАНС = Math.round(ШАНС);
1005
1006 // Установка предела для шанса на дроп
1007 if (ШАНС < 1) ШАНС = 1;
1008 // if (drop.getItemId() == 57 && ШАНС > 1.000.000) ШАНС = 1.000.000; // что бы адена выпала не больше 1 кучки
1009
1010 // Установка min и max кол-во итемов с одного моба
1011 int minCount = drop.getMinDrop();
1012 int maxCount = drop.getMaxDrop();
1013 int itemCount = 0;
1014
1015 // Кол-во и шансы для серверов с шансом более 100%
1016 if (ШАНС > 1.000.000)
1017 {
1018 int multiplier = (int)ШАНС / 1.000.000;
1019 if (minCount < maxCount) itemCount += Сл.Число(minCount * multiplier, maxCount * multiplier);
// 13 13 13 * 1,2
1020 else if (minCount == maxCount) itemCount = 0 + minCount * multiplier;
//если 1=1+
1021 else itemCount += multiplier;
1022 189400 % 1000000
1023 ШАНС = ШАНС % 1.000.000;
1024 }
1025
1026 // Проверка будет ли дроп
1027 int random = Сл.Число( до 1.000.000);
1028 while (random < ШАНС)
1029 {
1030 // Кол-во итемов когда шансы до 100%
1031 if (minCount < maxCount) itemCount += Сл.Число(minCount, maxCount);
1032 else if (minCount == maxCount) itemCount += minCount;
1033 else itemCount++;
1034
1035 // Prepare for next iteration if ШАНС > 1.000.000
1036 ШАНС -= 1.000.000;

1041
1042 if (itemCount > 0) return new RewardItem(drop.getItemId(), itemCount);
1043 else if (itemCount == 0 && L2Config.DEBUG) _log.fine("Roll produced 0 items to drop...");
1044
1045 return null;
1046 }

 

Правда я подставил уже понятные слова: в итоге формула такова: умножается рейты деляться на 100%, получаем разницу, на неё умножаем min и max, и от умноженых шансов отнимает 100% итак пока шансы не станут меньше 100%

ещё проще

13шт 18% рейты х10, получаем 180%, это 13 шт 100% и 80% что ещё 13, в l2jservere (сборка la2off) именно так и работает, и на шарном сервере тоже подходит

 

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

Изменено пользователем Beliy.IV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

я говорю вот об этом

 

thumb_pre_1415177818__shot00000.jpg

Изменено пользователем Gaikotsu

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

я говорю вот об этом

Классно, но на interlude такого не видел, там есть shift+click и появляется диалог который просто ужасен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сборка "гниль" если так как вы пишете (во всех сборках что дорожат репой все в подобном виде что приведен выше).

Так же уже есть существующие патчи на дроп\споил, выкладывались на этом форуме.

Пы.сы. Или же ищем сервер откуда слизать (как вариант, зачем делать то что сделано (до воли не плохо).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По какому?

сборка "гниль" если так как вы пишете (во всех сборках что дорожат репой все в подобном виде что приведен выше).

Так же уже есть существующие патчи на дроп\споил, выкладывались на этом форуме.

Пы.сы. Или же ищем сервер откуда слизать (как вариант, зачем делать то что сделано (до воли не плохо).

По какому принципу? умножать min и max? покажи мне сервер где по 10 точек спойлиться

Я хочу сделать патч под конкретный сервер, что бы там были только те итемы которые реально есть и дропаються на конкретном сервере

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

 

По поводу скриншота, что в игре красиво дроп споил выводит, я такого ен видел на с6, где такое взять?

Изменено пользователем Beliy.IV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

в сборках на основе феникса или овера за это отвечает класс OnActionShift.java + RewardListInfo.java.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Открываете базу сборки, находите дроп (отдельная папка или же Дроп будет в самих НПЦ)

там вы можете прописать минимальное и максимальное количество дропа\спойла и шансы для всего этого.

В игре как простой игров вы можете только просматривать то что сделано на серверной части.

Патчи по отображению дропа есть разные.

Если отображение дропа и шансов не корректно настроено в самой сборке (конфиге), то вы хоть прыгайте на голове (за что получите много денег и признание) но корректного отображения вы не увидите если только отредактируете клиентскую часть.

 

 

 

.....добавлено через 55 мин.

так же множитель дропа зависит от настройки Конфига (настройки ПА так же).

 

 

Так же стоит принять во внимание пост:

 

 

Изменено пользователем MaJr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я так понимаю, формула лежит в ядре, т.е. в файле core, там классы их я открыть могу, но какой нужно искать класс и где

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...