Модуль:StatEngine/RatingBuilder/TournamentPoints: различия между версиями
Перейти к навигации
Перейти к поиску
Новая страница: «-- ========================================================================= -- Модуль:StatEngine/TournamentPoints -- Выдаёт список участников заданного турнира в указанном году с их очками -- ========================================================================= local p = {} local Builder = require('Модуль:StatEngine/RatingBuilder') local TeamsDB = require('Модуль:Data/Teams...» |
Нет описания правки |
||
| Строка 121: | Строка 121: | ||
}, | }, | ||
["ЛНа"] = { | ["ЛНа"] = { | ||
[2039] = { ["ч"]=24, ["ф"]=21.6, ["б"]=19.2, ["д"]=16.8, ["фA"]=14.4, ["пA"]=9.6, ["2гA"]=6.4, ["3гA"]=3.2, ["4гA"]=1.6, ["побB"]=2.4, ["фB"]=2.4, ["пB"]=2.4, ["чфB"]=2.4, ["2гB"]=1.6, ["3гB"]=0.8, ["4гB"]=0.4, ["побC"]=0.6, ["фC"]=0.6, ["пC"]=0.6, ["чфC"]=0.6, ["2гC"]=0.4, ["3гC"]=0.2, ["4гC"]=0.1, ["побD"]=0.15, ["фD"]=0.15, ["пD"]=0.15, ["чфD"]=0.15, ["2гD"]=0.1, ["3гD"]=0.05 }, | [2039] = { ["ч"]=24, ["ф"]=21.6, ["б"]=19.2, ["д"]=16.8, ["фA"]=14.4, ["пA"]=9.6, ["2гA"]=6.4, ["3гA"]=3.2, ["4гA"]=1.6, ["побB"]=2.4, ["фB"]=2.4, ["пB"]=2.4, ["чфB"]=2.4, ["1гB"]=2.4, ["2гB"]=1.6, ["3гB"]=0.8, ["4гB"]=0.4, ["побC"]=0.6, ["фC"]=0.6, ["пC"]=0.6, ["чфC"]=0.6, ["1гC"]=0.6, ["2гC"]=0.4, ["3гC"]=0.2, ["4гC"]=0.1, ["побD"]=0.15, ["фD"]=0.15, ["пD"]=0.15, ["чфD"]=0.15, ["1гD"]=0.1, ["2гD"]=0.1, ["3гD"]=0.05 }, | ||
[2043] = { ["ч"]=32, ["ф"]=28.8, ["б"]=25.6, ["д"]=22.4, ["фA"]=19.2, ["пA"]=12.8, ["2гA"]=9.6, ["3гA"]=4.8, ["4гA"]=2.4, ["побB"]=3.6, ["фB"]=3.6, ["пB"]=3.6, ["чфB"]=3.6, ["2гB"]=2.4, ["3гB"]=1.2, ["4гB"]=0.6, ["побC"]=0.9, ["фC"]=0.9, ["пC"]=0.9, ["чфC"]=0.9, ["2гC"]=0.6, ["3гC"]=0.3, ["4гC"]=0.15, ["побD"]=0.22, ["фD"]=0.22, ["пD"]=0.22, ["чфD"]=0.22, ["2гD"]=0.15, ["3гD"]=0.07 }, | [2043] = { ["ч"]=32, ["ф"]=28.8, ["б"]=25.6, ["д"]=22.4, ["фA"]=19.2, ["пA"]=12.8, ["2гA"]=9.6, ["3гA"]=4.8, ["4гA"]=2.4, ["побB"]=3.6, ["фB"]=3.6, ["пB"]=3.6, ["чфB"]=3.6, ["1гB"]=3.6, ["2гB"]=2.4, ["3гB"]=1.2, ["4гB"]=0.6, ["побC"]=0.9, ["фC"]=0.9, ["пC"]=0.9, ["чфC"]=0.9, ["1гC"]=0.9, ["2гC"]=0.6, ["3гC"]=0.3, ["4гC"]=0.15, ["побD"]=0.22, ["фD"]=0.22, ["пD"]=0.22, ["чфD"]=0.22, ["1гD"]=0.22, ["2гD"]=0.15, ["3гD"]=0.07 }, | ||
[2047] = { ["пол"] = 33.6, ["ч"]=48, ["ф"]=43.2, ["б"]=38.4, ["д"]=33.6, ["фA"]=28.8, ["пA"]=19.2, ["2гA"]=12.8, ["3гA"]=6.4, ["4гA"]=3.2, ["побB"]=4.8, ["фB"]=4.8, ["пB"]=4.8, ["чфB"]=4.8, ["2гB"]=3.2, ["3гB"]=1.6, ["4гB"]=0.8, ["побC"]=1.2, ["фC"]=1.2, ["пC"]=1.2, ["чфC"]=1.2, ["2гC"]=0.8, ["3гC"]=0.4, ["4гC"]=0.2, ["побD"]=0.3, ["фD"]=0.3, ["пD"]=0.3, ["чфD"]=0.3, ["2гD"]=0.2, ["3гD"]=0.1 }, | [2047] = { ["пол"] = 33.6, ["ч"]=48, ["ф"]=43.2, ["б"]=38.4, ["д"]=33.6, ["фA"]=28.8, ["пA"]=19.2, ["2гA"]=12.8, ["3гA"]=6.4, ["4гA"]=3.2, ["побB"]=4.8, ["фB"]=4.8, ["пB"]=4.8, ["чфB"]=4.8, ["1гB"]=4.8, ["2гB"]=3.2, ["3гB"]=1.6, ["4гB"]=0.8, ["побC"]=1.2, ["фC"]=1.2, ["пC"]=1.2, ["чфC"]=1.2, ["1гC"]=1.2, ["2гC"]=0.8, ["3гC"]=0.4, ["4гC"]=0.2, ["побD"]=0.3, ["фD"]=0.3, ["пD"]=0.3, ["чфD"]=0.3, ["1гD"]=0.3, ["2гD"]=0.2, ["3гD"]=0.1 }, | ||
[2051] = { ["ч"]=64, ["ф"]=57.6, ["б"]=51.2, ["д"]=44.8, ["фA"]=38.4, ["пA"]=28.8, ["2гA"]=19.2, ["3гA"]=9.6, ["4гA"]=4.8, ["побB"]=6.4, ["фB"]=6.4, ["пB"]=6.4, ["чфB"]=6.4, ["2гB"]=4.8, ["3гB"]=2.4, ["4гB"]=1.2, ["побC"]=1.8, ["фC"]=1.8, ["пC"]=1.8, ["чфC"]=1.8, ["2гC"]=1.2, ["3гC"]=0.6, ["4гC"]=0.3, ["побD"]=0.45, ["фD"]=0.45, ["пD"]=0.45, ["чфD"]=0.45, ["2гD"]=0.3, ["3гD"]=0.15 }, | [2051] = { ["ч"]=64, ["ф"]=57.6, ["б"]=51.2, ["д"]=44.8, ["фA"]=38.4, ["пA"]=28.8, ["2гA"]=19.2, ["3гA"]=9.6, ["4гA"]=4.8, ["побB"]=6.4, ["фB"]=6.4, ["пB"]=6.4, ["чфB"]=6.4, ["1гB"]=6.4, ["2гB"]=4.8, ["3гB"]=2.4, ["4гB"]=1.2, ["побC"]=1.8, ["фC"]=1.8, ["пC"]=1.8, ["чфC"]=1.8, ["1гC"]=1.8, ["2гC"]=1.2, ["3гC"]=0.6, ["4гC"]=0.3, ["побD"]=0.45, ["фD"]=0.45, ["пD"]=0.45, ["чфD"]=0.45, ["1гD"]=0.45, ["2гD"]=0.3, ["3гD"]=0.15 }, | ||
}, | }, | ||
["ЧЧМ"] = { | ["ЧЧМ"] = { | ||
Версия от 23:31, 2 июня 2026
Чтобы получить дефолтный список (только коды и очки) по новой системе:
{{#invoke:StatEngine/RatingBuilder/TournamentPoints|main|ЧТМ|2014}}
Указать старую систему:
{{#invoke:StatEngine/RatingBuilder/TournamentPoints|main|ЧТМ|2014|old}}
Добавить 4-й параметр, чтобы отобразить код ранга (любая строка, например yes):
{{#invoke:StatEngine/RatingBuilder/TournamentPoints|main|ЧТМ|2014|new|yes}}
-- =========================================================================
-- Модуль:StatEngine/TournamentPoints
-- Выдаёт список участников заданного турнира в указанном году с их очками
-- =========================================================================
local p = {}
local Builder = require('Модуль:StatEngine/RatingBuilder')
local TeamsDB = require('Модуль:Data/Teams')
-- Проверка, относится ли турнир к региональным
local is_regional = { ["КАм"] = true, ["КАф"] = true, ["КЕв"] = true, ["КОк"] = true }
-- =========================================================
-- 1. СЛОВАРИ ОЧКОВ (OLD SYSTEM: 2009-2039)
-- =========================================================
local old_system = {
["ЧТМ"] = {
[2006] = { ["ч"]=20, ["ф"]=15, ["б"]=10, ["чф"]=5, ["в"]=3, ["3г"]=2, ["4г"]=1 },
[2010] = { ["ч"]=40, ["ф"]=30, ["б"]=20, ["д"]=20, ["чф"]=10, ["в"]=6, ["3г"]=4, ["4г"]=2, ["ос-1г"]=1, ["о-1г"]=1, ["ос-2г"]=1, ["о-2г"]=1, ["ос-3г"]=0.5, ["о-3г"]=0.5 },
[2014] = { ["ч"]=60, ["ф"]=45, ["б"]=30, ["д"]=30, ["чф"]=15, ["в"]=9, ["3г"]=6, ["4г"]=3, ["ос-2г"]=1, ["о-2г"]=1, ["ос-3г"]=0.5, ["о-3г"]=0.5 },
[2018] = { ["ч"]=80, ["ф"]=60, ["б"]=40, ["д"]=40, ["чф"]=20, ["в"]=12, ["3г"]=8, ["4г"]=4, ["ос-2г"]=2, ["о-1г"]=2, ["о-2г"]=2, ["ос-3г"]=1, ["о-3г"]=1 },
[2022] = { ["ч"]=100, ["ф"]=75, ["б"]=50, ["д"]=50, ["чф"]=25, ["в"]=15, ["3г"]=10, ["4г"]=5, ["ос-2г"]=2, ["о-2г"]=2, ["ос-3г"]=1, ["о1-3г"]=1, ["о-3г"]=1, ["о1-4г"]=0.5, ["о-4г"]=0.5 },
[2026] = { ["ч"]=120, ["ф"]=90, ["б"]=60, ["д"]=60, ["чф"]=30, ["в"]=18, ["3г"]=12, ["4г"]=6, ["ос-2г"]=3, ["о-2г"]=3, ["ос-3г"]=2, ["о1-3г"]=2, ["о-3г"]=2, ["о1-4г"]=1, ["о-4г"]=1 },
[2030] = { ["ч"]=140, ["ф"]=105, ["б"]=70, ["д"]=70, ["чф"]=35, ["в"]=21, ["3г"]=14, ["4г"]=7, ["ос-2г"]=3, ["о2-2г"]=3, ["ос-3г"]=2, ["о2-3г"]=2, ["о2-4г"]=1, ["о1-2г"]=0.5, ["о1-3г"]=0.25 },
[2034] = { ["ч"]=160, ["ф"]=120, ["б"]=80, ["д"]=80, ["чф"]=40, ["в"]=24, ["3г"]=16, ["4г"]=8, ["ос-2г"]=4, ["о3-2г"]=4, ["ос-3г"]=2, ["о3-3г"]=2, ["о3-4г"]=1, ["о2-3г"]=0.5, ["о2-4г"]=0.25 },
[2038] = { ["ч"]=180, ["ф"]=135, ["б"]=90, ["д"]=90, ["чф"]=45, ["в"]=27, ["3г"]=18, ["4г"]=9, ["ос-2г"]=4, ["о3-2г"]=4, ["ос-3г"]=2, ["о3-3г"]=2, ["о3-4г"]=1, ["о2-2г"]=0.75, ["о2-3г"]=0.5, ["о2-4г"]=0.25 },
},
["Reg"] = {
[2009] = { ["ч"]=3, ["ф"]=2, ["б"]=1, ["д"]=1, ["чф"]=0.75, ["2г"]=0.75, ["3г"]=0.5, ["4г"]=0.25 },
[2013] = { ["ч"]=6, ["ф"]=4, ["б"]=2, ["д"]=2, ["чф"]=1, ["3г"]=0.5, ["4г"]=0.25 },
[2017] = { ["ч"]=9, ["ф"]=6, ["б"]=3, ["д"]=3, ["чф"]=1, ["3г"]=0.5, ["4г"]=0.25 },
[2020] = { ["ч"]=12, ["ф"]=8, ["б"]=4, ["д"]=4, ["чф"]=2, ["3г"]=1, ["4г"]=0.5 },
[2024] = { ["ч"]=15, ["ф"]=10, ["б"]=5, ["д"]=5, ["чф"]=3, ["3г"]=1, ["4г"]=0.5 },
[2028] = { ["ч"]=18, ["ф"]=12, ["б"]=6, ["д"]=6, ["чф"]=4, ["3г"]=2, ["4г"]=1 },
[2032] = { ["ч"]=21, ["ф"]=14, ["б"]=7, ["д"]=7, ["чф"]=4, ["3г"]=2, ["4г"]=1 },
[2036] = { ["ч"]=24, ["ф"]=16, ["б"]=8, ["д"]=8, ["чф"]=4, ["3г"]=2, ["4г"]=1 },
},
["ККо"] = {
[2009] = { ["ч"]=3, ["ф"]=2, ["б"]=1 },
[2013] = { ["ч"]=6, ["ф"]=4, ["б"]=2 },
[2017] = { ["ч"]=9, ["ф"]=6, ["б"]=3, ["д"]=1 },
[2021] = { ["ч"]=12, ["ф"]=8, ["б"]=4, ["д"]=2, ["5"]=1 },
[2025] = { ["ч"]=15, ["ф"]=10, ["б"]=5, ["д"]=3, ["5"]=2, ["6"]=1 },
[2029] = { ["ч"]=18, ["ф"]=12, ["б"]=6, ["д"]=4, ["5"]=3, ["6"]=2, ["7"]=1 },
[2033] = { ["ч"]=21, ["ф"]=14, ["б"]=7, ["д"]=4, ["5"]=3, ["6"]=2, ["7"]=1 },
[2037] = { ["ч"]=24, ["ф"]=16, ["б"]=8, ["д"]=4, ["5"]=3, ["6"]=2, ["7"]=1 },
},
["КФе"] = {
[2015] = { ["ч"]=6, ["ф"]=3, ["б"]=2, ["д"]=1 },
[2019] = { ["ч"]=8, ["ф"]=5, ["б"]=3, ["д"]=2 },
[2023] = { ["ч"]=10, ["ф"]=8, ["б"]=5, ["д"]=3 },
[2027] = { ["ч"]=12, ["ф"]=10, ["б"]=7, ["д"]=4 },
[2031] = { ["ч"]=15, ["ф"]=11, ["б"]=8, ["д"]=4 },
[2035] = { ["ч"]=18, ["ф"]=12, ["б"]=8, ["д"]=4 },
},
["ЛНа"] = {
[2039] = { ["ч"]=27, ["ф"]=18, ["б"]=9, ["д"]=5, ["фA"]=2, ["пA"]=1, ["2гA"]=0.5, ["3гA"]=0.25, ["побB"]=0.25, ["фB"]=0.25, ["пB"]=0.25, ["чфB"]=0.25 }
}
}
local old_africa_exceptions = {
[2022] = { ["ос-3г"] = 2, ["о2-3г"] = 2, ["ос-4г"] = 1, ["о2-4г"] = 1, ["ос-5г"] = 0.5, ["о2-5г"] = 0.5 },
[2026] = { ["ос-3г"] = 3, ["о2-3г"] = 3, ["ос-4г"] = 2, ["о2-4г"] = 2, ["ос-5г"] = 1, ["о2-5г"] = 1 }
}
-- =========================================================
-- 2. СЛОВАРИ ОЧКОВ (NEW SYSTEM: 2040-...)
-- =========================================================
local new_system = {
["ЧТМ"] = {
[2006] = { ["ч"]=10, ["ф"]=9, ["б"]=8, ["чф"]=6, ["в"]=4, ["3г"]=2, ["4г"]=1 },
[2010] = { ["ч"]=15, ["ф"]=13.5, ["б"]=12, ["д"]=10.5, ["чф"]=9, ["в"]=6, ["3г"]=3, ["4г"]=1.5, ["ос-1г"]=0.75, ["о-1г"]=0.75, ["ос-2г"]=0.75, ["о-2г"]=0.75, ["ос-3г"]=0.5, ["о-3г"]=0.5 },
[2014] = { ["ч"]=20, ["ф"]=18, ["б"]=16, ["д"]=14, ["чф"]=12, ["в"]=8, ["3г"]=4, ["4г"]=2, ["ос-2г"]=1, ["о-2г"]=1, ["ос-3г"]=0.75, ["о-3г"]=0.75 },
[2018] = { ["ч"]=30, ["ф"]=27, ["б"]=24, ["д"]=21, ["чф"]=18, ["в"]=12, ["3г"]=6, ["4г"]=3, ["ос-1г"]=1.5, ["о-1г"]=1.5, ["ос-2г"]=1.5, ["о-2г"]=1.5, ["ос-3г"]=1, ["о-3г"]=1 },
[2022] = { ["ч"]=40, ["ф"]=36, ["б"]=32, ["д"]=28, ["чф"]=24, ["в"]=16, ["3г"]=8, ["4г"]=4, ["ос-2г"]=2, ["о-2г"]=2, ["ос-3г"]=1.5, ["о-3г"]=1.5, ["о-4г"]=1 },
[2026] = { ["ч"]=60, ["ф"]=54, ["б"]=48, ["д"]=42, ["чф"]=36, ["в"]=24, ["3г"]=12, ["4г"]=6, ["ос-2г"]=3, ["о-2г"]=3, ["ос-3г"]=2.25, ["о-3г"]=2.25, ["о-4г"]=1.5 },
[2030] = { ["ч"]=80, ["ф"]=72, ["б"]=64, ["д"]=56, ["чф"]=48, ["в"]=32, ["3г"]=16, ["4г"]=8, ["ос-2г"]=4, ["о2-2г"]=4, ["ос-3г"]=3, ["о2-3г"]=3, ["о2-4г"]=2, ["о1-2г"]=1.5, ["о1-3г"]=1 },
[2034] = { ["ч"]=120, ["ф"]=108, ["б"]=96, ["д"]=84, ["чф"]=72, ["в"]=48, ["3г"]=24, ["4г"]=12, ["ос-2г"]=6, ["о3-2г"]=6, ["ос-3г"]=4.5, ["о3-3г"]=4.5, ["о3-4г"]=3, ["о2-3г"]=1.5, ["о2-4г"]=1.12, ["о1-1г"]=0.75, ["о1-2г"]=0.56, ["о1-3г"]=0.37 },
[2038] = { ["ч"]=160, ["ф"]=144, ["б"]=128, ["д"]=112, ["чф"]=96, ["в"]=64, ["3г"]=32, ["4г"]=16, ["ос-2г"]=8, ["о3-2г"]=8, ["ос-3г"]=6, ["о3-3г"]=6, ["о3-4г"]=4, ["о2-2г"]=3, ["о2-3г"]=2, ["о2-4г"]=1.5, ["о1-1г"]=1, ["о1-2г"]=0.75, ["о1-3г"]=0.5 },
[2042] = { ["ч"]=240, ["ф"]=216, ["б"]=192, ["д"]=168, ["чф"]=144, ["в"]=96, ["3г"]=48, ["4г"]=24, ["ос-2г"]=12, ["о3-2г"]=12, ["ос-3г"]=9, ["о3-3г"]=9, ["о3-4г"]=6, ["о2-2г"]=4.5, ["о2-3г"]=3, ["о2-4г"]=2.25, ["о1-1г"]=1.5, ["о1-2г"]=1.15, ["о1-3г"]=0.75 },
[2046] = { ["пол"] = 224, ["ч"]=320, ["ф"]=288, ["б"]=256, ["д"]=224, ["чф"]=192, ["в"]=128, ["3г"]=64, ["4г"]=32, ["ос-2г"]=16, ["о3-2г"]=16, ["ос-3г"]=12, ["о3-3г"]=12, ["о3-4г"]=8, ["о2-2г"]=6, ["о2-3г"]=4, ["о2-4г"]=3, ["о1-1г"]=2, ["о1-2г"]=1.5, ["о1-3г"]=1, ["о1-3г-no"]=0.5, ["о1-4г"]=0.5 },
[2050] = { ["ч"]=480, ["ф"]=432, ["б"]=384, ["д"]=336, ["чф"]=288, ["в"]=192, ["3г"]=96, ["4г"]=48, ["ос-2г"]=24, ["о3-2г"]=24, ["ос-3г"]=18, ["о3-3г"]=18, ["о3-4г"]=12, ["о2-2г"]=9, ["о2-3г"]=6, ["о2-4г"]=4.5, ["о1-1г"]=3, ["о1-2г"]=2.25, ["о1-3г"]=1.5, ["о1-3г-no"]=0.75, ["о1-4г"]=0.75 },
[2054] = { ["ч"]=640, ["ф"]=576, ["б"]=512, ["д"]=448, ["чф"]=384, ["в"]=256, ["3г"]=128, ["4г"]=64, ["ос-2г"]=32, ["о3-2г"]=32, ["ос-3г"]=24, ["о3-3г"]=24, ["о3-4г"]=16, ["о2-2г"]=12, ["о2-3г"]=8, ["о2-4г"]=6, ["о1-1г"]=4, ["о1-2г"]=3, ["о1-3г"]=2, ["о1-3г-no"]=1, ["о1-4г"]=1 },
},
["Reg"] = {
[2009] = { ["ч"]=1.5, ["ф"]=1.35, ["б"]=1.2, ["д"]=1.05, ["чф"]=0.9, ["2г"]=0.9, ["3г"]=0.45, ["4г"]=0.22 },
[2013] = { ["ч"]=2, ["ф"]=1.8, ["б"]=1.6, ["д"]=1.4, ["чф"]=1.2, ["3г"]=0.6, ["4г"]=0.3 },
[2017] = { ["ч"]=3, ["ф"]=2.7, ["б"]=2.4, ["д"]=2.1, ["чф"]=1.8, ["3г"]=0.9, ["4г"]=0.45 },
[2020] = { ["ч"]=4, ["ф"]=3.6, ["б"]=3.2, ["д"]=2.8, ["чф"]=2.4, ["3г"]=1.2, ["4г"]=0.6, ["ос-2г"]=0.3, ["о-2г"]=0.3, ["ос-3г"]=0.2, ["о-3г"]=0.2 },
[2024] = { ["ч"]=6, ["ф"]=5.4, ["б"]=4.8, ["д"]=4.2, ["чф"]=3.6, ["3г"]=1.8, ["4г"]=0.9, ["ос-2г"]=0.45, ["о-2г"]=0.45, ["о2-2г"]=0.45, ["ос-3г"]=0.3, ["о2-3г"]=0.3, ["о-3г"]=0.3 },
[2028] = { ["ч"]=8, ["ф"]=7.2, ["б"]=6.4, ["д"]=5.6, ["чф"]=4.8, ["3г"]=2.4, ["4г"]=1.2, ["ос-2г"]=0.6, ["о2-2г"]=0.6, ["о-2г"]=0.6, ["ос-3г"]=0.45, ["о2-3г"]=0.45, ["о-3г"]=0.45 },
[2032] = { ["ч"]=12, ["ф"]=10.8, ["б"]=9.6, ["д"]=8.4, ["чф"]=7.2, ["3г"]=3.6, ["4г"]=1.8, ["ос-2г"]=0.9, ["о2-2г"]=0.9, ["о-2г"]=0.9, ["ос-3г"]=0.6, ["о2-3г"]=0.6, ["о-3г"]=0.6 },
[2036] = { ["ч"]=16, ["ф"]=14.4, ["б"]=12.8, ["д"]=11.2, ["чф"]=9.6, ["3г"]=4.8, ["4г"]=2.4, ["ос-2г"]=1.2, ["о-2г"]=1.2, ["ос-3г"]=0.8, ["о-3г"]=0.8 },
[2040] = { ["ч"]=24, ["ф"]=21.6, ["б"]=19.2, ["д"]=16.8, ["чф"]=14.4, ["3г"]=7.2, ["4г"]=3.6, ["ос-2г"]=1.8, ["о-2г"]=1.8, ["ос-3г"]=1.2, ["о-3г"]=1.2 },
[2044] = { ["ч"]=32, ["ф"]=28.8, ["б"]=25.6, ["д"]=22.4, ["чф"]=19.2, ["3г"]=9.6, ["4г"]=4.8, ["ос-2г"]=2.4, ["о-2г"]=2.4, ["ос-3г"]=1.6, ["о-3г"]=1.6 },
[2048] = { ["пол"] = 33.6, ["ч"]=48, ["ф"]=43.2, ["б"]=38.4, ["д"]=33.6, ["чф"]=28.8, ["3г"]=14.4, ["4г"]=7.2, ["ос-2г"]=3.6, ["о-2г"]=3.6, ["ос-3г"]=2.4, ["о-3г"]=2.4 },
[2052] = { ["ч"]=64, ["ф"]=57.6, ["б"]=51.2, ["д"]=44.8, ["чф"]=38.4, ["3г"]=19.2, ["4г"]=9.6, ["ос-2г"]=4.8, ["о-2г"]=4.8, ["ос-3г"]=3.2, ["о-3г"]=3.2 },
},
["ККо"] = {
[2009] = { ["ч"]=0.75, ["ф"]=0.67, ["б"]=0.6, ["д"]=0.57, ["5"]=0.45, ["6"]=0.3, ["7"]=0.22 },
[2013] = { ["ч"]=1, ["ф"]=0.9, ["б"]=0.8, ["д"]=0.7, ["5"]=0.6, ["6"]=0.45, ["7"]=0.3 },
[2017] = { ["ч"]=1.5, ["ф"]=1.35, ["б"]=1.2, ["д"]=1.05, ["5"]=0.9, ["6"]=0.6, ["7"]=0.45 },
[2021] = { ["ч"]=2, ["ф"]=1.8, ["б"]=1.6, ["д"]=1.4, ["5"]=1.2 },
[2025] = { ["ч"]=3, ["ф"]=2.7, ["б"]=2.4, ["д"]=2.1, ["5"]=1.8, ["6"]=1.2, ["7"]=0.9 },
[2029] = { ["ч"]=4, ["ф"]=3.6, ["б"]=3.2, ["д"]=2.8, ["5"]=2.4, ["6"]=1.8, ["7"]=1.2 },
[2033] = { ["ч"]=6, ["ф"]=5.4, ["б"]=4.8, ["д"]=4.2, ["5"]=3.6, ["6"]=2.4, ["7"]=1.8 },
[2037] = { ["ч"]=8, ["ф"]=7.2, ["б"]=6.4, ["д"]=5.6, ["5"]=4.8, ["6"]=3.6, ["7"]=2.4 },
},
["КФе"] = {
[2015] = { ["ч"]=1.5, ["ф"]=1.35, ["б"]=1.2 },
[2019] = { ["ч"]=2, ["ф"]=1.8, ["б"]=1.6, ["д"]=1.4 },
[2023] = { ["ч"]=3, ["ф"]=2.7, ["б"]=2.4, ["д"]=2.1 },
[2027] = { ["ч"]=4, ["ф"]=3.6, ["б"]=3.2, ["д"]=2.8 },
[2031] = { ["ч"]=6, ["ф"]=5.4, ["б"]=4.8, ["д"]=4.2 },
[2035] = { ["ч"]=8, ["ф"]=7.2, ["б"]=6.4, ["д"]=5.6 },
[2041] = { ["ч"]=12, ["ф"]=10.8, ["б"]=9.6, ["д"]=8.4, ["чф"]=7.2 },
[2045] = { ["ч"]=16, ["ф"]=14.4, ["б"]=12.8, ["д"]=11.2, ["чф"]=9.6 },
[2049] = { ["ч"]=24, ["ф"]=21.6, ["б"]=19.2, ["д"]=16.8, ["чф"]=14.4 },
[2053] = { ["ч"]=32, ["ф"]=28.8, ["б"]=25.6, ["д"]=22.4, ["чф"]=19.2 },
},
["ЛНа"] = {
[2039] = { ["ч"]=24, ["ф"]=21.6, ["б"]=19.2, ["д"]=16.8, ["фA"]=14.4, ["пA"]=9.6, ["2гA"]=6.4, ["3гA"]=3.2, ["4гA"]=1.6, ["побB"]=2.4, ["фB"]=2.4, ["пB"]=2.4, ["чфB"]=2.4, ["1гB"]=2.4, ["2гB"]=1.6, ["3гB"]=0.8, ["4гB"]=0.4, ["побC"]=0.6, ["фC"]=0.6, ["пC"]=0.6, ["чфC"]=0.6, ["1гC"]=0.6, ["2гC"]=0.4, ["3гC"]=0.2, ["4гC"]=0.1, ["побD"]=0.15, ["фD"]=0.15, ["пD"]=0.15, ["чфD"]=0.15, ["1гD"]=0.1, ["2гD"]=0.1, ["3гD"]=0.05 },
[2043] = { ["ч"]=32, ["ф"]=28.8, ["б"]=25.6, ["д"]=22.4, ["фA"]=19.2, ["пA"]=12.8, ["2гA"]=9.6, ["3гA"]=4.8, ["4гA"]=2.4, ["побB"]=3.6, ["фB"]=3.6, ["пB"]=3.6, ["чфB"]=3.6, ["1гB"]=3.6, ["2гB"]=2.4, ["3гB"]=1.2, ["4гB"]=0.6, ["побC"]=0.9, ["фC"]=0.9, ["пC"]=0.9, ["чфC"]=0.9, ["1гC"]=0.9, ["2гC"]=0.6, ["3гC"]=0.3, ["4гC"]=0.15, ["побD"]=0.22, ["фD"]=0.22, ["пD"]=0.22, ["чфD"]=0.22, ["1гD"]=0.22, ["2гD"]=0.15, ["3гD"]=0.07 },
[2047] = { ["пол"] = 33.6, ["ч"]=48, ["ф"]=43.2, ["б"]=38.4, ["д"]=33.6, ["фA"]=28.8, ["пA"]=19.2, ["2гA"]=12.8, ["3гA"]=6.4, ["4гA"]=3.2, ["побB"]=4.8, ["фB"]=4.8, ["пB"]=4.8, ["чфB"]=4.8, ["1гB"]=4.8, ["2гB"]=3.2, ["3гB"]=1.6, ["4гB"]=0.8, ["побC"]=1.2, ["фC"]=1.2, ["пC"]=1.2, ["чфC"]=1.2, ["1гC"]=1.2, ["2гC"]=0.8, ["3гC"]=0.4, ["4гC"]=0.2, ["побD"]=0.3, ["фD"]=0.3, ["пD"]=0.3, ["чфD"]=0.3, ["1гD"]=0.3, ["2гD"]=0.2, ["3гD"]=0.1 },
[2051] = { ["ч"]=64, ["ф"]=57.6, ["б"]=51.2, ["д"]=44.8, ["фA"]=38.4, ["пA"]=28.8, ["2гA"]=19.2, ["3гA"]=9.6, ["4гA"]=4.8, ["побB"]=6.4, ["фB"]=6.4, ["пB"]=6.4, ["чфB"]=6.4, ["1гB"]=6.4, ["2гB"]=4.8, ["3гB"]=2.4, ["4гB"]=1.2, ["побC"]=1.8, ["фC"]=1.8, ["пC"]=1.8, ["чфC"]=1.8, ["1гC"]=1.8, ["2гC"]=1.2, ["3гC"]=0.6, ["4гC"]=0.3, ["побD"]=0.45, ["фD"]=0.45, ["пD"]=0.45, ["чфD"]=0.45, ["1гD"]=0.45, ["2гD"]=0.3, ["3гD"]=0.15 },
},
["ЧЧМ"] = {
[2040] = { ["ч"]=2.4, ["фпмв"]=2.16, ["фпмп"]=2.16, ["бпмв"]=1.92, ["бпмп"]=1.92, ["дпмв"]=1.68, ["дпмп"]=1.68, ["чфпмв"]=1.44, ["чфпмп"]=1.44, ["пмв"]=0.96, ["пмп"]=0.72, ["5г"]=0.36, ["6г"]=0.18,
["осф-1г"]=0.09, ["осп-1г"]=0.06, ["осчф-1г"]=0.04, ["осф-2г"]=0.09, ["осп-2г"]=0.06, ["осчф-2г"]=0.04, ["осф-3г"]=0.09, ["осп-3г"]=0.06, ["осчф-3г"]=0.04, ["осф-4г"]=0.09, ["осп-4г"]=0.06, ["осчф-4г"]=0.04, ["осф-5г"]=0.09, ["осп-5г"]=0.06, ["осчф-5г"]=0.04, ["о-2г-1"]=0.03, ["о-3г-1"]=0.03, ["о-4г-1"]=0.03, ["о-5г-1"]=0.03, ["о-2г-2"]=0.02, ["о-3г-2"]=0.02, ["о-4г-2"]=0.02, ["о-5г-2"]=0.02, ["о-2г"]=0.01, ["о-3г"]=0.01, ["о-4г"]=0.01, ["о-5г"]=0.01, ["о-6г"]=0.01, ["о-7г"]=0.01, ["о-2г-no"]=0, ["о-3г-no"]=0, ["о-4г-no"]=0, ["о-5г-no"]=0, ["о-6г-no"]=0, ["о-7г-no"]=0, ["о-8г-no"]=0 },
[2044] = { ["ч"]=3.2, ["ф"]=2.88, ["б"]=2.56, ["д"]=2.24, ["чф"]=1.92, ["смв"]=1.28, ["смп"]=0.96, ["5г"]=0.48, ["6г"]=0.24, ["ос-2г"]=0.12, ["о2-2г"]=0.12, ["о2-3г"]=0.09, ["о2-4г"]=0.06, ["о1-2г"]=0.04, ["о1-3г"]=0.03 },
[2048] = { ["ч"]=4.8, ["ф"]=4.32, ["б"]=3.84, ["д"]=3.36, ["чф"]=2.88, ["смв"]=1.92, ["смп"]=1.44, ["5г"]=0.72, ["6г"]=0.36, ["о2-2г"]=0.18, ["о2-3г"]=0.12, ["о2-4г"]=0.09, ["о1-2г"]=0.06, ["о1-3г"]=0.04 },
[2052] = { ["ч"]=6.4, ["ф"]=5.76, ["б"]=5.12, ["д"]=4.48, ["чф"]=3.84, ["смв"]=2.56, ["смп"]=1.92, ["5г"]=0.96, ["6г"]=0.48, ["о2-2г"]=0.24, ["о2-3г"]=0.18, ["о2-4г"]=0.12, ["о1-2г"]=0.09, ["о1-3г"]=0.06 },
},
}
local new_africa_exceptions = {
[2022] = { ["ос-3г"] = 2, ["о2-3г"] = 2, ["ос-4г"] = 1.5, ["о2-4г"] = 1.5, ["ос-5г"] = 1, ["о2-5г"] = 1 },
[2026] = { ["ос-3г"] = 3, ["о2-3г"] = 3, ["ос-4г"] = 2.25, ["о2-4г"] = 2.25, ["ос-5г"] = 1.5, ["о2-5г"] = 1.5 }
}
-- =========================================================
-- ТОЧКА ВХОДА
-- =========================================================
function p.main(frame)
local args = frame.args
-- Подхватываем параметры как из самого #invoke, так и от родительского шаблона
if not args[1] then args = frame:getParent().args end
local prefix = mw.text.trim(args[1] or "")
local year = tonumber(args[2])
local sys_type = mw.text.trim(args[3] or "new")
local show_rank = args[4] and mw.text.trim(args[4]) ~= ""
if prefix == "" or not year then
return "Ошибка: необходимо передать префикс турнира и год."
end
local db_name = 'Модуль:Data/Tournaments/' .. year
local success, full_db = pcall(require, db_name)
if not success then
return "Ошибка: не удалось загрузить БД за " .. year .. " год (" .. db_name .. ")."
end
-- Прогоняем данные этого года через RatingBuilder, чтобы он распределил все ранги
local all_results = Builder.build_year(year, full_db)
-- Достаём результаты конкретного турнира
local tourney_results = all_results[prefix]
if not tourney_results then
return "Турнир " .. prefix .. " в " .. year .. " году не найден."
end
-- Настраиваемся на указанную систему очков
local sys_dict = (sys_type == "old") and old_system or new_system
local exc_dict = (sys_type == "old") and old_africa_exceptions or new_africa_exceptions
local final_teams = {}
-- Проходим по каждой команде, игравшей в турнире (как в отборе, так и в финале)
for team, rank in pairs(tourney_results) do
local pts = 0
local t_dict = is_regional[prefix] and sys_dict["Reg"] or sys_dict[prefix]
if t_dict and t_dict[year] then
pts = t_dict[year][rank]
-- Обработка "-no" (неполучение очков) и отсутствия значения в словаре
if not pts and string.match(rank, "%-no$") then
pts = 0
end
if not pts then
pts = 0
end
end
-- Применение исключений для Африки
local team_info = TeamsDB.getTeam(team)
local is_africa = team_info and team_info.conf == "Африка"
if prefix == "ЧТМ" and is_africa and exc_dict[year] and exc_dict[year][rank] then
pts = exc_dict[year][rank]
end
-- Коррекция Евразии для новых региональных кубков
if prefix == "КЕв" and (year == 2048 or year == 2052) and sys_type ~= "old" then
if rank == "в" then pts = (year == 2048) and 14.4 or 19.2 end
end
table.insert(final_teams, {code = team, points = pts, rank = rank})
end
-- Сортировка: сначала по очкам (по убыванию), при равенстве - по коду (по алфавиту)
table.sort(final_teams, function(a, b)
if a.points ~= b.points then
return a.points > b.points
end
return a.code < b.code
end)
-- Формируем итоговый список
local out = {"<pre>"}
for _, t in ipairs(final_teams) do
if show_rank then
table.insert(out, string.format("%s %s %s", t.code, tostring(t.points), t.rank))
else
table.insert(out, string.format("%s %s", t.code, tostring(t.points)))
end
end
table.insert(out, "</pre>")
return table.concat(out, "\n")
end
return p