Moduł:H2H
Wygląd
Dokumentacja dla tego modułu może zostać utworzona pod nazwą Moduł:H2H/opis
local p = {}
-- =========================================================
-- MODUŁ:H2H
--
-- Historia bezpośrednich spotkań dwóch drużyn.
--
-- team1 = drużyna analizowana
-- team2 = przeciwnik
--
-- Wykorzystuje nazwa_statystyki1 / nazwa_statystyki2,
-- dzięki czemu zmiana nazwy sponsorskiej nie rozbija H2H.
--
-- Zawiera:
-- 1. Bilans ogółem / dom / wyjazd
-- 2. Trenerów team1 w rywalizacji
-- 3. Najlepszych strzelców obu drużyn
-- 4. Rekordy indywidualne team1
-- 5. Serie zwycięstw / porażek
-- 6. Analizę kwart
-- 7. Wszystkie mecze
-- 8. Dogrywkę 1, 2 i 3
-- =========================================================
function p.main(frame)
local team1 = mw.text.trim(frame.args.team1 or "")
local team2 = mw.text.trim(frame.args.team2 or "")
if team1 == "" then
return "'''Błąd:''' nie podano team1."
end
if team2 == "" then
return "'''Błąd:''' nie podano team2."
end
-- =====================================================
-- BEZPIECZEŃSTWO SQL
-- =====================================================
local function sql(value)
return mw.ustring.gsub(value, "'", "''")
end
local team1SQL = sql(team1)
local team2SQL = sql(team2)
-- =====================================================
-- FUNKCJE POMOCNICZE
-- =====================================================
local function liczba(value)
if value == nil or value == "" then
return 0
end
return tonumber(
mw.ustring.gsub(
tostring(value),
"%s+",
""
)
) or 0
end
local function procent(wygrane, mecze)
if mecze == 0 then
return "0,0%"
end
return string.format(
"%.1f%%",
(wygrane / mecze) * 100
):gsub("%.", ",")
end
local function wynikDruzyny(row)
local g1 = liczba(row.gole1)
local g2 = liczba(row.gole2)
if row.ns1 == team1 then
return g1, g2
elseif row.ns2 == team1 then
return g2, g1
end
return nil, nil
end
local function miejsce(row)
if row.ns1 == team1 then
return "dom"
end
if row.ns2 == team1 then
return "wyjazd"
end
return nil
end
local function nazwaMeczu(row)
local d1 = row.druzyna1 or ""
local d2 = row.druzyna2 or ""
local strona = row.strona_meczu or ""
local tekst =
d1 .. " – " .. d2
if strona ~= "" then
return "[[" ..
strona ..
"|" ..
tekst ..
"]]"
end
return tekst
end
local function parseWynikCzesciowy(value)
if not value or value == "" then
return nil, nil
end
local a, b =
tostring(value):match(
"(%d+)%s*:%s*(%d+)"
)
if not a or not b then
return nil, nil
end
return tonumber(a), tonumber(b)
end
-- =====================================================
-- POBRANIE MECZÓW
-- =====================================================
local fieldsMecze = table.concat({
"Mecze.id=mecz",
"Mecze.data=data",
"Mecze.sezon=sezon",
"Mecze.druzyna1=druzyna1",
"Mecze.druzyna2=druzyna2",
"Mecze.nazwa_statystyki1=ns1",
"Mecze.nazwa_statystyki2=ns2",
"Mecze.gole1=gole1",
"Mecze.gole2=gole2",
"Mecze.wynik=wynik",
"Mecze.wynik_do_przerwy=wynik_do_przerwy",
"Mecze.kwarta1=kwarta1",
"Mecze.kwarta2=kwarta2",
"Mecze.kwarta3=kwarta3",
"Mecze.kwarta4=kwarta4",
"Mecze.dogrywka1=dogrywka1",
"Mecze.dogrywka2=dogrywka2",
"Mecze.dogrywka3=dogrywka3",
"Mecze.hala=hala",
"Mecze.widzowie=widzowie",
"Mecze.sedziowie=sedziowie",
"Mecze.strona_meczu=strona_meczu"
}, ",")
local mecze =
mw.ext.cargo.query(
"Mecze",
fieldsMecze,
{
where =
"(" ..
"Mecze.nazwa_statystyki1='" ..
team1SQL ..
"' AND " ..
"Mecze.nazwa_statystyki2='" ..
team2SQL ..
"')" ..
" OR (" ..
"Mecze.nazwa_statystyki1='" ..
team2SQL ..
"' AND " ..
"Mecze.nazwa_statystyki2='" ..
team1SQL ..
"')",
orderBy =
"Mecze.data ASC",
limit = 5000
}
)
if not mecze or #mecze == 0 then
return
"'''Brak meczów pomiędzy ''" ..
team1 ..
"'' a ''" ..
team2 ..
"''.'''"
end
-- =====================================================
-- BILANS
-- =====================================================
local bilans = {
wszystkie = {
mecze = 0,
wygrane = 0,
przegrane = 0,
punktyZdobyte = 0,
punktyStracone = 0
},
dom = {
mecze = 0,
wygrane = 0,
przegrane = 0,
punktyZdobyte = 0,
punktyStracone = 0
},
wyjazd = {
mecze = 0,
wygrane = 0,
przegrane = 0,
punktyZdobyte = 0,
punktyStracone = 0
}
}
-- =====================================================
-- SERIE
-- =====================================================
local serie = {
wszystkie = {
W = 0,
P = 0
},
dom = {
W = 0,
P = 0
},
wyjazd = {
W = 0,
P = 0
}
}
local aktualnaSeria = {
wszystkie = {
W = 0,
P = 0
},
dom = {
W = 0,
P = 0
},
wyjazd = {
W = 0,
P = 0
}
}
-- =====================================================
-- REKORDY MECZOWE
-- =====================================================
local rekordyMeczowe = {
zwyciestwo = {
dom = {},
wyjazd = {}
},
porazka = {
dom = {},
wyjazd = {}
}
}
local function dodajRekordMeczowy(
lista,
roznica,
item,
typ
)
if #lista == 0 then
item.wartosc = roznica
table.insert(
lista,
item
)
return
end
local obecna =
lista[1].wartosc
if roznica > obecna then
item.wartosc = roznica
lista[1] = item
elseif roznica == obecna then
item.wartosc = roznica
table.insert(
lista,
item
)
end
end
-- =====================================================
-- PRZETWARZANIE MECZÓW
-- =====================================================
for _, row in ipairs(mecze) do
local zdobyte, stracone =
wynikDruzyny(row)
local miejsceMeczu =
miejsce(row)
if zdobyte and stracone and miejsceMeczu then
local wynikMeczu
if zdobyte > stracone then
wynikMeczu = "W"
elseif zdobyte < stracone then
wynikMeczu = "P"
else
wynikMeczu = "R"
end
-- =============================================
-- BILANS OGÓŁEM
-- =============================================
bilans.wszystkie.mecze =
bilans.wszystkie.mecze + 1
bilans.wszystkie.punktyZdobyte =
bilans.wszystkie.punktyZdobyte +
zdobyte
bilans.wszystkie.punktyStracone =
bilans.wszystkie.punktyStracone +
stracone
if wynikMeczu == "W" then
bilans.wszystkie.wygrane =
bilans.wszystkie.wygrane + 1
elseif wynikMeczu == "P" then
bilans.wszystkie.przegrane =
bilans.wszystkie.przegrane + 1
end
-- =============================================
-- BILANS DOM / WYJAZD
-- =============================================
local b =
bilans[miejsceMeczu]
b.mecze =
b.mecze + 1
b.punktyZdobyte =
b.punktyZdobyte +
zdobyte
b.punktyStracone =
b.punktyStracone +
stracone
if wynikMeczu == "W" then
b.wygrane =
b.wygrane + 1
elseif wynikMeczu == "P" then
b.przegrane =
b.przegrane + 1
end
-- =============================================
-- REKORDY MECZOWE
-- =============================================
local item = {
tekst =
nazwaMeczu(row),
wynik =
tostring(
liczba(row.gole1)
) ..
":" ..
tostring(
liczba(row.gole2)
),
data =
row.data or "",
miejsce =
miejsceMeczu
}
local roznica =
zdobyte - stracone
if roznica > 0 then
dodajRekordMeczowy(
rekordyMeczowe.zwyciestwo[miejsceMeczu],
roznica,
item
)
elseif roznica < 0 then
local porazka =
math.abs(roznica)
dodajRekordMeczowy(
rekordyMeczowe.porazka[miejsceMeczu],
porazka,
item
)
end
-- =============================================
-- SERIA OGÓŁEM
-- =============================================
if wynikMeczu == "W" then
aktualnaSeria.wszystkie.W =
aktualnaSeria.wszystkie.W + 1
aktualnaSeria.wszystkie.P = 0
if aktualnaSeria.wszystkie.W >
serie.wszystkie.W then
serie.wszystkie.W =
aktualnaSeria.wszystkie.W
end
elseif wynikMeczu == "P" then
aktualnaSeria.wszystkie.P =
aktualnaSeria.wszystkie.P + 1
aktualnaSeria.wszystkie.W = 0
if aktualnaSeria.wszystkie.P >
serie.wszystkie.P then
serie.wszystkie.P =
aktualnaSeria.wszystkie.P
end
end
-- =============================================
-- SERIA DOM / WYJAZD
-- =============================================
local s =
aktualnaSeria[miejsceMeczu]
local sr =
serie[miejsceMeczu]
if wynikMeczu == "W" then
s.W =
s.W + 1
s.P = 0
if s.W > sr.W then
sr.W = s.W
end
elseif wynikMeczu == "P" then
s.P =
s.P + 1
s.W = 0
if s.P > sr.P then
sr.P = s.P
end
end
end
end
-- =====================================================
-- REKORDY INDYWIDUALNE
-- TYLKO TEAM1
-- =====================================================
local rekordy = {
punkty = {
dom = {},
wyjazd = {}
},
minuty = {
dom = {},
wyjazd = {}
},
asysty = {
dom = {},
wyjazd = {}
},
zbiorki = {
dom = {},
wyjazd = {}
},
eval = {
dom = {},
wyjazd = {}
},
plusminus = {
dom = {},
wyjazd = {}
}
}
local fieldsZawodnicy = table.concat({
"U.zawodnik=zawodnik",
"U.druzyna=druzyna_zawodnika",
"U.gol=gol",
"U.minuty=minuty",
"U.minuty_format=minuty_format",
"U.asysta=asysta",
"U.zbiorka=zbiorka",
"U.eval=eval",
"U.plusminus=plusminus",
"M.id=mecz",
"M.data=data",
"M.druzyna1=druzyna1",
"M.druzyna2=druzyna2",
"M.nazwa_statystyki1=ns1",
"M.nazwa_statystyki2=ns2",
"M.gole1=gole1",
"M.gole2=gole2",
"M.wynik=wynik",
"M.strona_meczu=strona_meczu"
}, ",")
local zawodnicy =
mw.ext.cargo.query(
"UdzialZawodnika=U,Mecze=M",
fieldsZawodnicy,
{
join =
"U.mecz=M.id",
where =
"(" ..
"(M.nazwa_statystyki1='" ..
team1SQL ..
"' AND " ..
"M.nazwa_statystyki2='" ..
team2SQL ..
"')" ..
" OR " ..
"(M.nazwa_statystyki1='" ..
team2SQL ..
"' AND " ..
"M.nazwa_statystyki2='" ..
team1SQL ..
"')" ..
")" ..
" AND U.druzyna='" ..
team1SQL ..
"'" ..
" AND U.minuty > 0",
orderBy =
"M.data ASC",
limit = 10000
}
)
-- =====================================================
-- DODAWANIE REKORDU ZAWODNIKA
-- =====================================================
local function dodajRekordZawodnika(
tabela,
miejsceMeczu,
wartosc,
item
)
local lista =
tabela[miejsceMeczu]
if #lista == 0 then
item.wartosc =
wartosc
table.insert(
lista,
item
)
return
end
local obecna =
lista[1].wartosc
if wartosc > obecna then
item.wartosc =
wartosc
tabela[miejsceMeczu] = {
item
}
elseif wartosc == obecna then
item.wartosc =
wartosc
table.insert(
lista,
item
)
end
end
if zawodnicy then
for _, row in ipairs(zawodnicy) do
local miejsceMeczu =
miejsce(row)
if miejsceMeczu then
local item = {
zawodnik =
row.zawodnik or "",
mecz =
row.mecz or "",
data =
row.data or "",
tekst =
nazwaMeczu(row),
wynik =
row.wynik or "",
punkty =
liczba(row.gol),
minuty =
liczba(row.minuty),
minuty_format =
row.minuty_format or "",
asysty =
liczba(row.asysta),
zbiorki =
liczba(row.zbiorka),
eval =
liczba(row.eval),
plusminus =
liczba(row.plusminus)
}
dodajRekordZawodnika(
rekordy.punkty,
miejsceMeczu,
item.punkty,
item
)
dodajRekordZawodnika(
rekordy.minuty,
miejsceMeczu,
item.minuty,
item
)
dodajRekordZawodnika(
rekordy.asysty,
miejsceMeczu,
item.asysty,
item
)
dodajRekordZawodnika(
rekordy.zbiorki,
miejsceMeczu,
item.zbiorki,
item
)
dodajRekordZawodnika(
rekordy.eval,
miejsceMeczu,
item.eval,
item
)
dodajRekordZawodnika(
rekordy.plusminus,
miejsceMeczu,
item.plusminus,
item
)
end
end
end
-- =====================================================
-- NAJLEPSI STRZELCY RYWALIZACJI
-- OBU DRUŻYN
-- =====================================================
local strzelcy = {
[team1] = {},
[team2] = {}
}
if zawodnicy then
for _, row in ipairs(zawodnicy) do
local druzyna =
row.druzyna_zawodnika or ""
-- zawodnicy team1 już są pobrani powyżej
if druzyna == team1 then
strzelcy[team1][
row.zawodnik
] =
(
strzelcy[team1][
row.zawodnik
] or 0
)
+
liczba(row.gol)
end
end
end
-- Drugi zespół osobnym zapytaniem
local zawodnicy2 =
mw.ext.cargo.query(
"UdzialZawodnika=U,Mecze=M",
"U.zawodnik=zawodnik,U.druzyna=druzyna,U.gol=gol",
{
join =
"U.mecz=M.id",
where =
"(" ..
"(M.nazwa_statystyki1='" ..
team1SQL ..
"' AND M.nazwa_statystyki2='" ..
team2SQL ..
"')" ..
" OR " ..
"(M.nazwa_statystyki1='" ..
team2SQL ..
"' AND M.nazwa_statystyki2='" ..
team1SQL ..
"')" ..
")" ..
" AND U.minuty > 0",
limit = 10000
}
)
if zawodnicy2 then
for _, row in ipairs(zawodnicy2) do
local druzyna =
row.druzyna or ""
if druzyna == team2 then
strzelcy[team2][
row.zawodnik
] =
(
strzelcy[team2][
row.zawodnik
] or 0
)
+
liczba(row.gol)
end
end
end
local function uporzadkujStrzelcow(tablica)
local wynik = {}
for zawodnik, punkty
in pairs(tablica) do
table.insert(
wynik,
{
zawodnik = zawodnik,
punkty = punkty
}
)
end
table.sort(
wynik,
function(a, b)
if a.punkty == b.punkty then
return a.zawodnik < b.zawodnik
end
return a.punkty > b.punkty
end
)
return wynik
end
local strzelcy1 =
uporzadkujStrzelcow(
strzelcy[team1]
)
local strzelcy2 =
uporzadkujStrzelcow(
strzelcy[team2]
)
-- =====================================================
-- TRENERZY TEAM1
-- =====================================================
local trenerzy = {}
local sztab =
mw.ext.cargo.query(
"SztabMeczu=S,Mecze=M",
"S.osoba=osoba,S.druzyna=druzyna,S.rola=rola,M.id=mecz",
{
join =
"S.mecz=M.id",
where =
"S.rola='Trener'" ..
" AND S.druzyna='" ..
team1SQL ..
"'" ..
" AND (" ..
"(M.nazwa_statystyki1='" ..
team1SQL ..
"' AND M.nazwa_statystyki2='" ..
team2SQL ..
"')" ..
" OR " ..
"(M.nazwa_statystyki1='" ..
team2SQL ..
"' AND M.nazwa_statystyki2='" ..
team1SQL ..
"')" ..
")",
limit = 5000
}
)
if sztab then
for _, row in ipairs(sztab) do
local trener =
row.osoba or ""
if trener ~= "" then
trenerzy[trener] =
trenerzy[trener] or {
mecze = 0,
wygrane = 0,
przegrane = 0,
punktyZdobyte = 0,
punktyStracone = 0
}
end
end
end
-- Policz statystyki trenerów na podstawie meczów.
-- Każdy mecz jest przypisywany trenerowi,
-- który prowadził team1 w tym meczu.
for _, row in ipairs(mecze) do
local trenerWmeczu = nil
local sztabMeczu =
mw.ext.cargo.query(
"SztabMeczu",
"osoba,rola,druzyna",
{
where =
"SztabMeczu.mecz='" ..
sql(row.mecz or "") ..
"'" ..
" AND SztabMeczu.rola='Trener'" ..
" AND SztabMeczu.druzyna='" ..
team1SQL ..
"'",
limit = 10
}
)
if sztabMeczu and
#sztabMeczu > 0 then
trenerWmeczu =
sztabMeczu[1].osoba
end
if trenerWmeczu and
trenerWmeczu ~= "" then
trenerzy[trenerWmeczu] =
trenerzy[trenerWmeczu] or {
mecze = 0,
wygrane = 0,
przegrane = 0,
punktyZdobyte = 0,
punktyStracone = 0
}
local zdobyte, stracone =
wynikDruzyny(row)
if zdobyte and stracone then
local t =
trenerzy[trenerWmeczu]
t.mecze =
t.mecze + 1
t.punktyZdobyte =
t.punktyZdobyte +
zdobyte
t.punktyStracone =
t.punktyStracone +
stracone
if zdobyte > stracone then
t.wygrane =
t.wygrane + 1
elseif zdobyte < stracone then
t.przegrane =
t.przegrane + 1
end
end
end
end
local listaTrenerow = {}
for trener, dane
in pairs(trenerzy) do
table.insert(
listaTrenerow,
{
trener = trener,
dane = dane
}
)
end
table.sort(
listaTrenerow,
function(a, b)
if a.dane.mecze ==
b.dane.mecze then
return a.trener <
b.trener
end
return a.dane.mecze >
b.dane.mecze
end
)
-- =====================================================
-- ANALIZA KWART
--
-- Dla każdego kwartału:
-- W = Enea wygrała kwartę i wygrała mecz
-- P = Enea wygrała kwartę i przegrała mecz
-- R = kwarta remisowa
--
-- Dodatkowo analogicznie:
-- przegrała kwartę -> wygrała / przegrała mecz
-- =====================================================
local kwarty = {
{
nazwa = "1. kwarta",
pole = "kwart1"
},
{
nazwa = "2. kwarta",
pole = "kwart2"
},
{
nazwa = "3. kwarta",
pole = "kwart3"
},
{
nazwa = "4. kwarta",
pole = "kwart4"
}
}
local analizaKwart = {}
for i = 1, 4 do
analizaKwart[i] = {
wygranaKwartaWygranyMecz = 0,
wygranaKwartaPrzegranyMecz = 0,
przegranaKwartaWygranyMecz = 0,
przegranaKwartaPrzegranyMecz = 0,
remisKwartaWygranyMecz = 0,
remisKwartaPrzegranyMecz = 0
}
end
for _, row in ipairs(mecze) do
local zdobyte, stracone =
wynikDruzyny(row)
if zdobyte and stracone then
local wynikMeczu
if zdobyte > stracone then
wynikMeczu = "W"
elseif zdobyte < stracone then
wynikMeczu = "P"
else
wynikMeczu = "R"
end
for i = 1, 4 do
local pole =
kwarty[i].pole
local a, b =
parseWynikCzesciowy(
row[pole]
)
if a and b then
local teamScore
local oppScore
if miejsce(row) ==
"dom" then
teamScore = a
oppScore = b
else
teamScore = b
oppScore = a
end
if teamScore > oppScore then
if wynikMeczu == "W" then
analizaKwart[i].
wygranaKwartaWygranyMecz =
analizaKwart[i].
wygranaKwartaWygranyMecz + 1
elseif wynikMeczu == "P" then
analizaKwart[i].
wygranaKwartaPrzegranyMecz =
analizaKwart[i].
wygranaKwartaPrzegranyMecz + 1
end
elseif teamScore < oppScore then
if wynikMeczu == "W" then
analizaKwart[i].
przegranaKwartaWygranyMecz =
analizaKwart[i].
przegranaKwartaWygranyMecz + 1
elseif wynikMeczu == "P" then
analizaKwart[i].
przegranaKwartaPrzegranyMecz =
analizaKwart[i].
przegranaKwartaPrzegranyMecz + 1
end
else
if wynikMeczu == "W" then
analizaKwart[i].
remisKwartaWygranyMecz =
analizaKwart[i].
remisKwartaWygranyMecz + 1
elseif wynikMeczu == "P" then
analizaKwart[i].
remisKwartaPrzegranyMecz =
analizaKwart[i].
remisKwartaPrzegranyMecz + 1
end
end
end
end
end
end
-- =====================================================
-- GENEROWANIE WYNIKU
-- =====================================================
local out = {}
table.insert(
out,
"== Bilans bezpośrednich spotkań =="
)
table.insert(
out,
""
)
table.insert(
out,
'{| class="wikitable" style="width:100%; text-align:center;"'
)
table.insert(
out,
"! Zakres !! " ..
team1 ..
" !! " ..
team2
)
local zakresy = {
{
nazwa = "Ogółem",
dane = bilans.wszystkie
},
{
nazwa = "🏠 Dom",
dane = bilans.dom
},
{
nazwa = "✈️ Wyjazd",
dane = bilans.wyjazd
}
}
for _, zakres
in ipairs(zakresy) do
local d =
zakres.dane
table.insert(
out,
"|-"
)
table.insert(
out,
"! " ..
zakres.nazwa
)
table.insert(
out,
"| '''" ..
d.mecze ..
"''' meczów<br>" ..
"W: '''" ..
d.wygrane ..
"'''<br>" ..
"P: '''" ..
d.przegrane ..
"'''<br>" ..
"''' " ..
procent(
d.wygrane,
d.mecze
) ..
"'''<br>" ..
"Pkt: '''" ..
d.punktyZdobyte ..
"''' / " ..
d.punktyStracone
)
local przeciwneMecze =
d.mecze
local przeciwneWygrane =
d.przegrane
local przeciwnePrzegrane =
d.wygrane
table.insert(
out,
"| " ..
"''' " ..
przeciwneMecze ..
"''' meczów<br>" ..
"W: '''" ..
przeciwneWygrane ..
"'''<br>" ..
"P: '''" ..
przeciwnePrzegrane ..
"'''<br>" ..
"''' " ..
procent(
przeciwneWygrane,
przeciwneMecze
) ..
"'''<br>" ..
"Pkt: '''" ..
d.punktyStracone ..
"''' / " ..
d.punktyZdobyte
)
end
table.insert(
out,
"|}"
)
-- =====================================================
-- TRENERZY
-- =====================================================
table.insert(
out,
""
)
table.insert(
out,
"== Trenerzy " ..
team1 ..
" w rywalizacji =="
)
table.insert(
out,
""
)
if #listaTrenerow == 0 then
table.insert(
out,
"Brak danych o trenerach."
)
else
table.insert(
out,
'{| class="wikitable sortable" style="width:100%; text-align:center;"'
)
table.insert(
out,
"! Trener !! Mecze !! W !! P !! % wygranych !! Punkty zdobyte !! Punkty stracone"
)
for _, trener
in ipairs(listaTrenerow) do
local d =
trener.dane
table.insert(
out,
"|-"
)
table.insert(
out,
"| [[" ..
trener.trener ..
"]]"
)
table.insert(
out,
"| " ..
d.mecze
)
table.insert(
out,
"| " ..
d.wygrane
)
table.insert(
out,
"| " ..
d.przegrane
)
table.insert(
out,
"| " ..
procent(
d.wygrane,
d.mecze
)
)
table.insert(
out,
"| " ..
d.punktyZdobyte
)
table.insert(
out,
"| " ..
d.punktyStracone
)
end
table.insert(
out,
"|}"
)
end
-- =====================================================
-- NAJLEPSI STRZELCY
-- =====================================================
table.insert(
out,
""
)
table.insert(
out,
"== Najlepsi strzelcy rywalizacji =="
)
table.insert(
out,
""
)
table.insert(
out,
'{| class="wikitable sortable" style="width:100%;"'
)
table.insert(
out,
"! " ..
team1 ..
" !! Punkty !! " ..
team2 ..
" !! Punkty"
)
local max =
math.max(
#strzelcy1,
#strzelcy2
)
for i = 1, max do
table.insert(
out,
"|-"
)
local s1 =
strzelcy1[i]
local s2 =
strzelcy2[i]
if s1 then
table.insert(
out,
"| [[" ..
s1.zawodnik ..
"]]"
)
table.insert(
out,
"| " ..
s1.punkty
)
else
table.insert(
out,
"|"
)
table.insert(
out,
"|"
)
end
if s2 then
table.insert(
out,
"| [[" ..
s2.zawodnik ..
"]]"
)
table.insert(
out,
"| " ..
s2.punkty
)
else
table.insert(
out,
"|"
)
table.insert(
out,
"|"
)
end
end
table.insert(
out,
"|}"
)
-- =====================================================
-- REKORDY INDYWIDUALNE TEAM1
-- =====================================================
table.insert(
out,
""
)
table.insert(
out,
"== Rekordy indywidualne " ..
team1 ..
" =="
)
table.insert(
out,
""
)
table.insert(
out,
'{| class="wikitable" style="width:100%; text-align:center;"'
)
table.insert(
out,
"! Rekord !! 🏠 Dom !! ✈️ Wyjazd"
)
local rekordyLista = {
{
nazwa = "🏀 Najwięcej punktów",
dane = rekordy.punkty,
typ = "punkty"
},
{
nazwa = "⏱️ Najwięcej minut",
dane = rekordy.minuty,
typ = "minuty"
},
{
nazwa = "🎯 Najwięcej asyst",
dane = rekordy.asysty,
typ = "asysty"
},
{
nazwa = "🏀 Najwięcej zbiórek",
dane = rekordy.zbiorki,
typ = "zbiorki"
},
{
nazwa = "⭐ Najwyższy EVAL",
dane = rekordy.eval,
typ = "eval"
},
{
nazwa = "➕ Najwyższy +/-",
dane = rekordy.plusminus,
typ = "plusminus"
}
}
local function tekstRekordu(
lista,
typ
)
if not lista or #lista == 0 then
return "—"
end
local wynik = {}
for _, item in ipairs(lista) do
local wartosc
if typ == "punkty" then
wartosc =
item.punkty ..
" pkt"
elseif typ == "minuty" then
wartosc =
item.minuty_format
if wartosc == "" then
wartosc =
item.minuty ..
" min"
end
elseif typ == "asysty" then
wartosc =
item.asysty ..
" as."
elseif typ == "zbiorki" then
wartosc =
item.zbiorki ..
" zb."
elseif typ == "eval" then
wartosc =
item.eval ..
" EVAL"
elseif typ == "plusminus" then
if item.plusminus >= 0 then
wartosc =
"+" ..
item.plusminus
else
wartosc =
tostring(
item.plusminus
)
end
wartosc =
wartosc ..
" +/-"
end
table.insert(
wynik,
"[[" ..
item.zawodnik ..
"]] — " ..
wartosc ..
"<br>" ..
item.tekst ..
" (" ..
item.wynik ..
")"
)
end
return table.concat(
wynik,
"<br>"
)
end
for _, rekord
in ipairs(rekordyLista) do
table.insert(
out,
"|-"
)
table.insert(
out,
"! " ..
rekord.nazwa
)
table.insert(
out,
"| " ..
tekstRekordu(
rekord.dane.dom,
rekord.typ
)
)
table.insert(
out,
"| " ..
tekstRekordu(
rekord.dane.wyjazd,
rekord.typ
)
)
end
table.insert(
out,
"|}"
)
-- =====================================================
-- SERIE
-- =====================================================
table.insert(
out,
""
)
table.insert(
out,
"== Serie zwycięstw i porażek =="
)
table.insert(
out,
""
)
table.insert(
out,
'{| class="wikitable" style="width:100%; text-align:center;"'
)
table.insert(
out,
"! Seria !! Ogółem !! 🏠 Dom !! ✈️ Wyjazd"
)
table.insert(
out,
"|-"
)
table.insert(
out,
"! 🔥 Najdłuższa seria zwycięstw"
)
table.insert(
out,
"| " ..
serie.wszystkie.W
)
table.insert(
out,
"| " ..
serie.dom.W
)
table.insert(
out,
"| " ..
serie.wyjazd.W
)
table.insert(
out,
"|-"
)
table.insert(
out,
"! 📉 Najdłuższa seria porażek"
)
table.insert(
out,
"| " ..
serie.wszystkie.P
)
table.insert(
out,
"| " ..
serie.dom.P
)
table.insert(
out,
"| " ..
serie.wyjazd.P
)
table.insert(
out,
"|}"
)
-- =====================================================
-- KWARTY
-- =====================================================
table.insert(
out,
""
)
table.insert(
out,
"== Zależność wyniku kwarty od wyniku meczu =="
)
table.insert(
out,
""
)
table.insert(
out,
'{| class="wikitable" style="width:100%; text-align:center;"'
)
table.insert(
out,
"! Kwarta !! Wygrała kwartę<br>i wygrała mecz !! Wygrała kwartę<br>i przegrała mecz !! Przegrała kwartę<br>i wygrała mecz !! Przegrała kwartę<br>i przegrała mecz !! Remis kwarty<br>i wygrała mecz !! Remis kwarty<br>i przegrała mecz"
)
for i = 1, 4 do
local a =
analizaKwart[i]
table.insert(
out,
"|-"
)
table.insert(
out,
"! " ..
kwarty[i].nazwa
)
table.insert(
out,
"| " ..
a.wygranaKwartaWygranyMecz
)
table.insert(
out,
"| " ..
a.wygranaKwartaPrzegranyMecz
)
table.insert(
out,
"| " ..
a.przegranaKwartaWygranyMecz
)
table.insert(
out,
"| " ..
a.przegranaKwartaPrzegranyMecz
)
table.insert(
out,
"| " ..
a.remisKwartaWygranyMecz
)
table.insert(
out,
"| " ..
a.remisKwartaPrzegranyMecz
)
end
table.insert(
out,
"|}"
)
-- =====================================================
-- WSZYSTKIE MECZE
-- =====================================================
table.insert(
out,
""
)
table.insert(
out,
"== Historia spotkań =="
)
table.insert(
out,
""
)
table.insert(
out,
'{| class="wikitable sortable" style="width:100%; text-align:center;"'
)
table.insert(
out,
"! Data !! Sezon !! Mecz !! Wynik !! Miejsce !! Wynik do przerwy !! K1 !! K2 !! K3 !! K4 !! Dogrywka 1 !! Dogrywka 2 !! Dogrywka 3"
)
for _, row in ipairs(
mecze
) do
local m =
miejsce(row)
local miejsceTekst
if m == "dom" then
miejsceTekst = "🏠 Dom"
else
miejsceTekst = "✈️ Wyjazd"
end
table.insert(
out,
"|-"
)
table.insert(
out,
"| " ..
(row.data or "")
)
table.insert(
out,
"| " ..
(row.sezon or "")
)
table.insert(
out,
"| " ..
nazwaMeczu(row)
)
table.insert(
out,
"| '''" ..
liczba(row.gole1) ..
":" ..
liczba(row.gole2) ..
"'''"
)
table.insert(
out,
"| " ..
miejsceTekst
)
table.insert(
out,
"| " ..
(row.wynik_do_przerwy or "—")
)
table.insert(
out,
"| " ..
(row.kwart1 or "—")
)
table.insert(
out,
"| " ..
(row.kwart2 or "—")
)
table.insert(
out,
"| " ..
(row.kwart3 or "—")
)
table.insert(
out,
"| " ..
(row.kwart4 or "—")
)
table.insert(
out,
"| " ..
(row.dogrywka1 or "—")
)
table.insert(
out,
"| " ..
(row.dogrywka2 or "—")
)
table.insert(
out,
"| " ..
(row.dogrywka3 or "—")
)
end
table.insert(
out,
"|}"
)
-- =====================================================
-- KONIEC
-- =====================================================
return table.concat(
out,
"\n"
)
end
return p