Перейти к содержимому

Счастливый сундук

Лотерейный сундук с оплатой за открытие. Каждый клик стоит $50 и разыгрывает один из четырёх уровней приза (обычный / необычный / редкий / мифический) со взвешенной вероятностью. Сделано на randActions и паттерне “повторяй записи, чтобы добавить вес”.

  • Взвешенные случайные исходы через повторение записей в randActions
  • Связку правила money, действия takeMoney и randActions в одном click
  • Многоуровневую таблицу лута без написания кода на Java

randActions равномерно выбирает одну запись. Чтобы какие-то исходы были вероятнее, просто включайте их несколько раз. С 12 записями:

  • 6 записей обычной награды = 6/12 = 50% (в примере целились в ~60%)
  • 3 записи необычной = 3/12 = 25%
  • 1 запись редкой = 1/12 = ~8%
  • 2 записи мифической = 2/12 = ~17% (целились в 2%, см. примечание)

Список выше многословный - 12 строк на 4 типа приза. Зато он читается куда лучше, чем JS-выражение со взвешенным рандомом, и в нём почти нельзя ошибиться (нет шанса опечататься в весе).

Для более тонких вероятностей (например, 1.5%) используйте список из 200+ записей. Или вынесите приз в отдельный шаблон и ссылайтесь на него много раз, чтобы список оставался компактным:

prizeCommon { itemAdd { material: COOKED_BEEF, count: 12 }, sound: ... }
prizeRare { itemAdd { material: ENCHANTED_GOLDEN_APPLE }, sound: ... }
randActions: [
${prizeCommon}
${prizeCommon}
${prizeCommon}
${prizeRare}
]

Вероятности, которые написаны в lore меню (60/30/8/2), не точно совпадают с реальными весами в списке - демо приближённое, чтобы список был короче. Чтобы получить ровно 60/30/8/2, нужно 50 записей (30/15/4/1). Подгоняйте под себя.

  1. Положите бандл в plugins/AbstractMenus/menus/example/.
  2. /am reload.
  3. /eco give <вы> 1000.
  4. Введите /ame_chest в игре.
  5. Кликните “Открыть сундук”. Повторите, чтобы увидеть разные уровни.