Moduł:Dźwięki
W tym module nie ma dokumentacji. Jeśli wiesz jak używać tego modułu, proszę, podaj odpowiednie informacje.
local p = {}
-- 1. ADRESACJA DANYCH (To jest kluczowe)
-- Zmieniamy na sztywno na Twój SandBox, żeby przestał szukać w Module:Dźwięki
local success, data = pcall(mw.loadData, 'Moduł:SandBox/Igorczewski6524/Dźwięki/Dane')
local function renderTable(editionName, editionData, displayTitle, icon)
if not editionData or type(editionData) ~= "table" or #editionData == 0 then return "" end
local root = mw.html.create('table')
:addClass('wikitable sound-table mw-collapsible mw-collapsed')
:css('width', '100%')
:css('font-size', '0.9em')
local iconWiki = (icon and icon ~= "") and ('[[Plik:' .. icon .. '|20px|link=]] ') or ""
root:tag('tr')
:tag('th')
:attr('colspan', editionName == 'Java Edition' and '9' or '8')
:wikitext(iconWiki .. displayTitle .. ' sound type')
local subHeader = root:tag('tr')
local headers = {"Sound", "Closed captions", "Source", "Description", "Identifier", "Translation key", "Volume", "Pitch"}
if editionName == 'Java Edition' then table.insert(headers, "Attenuation distance") end
for _, h in ipairs(headers) do subHeader:tag('th'):wikitext(h):done() end
for _, group in ipairs(editionData) do
local rowCount = #group.zdarzenia
for i, row in ipairs(group.zdarzenia) do
local tr = root:tag('tr')
if i == 1 then
local soundCell = tr:tag('td'):attr('rowspan', rowCount):css('text-align', 'center'):css('vertical-align', 'middle')
if group.pliki then
for _, file in ipairs(group.pliki) do
soundCell:wikitext('[[Plik:Sound-icon.png|16px|link=Plik:' .. file .. ']] ')
end
end
end
tr:tag('td'):wikitext(row.captions or "?"):done()
tr:tag('td'):wikitext(row.source or ""):done()
tr:tag('td'):wikitext(row.desc or ""):done()
tr:tag('td'):tag('code'):wikitext(row.id or ""):done():done()
tr:tag('td'):tag('code'):wikitext(row.key or ""):done():done()
tr:tag('td'):wikitext(row.vol or ""):done()
tr:tag('td'):wikitext(row.pitch or ""):done()
if editionName == 'Java Edition' then tr:tag('td'):wikitext(row.dist or ""):done() end
end
end
return '<p>\'\'\'[[' .. editionName .. ']]:\'\'\'</p>' .. tostring(root)
end
function p.main(frame)
-- Sprawdzamy czy baza się wczytała
if not success then
return '<span class="error">Błąd: Nie znaleziono bazy danych w Twoim SandBoxie. Sprawdź czy strona "Moduł:SandBox/Igorczewski6524/Dźwięki/Dane" istnieje.</span>'
end
local parentArgs = frame:getParent().args
local currentArgs = frame.args
local id = parentArgs[1] or currentArgs[1]
local nazwa = parentArgs[2] or currentArgs[2] or id
local wersja = string.lower(parentArgs[3] or currentArgs[3] or "")
if not id or id == "" then
return '<span class="error">Błąd: Nie podano ID dźwięku (np. copper).</span>'
end
id = mw.text.trim(id)
local blockData = data[id]
if not blockData then
return '<span class="error">Błąd: Klucz "' .. id .. '" nie istnieje w Twoim pliku /Dane.</span>'
end
local out = ""
if wersja == "java" then
out = renderTable('Java Edition', blockData.java, nazwa, blockData.ikona)
elseif wersja == "bedrock" then
out = renderTable('Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona)
else
out = renderTable('Java Edition', blockData.java, nazwa, blockData.ikona) ..
renderTable('Bedrock Edition', blockData.bedrock, nazwa, blockData.ikona)
end
return out
end
return p