Как работят формулите за точки в лигата?
Всяка лига присъжда точки на своите играчи за всеки турнир, в който участват, използвайки системата за точкуване, която избирате, когато създавате или редактирате лигата:
- Логаритмична
- Корен квадратен
- Линейна
- Фиксирана (въвеждате точните точки за всяко място)
- Персонализирана (напишете собствена формула)
Променливи в персонализираната формула
Персонализиранат а формула се изчислява веднъж за всеки играч в края на турнира. Някои от нейните променливи описват турнира, така че имат една и съща стойност за всички в него, а други описват конкретния играч, който се точкува. Познаването коя променлива е коя е основното умение при писането на формула.
За турнира, едни и същи за всеки играч:
| p | брой играчи |
| n | брой записвания (включително повторни записвания) |
| b | бай-инът |
| z | награден фонд |
| m | брой платени места |
| t | формат на турнира (1 стандартен, 2 сплит, 3 шутаут, 4 мистъри баунти) |
За конкретния играч, който се точкува:
| f | крайна позиция |
| c | колко са похарчили (бай-ин плюс собствените им рибаи и адон) |
| k | направени нокаути |
| r | взети рибаи |
| a | взети адони |
| x | използвани bullets (общият им брой бай-ини) |
| 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 връща обратно дял от това, което всеки играч индивидуално е похарчил. Играч, който направи два рибая, завършва с по-малко точки от играч, който е взел същото място с един bullet.
Проверка на формулата
Настройките на лигата визуализират точките за всяка финална позиция, докато пишете, така че можете да видите формата на изплащането, преди да запазите. Ако визуализацията е празна, формулата все още не е валидна: проверете за липсваща скоба или таблица с точки, от която ниска позиция може да излезе извън края.