Як працюють формули нарахування очок у лізі?
Кожна ліга нараховує очки своїм гравцям за кожен турнір, у якому вони грають, використовуючи систему підрахунку, яку ви обираєте при створенні або редагуванні ліги:
- Логарифмічна
- Квадратний корінь
- Лінійна
- Фіксована (ви вводите точні очки для кожного місця)
- Власна (пишете власну формулу)
Змінні власної формули
Власна формула обчислюється один раз для кожного гравця в кінці турніру. Деякі її змінні описують турнір, тому вони мають однакове значення для всіх у ньому, а деякі описують гравця, для якого підраховуються очки. Розуміння цієї різниці — основна навичка при написанні формули.
Про турнір, однакове для всіх гравців:
| p | кількість гравців |
| n | кількість входів (включаючи реентрі) |
| b | бай-ін |
| z | призовий фонд |
| m | кількість призових місць |
| t | формат турніру (1 стандартний, 2 спліт, 3 шутаут, 4 містері баунті) |
Про гравця, для якого підраховуються очки:
| f | фінішна позиція |
| c | скільки вони витратили (бай-ін плюс їхні власні ребаї та адон) |
| k | нокаути, які вони зробили |
| r | ребаї, які вони взяли |
| a | адони, які вони взяли |
| x | кулі, які вони використали (їхні загальні бай-іни) |
| w | виграші (сума, яку вони виграли) |
| d | раунди до фіналу в шутауті (1 — фінальний раунд) |
Наприклад, ця формула дає кожному гравцю очко за кожного суперника, якого вони пережили, бонус у 2 очки за кожен нокаут і віднімає очко за кожен ребай:
(p - f + 1) + (2 * k) - r
Розширене: написання власної формули
Окрім арифметики, дві конструкції виконують більшість роботи в реальних формулах ліг: умови та таблиці очок. Ви також можете використовувати sqrt, log, log10, exp, pow, round, floor, fix, abs, min і max, а також ^ для степенів.
Умови з ? :
Умова читається як тест ? значення, якщо істина : значення в іншому випадку.
f == 1 ? 50 : 10
Це нараховує 50 очок переможцю та 10 всім іншим. Зверніть увагу на подвійний == для "дорівнює". Ви також маєте <, <=, >, >= і !=, і можете поєднувати тести з and і or:
p >= 20 and f <= 3 ? 10 : 0
Умови можна ланцюжити, що дозволяє клубам писати різні правила для кожної позиції. Кожен : передає управління наст упному тесту:
f == 1 ? 30 : f == 2 ? 20 : f == 3 ? 15 : 5
Таблиці очок з [ ... ][f]
Замість ланцюжків умов ви можете перелічити очки по порядку та вибрати відповідне фінішу гравця:
[100, 85, 70][f]
Список читається за позицією: перше місце отримує 100, друге 85, третє 70. Позиції починаються з 1, тому f вирівнюється зі списком без додаткових коригувань.
Завжди захищайте таблицю очок умовою. Якщо гравець фінішує нижче за кінець списку, формула не спрацює, і цей гравець не отримає жодних очок. Список з трьох записів потребує
f < 4:
f < 4 ? [100, 85, 70][f] : 0Використовуйте значення
:для встановлення мінімуму для всіх інших, наприклад: 5, щоб дати п'ять очок за участь.
Стежте за дужками
Множення та додавання виконуються перед порівнянням, що непомітно змінює те, що перевіряє формула. Написана без дужок:
30 * k + f < p / 3 + 1 ? 100 : 1
тест стає "чи 30 * k + f менше за p / 3 + 1", а не "чи f у верхній третині". Ліга може пропрацювати цілий сезон за неправильним правилом таким чином. Візьміть умову або весь умовний вираз у д ужки:
30 * k + (f < p / 3 + 1 ? 100 : 1)
Формули, які реально використовують клуби
Це реальні шаблони з ліг, які працюють на Blind Valet, спрощені лише там, де список місць клубу був дуже довгим.
| Що хотів клуб | Формула |
|---|---|
| Очко за участь, більше нічого | 1 |
| Таблиця лідерів лише з перемог | f == 1 ? 1 : 0 |
| Нокаути плюс очко за перемогу | k + (f == 1 ? 1 : 0) |
| Одне очко за кожного переможеного суперника з бонусом за п'єдестал | p - f + 1 + (f < 4 ? [4, 2, 1][f] : 0) |
| Фіксована таблиця, але всі інші все ще отримують очки | f < 10 ? [1500, 1200, 900, 700, 600, 500, 400, 300, 200][f] : 100 |
| Вищі ставки коштують більше, кожен ребай забирає очки | log(p + 1) / f * 10 + b - c / 4 |
| Очки масштабуються за розміром призового фонду | sqrt(p + 1) / f * z / 500 |
| Лише верхня третина отримує очки, масштабовано за розміром поля | 30 * k + (f < p / 3 + 1 ? sqrt(p / 10) * [120, 90, 70, 60, 50, 45, 40, 30, 25, 20][f] : 1) |
| Кожне місце як відсоток від бази, що зростає з полем | f == 1 ? round(600 + p * 10) : f == 2 ? round((600 + p * 10) * 0.82) : round((600 + p * 10) * 0.74) |
Приклад зі ставками показує, чому дві групи важливі. Він використовує b і c, які виглядають схоже, але знаходяться на протилежних сторонах: додавання b підвищує кожен результат у турнірі з вищим бай-іном, оскільки бай-ін належить турніру, тоді як віднімання c забирає частку того, що кожен гравець індивідуально витратив. Гравець, який взяв два ребаї, фінішує з меншою кількістю очок, ніж гравець, який зайняв те саме місце з однією кулею.
Перевірка вашої формули
Налаштування ліги показують попередній перегляд очок для кожної фінішної позиції, коли ви друкуєте, щоб ви могли побачити форму виплати перед збереженням. Якщо попередній перегляд порожній, формула ще не є валідною: перевірте відсутню дужку або таблицю очок, за межі якої може вийти низький фініш.