Модуль:Config: различия между версиями

Нет описания правки
Нет описания правки
 
(не показано 9 промежуточных версий 2 участников)
Строка 170: Строка 170:


     ["own_goals"]          = { start = 2006, anti_prize = true, get_val = function(stats) return stats.own_goals end },
     ["own_goals"]          = { start = 2006, anti_prize = true, get_val = function(stats) return stats.own_goals end },
     ["head_goals"]         = { start = 2022, get_val = function(stats) return stats.goals.head end },
     ["head_goals"] = { -- не записывались в конкретных матчах на ЧТМ-2022 и ЧТМ-2026,
     ["heel_goals"]         = { start = 2026, get_val = function(stats) return stats.goals.heel end },
    -- а просто подсчитывались суммарно
        start = 2022,
        get_val = function(stats) return stats.goals.head end,
        adjustments = {
            players = {
                ["Диман"] = { [2022] = 3, [2026] = 4 },
                ["Антон"] = { [2026] = 1 },
                ["Макс"] = { [2026] = 1 },
            }
        }
    },
     ["heel_goals"] = { -- не записывались в конкретных матчах на ЧТМ-2026,
    -- а просто подсчитывались суммарно
        start = 2026,
        get_val = function(stats) return stats.goals.heel end,
        adjustments = {
            players = {
                ["Геныч"] = { [2026] = 2 },
                ["Макс"] = { [2026] = 1 },
                ["Серёга"] = { [2026] = 1 },
            }
        }
    },
     ["free_kick_goals"]    = { start = 2026, get_val = function(stats) return stats.goals.free_kick end },
     ["free_kick_goals"]    = { start = 2026, get_val = function(stats) return stats.goals.free_kick end },
     ["goalie_goals"]      = { start = 2022, get_val = function(stats) return stats.goals.goalie end },
     ["goalie_goals"]      = { start = 2022, get_val = function(stats) return stats.goals.goalie end },
Строка 182: Строка 204:
     },
     },
     ["assist_mega_tricks"] = { start = 2026, get_val = function(stats) return stats.assists.hat_trick + stats.assists.poker + stats.assists.penta end },
     ["assist_mega_tricks"] = { start = 2026, get_val = function(stats) return stats.assists.hat_trick + stats.assists.poker + stats.assists.penta end },
     ["clearances"]         = { start = 2022, get_val = function(stats) return stats.clearances end },
     ["clearances"] = { -- не записывались в конкретных матчах на ЧТМ-2022 и ЧТМ-2026
    -- а просто подсчитывались суммарно
        start = 2022,
        get_val = function(stats) return stats.clearances end,
        adjustments = {
            players = {
                ["Диман"] = { [2022] = 4, [2026] = 11 },
                ["Макс"] = { [2026] = 5 },
                ["Геныч"] = { [2026] = 2 },
                ["Антон"] = { [2026] = 1 },
                ["Ринат"] = { [2026] = 1 },
                ["Диман Е."] = { [2026] = 1 },
                ["Эльнур"] = { [2026] = 1 },
            }
        }
    },
     ["yellow_cards"]      = { start = 2038, anti_prize = true, get_val = function(stats) return stats.cards.yellow end },
     ["yellow_cards"]      = { start = 2038, anti_prize = true, get_val = function(stats) return stats.cards.yellow end },
     ["red_cards"]          = { start = 2038, anti_prize = true, get_val = function(stats) return stats.cards.red end },
     ["red_cards"]          = { start = 2038, anti_prize = true, get_val = function(stats) return stats.cards.red end },
Строка 193: Строка 230:
     ["pens_saved"]        = { start = 2006, get_val = function(stats) return stats.penalties.saved_as_goalie end },
     ["pens_saved"]        = { start = 2006, get_val = function(stats) return stats.penalties.saved_as_goalie end },
     ["caused_pens"]        = { start = 2026, anti_prize = true, get_val = function(stats) return stats.penalties.caused_pens end },
     ["caused_pens"]        = { start = 2026, anti_prize = true, get_val = function(stats) return stats.penalties.caused_pens end },
   
     ["clean_sheets"] = { -- статистика до ЧТМ-2022 не велась, 8 матчей из 14 восстановлены по косвенным точечным признакам
     ["clean_sheets"]       = { start = 2006, get_val = function(stats) return stats.clean_sheets end },
        start = 2006,
     ["matches"]            = { start = 2022, no_medals = true, get_val = function(stats) return stats.matches_total or 0 end },
        get_val = function(stats) return stats.clean_sheets end,
     ["field_matches"]      = { start = 2022, no_medals = true, get_val = function(stats) return stats.matches_field or 0 end },
        adjustments = {
            totals = {
                ["total"] = 6 -- Это надо только к колонке "Всего" добавлять, потому что невозможно установить не только игроков, но даже турниры
            },
            players = {
                ["Диман"] = { [2006] = 2, [2010] = 1, [2014] = 1 },
                ["Макс"] = { [2006] = 1 },
                ["Крюча"] = { [2006] = 1 },
                ["Герыч"] = { [2010] = 1 },
                ["Диман Е."] = { [2014] = 1 },
            }
        }
    },
     ["matches"]            = { start = 2022, get_val = function(stats) return stats.matches_total or 0 end },
     ["field_matches"]      = { start = 2022, get_val = function(stats) return stats.matches_field or 0 end },
     ["plus_minus"]        = { start = 2022, anti_prize = true, get_val = function(stats) return stats.plus_minus end,
     ["plus_minus"]        = { start = 2022, anti_prize = true, get_val = function(stats) return stats.plus_minus end,
         adjustments = {
         adjustments = {
Строка 573: Строка 624:
Не используй хреновины, которые появились только в Lua 5.2 и далее,
Не используй хреновины, которые появились только в Lua 5.2 и далее,
в частности оператор goto и метки (::continue::)
в частности оператор goto и метки (::continue::)
4
Пожалуйста, ВСЕГДА обращай внимание на то, что общее число голов/передач и призы лучшему бомбардиру (Золотой Башмак)
и лучшему ассистенту — это РАЗНЫЕ сущности. Общее число голов/передач тупо считается по общей сумме. А призы
бомбардирам и ассистентам раздаются по количеству голов/передач за одну конкретную команду со сложным
собственным тайбрейкером в случае равенства.
5
При загрузке из Модуль:Data/GrandStats.json
Вот что написал Gemini Pro:
"Ах, чёрт возьми! Прости, это классическая и очень коварная ловушка парсера MediaWiki, о которой я на секунду забыл,
когда наводил красоту в коде. Дело в том, что когда mw.text.jsonDecode разворачивает JSON, движок PHP
(на котором работает Вики) видит ключи вроде "2006". PHP автоматически и принудительно превращает любые ключи,
состоящие только из цифр, в числовые индексы (integers). В итоге, когда таблица возвращается в Lua,
ключом становится число 2006, а не строка "2006". В своей первой успешной версии я использовал двойную проверку
tab[year] or tab[tostring(year)], и это спасло ситуацию. Но в версии с медалями я решил «сделать код чище»,
принудительно переведя всё в строки (y_str = tostring(year)), и стал искать только по строкам.
Разумеется, Lua строк не нашёл, вернул nil, и все ячейки оказались пустыми."
--]]
--]]