Mudanças entre as edições de "Módulo:Gb"
Ir para navegação
Ir para pesquisar
| Linha 1: | Linha 1: | ||
-- Módulo:BossDisplay | -- Módulo:BossDisplay (responsivo) | ||
local p = {} | local p = {} | ||
| Linha 15: | Linha 15: | ||
local exp = g("exp", "???") | local exp = g("exp", "???") | ||
local nivel = g("nivel", "???") | local nivel = g("nivel", "???") | ||
local | local fresco = g("fresco", "-") | ||
local forte = g("forte", "-") | local forte = g("forte", "-") | ||
local reflete | local reflete = g("reflete", "-") | ||
local | local comum = g("comum", "") | ||
local | local semiraro = g("semiraro", "") | ||
local | local raro = g("raro", "") | ||
local | local muitoRaro = g("muitoraro", "") | ||
local html = mw.html.create("div") | ---------------------------------------------------- | ||
-- CSS responsivo embutido | |||
---------------------------------------------------- | |||
local css = [[ | |||
<style> | |||
@media screen and (max-width: 650px) { | |||
.boss-main { | |||
flex-direction: column !important; | |||
text-align: center; | |||
gap: 16px; | |||
} | |||
.boss-img-box img { | |||
width: 70px !important; | |||
height: 70px !important; | |||
} | |||
.boss-stats { | |||
align-items: center !important; | |||
} | |||
} | |||
</style> | |||
]] | |||
local html = mw.html.create() | |||
html:wikitext(css) | |||
local box = html:tag("div") | |||
:addClass("boss-container") | :addClass("boss-container") | ||
:css{ | :css{ | ||
| Linha 30: | Linha 58: | ||
padding = "30px", | padding = "30px", | ||
color = "#fff", | color = "#fff", | ||
width = " | ["max-width"] = "750px", | ||
width = "100%", | |||
margin = "auto", | margin = "auto", | ||
["font-family"] = "Verdana,sans-serif" | ["font-family"] = "Verdana,sans-serif", | ||
["box-sizing"] = "border-box" | |||
} | } | ||
-- | ---------------------------------------------------- | ||
-- Cabeçalho | |||
:css | ---------------------------------------------------- | ||
box:tag("div") | |||
:css{ ["font-size"] = "1.5em", ["font-weight"] = "bold", ["margin-bottom"] = "10px" } | |||
:wikitext("Bosses") | :wikitext("Bosses") | ||
local var = box:tag("div") | |||
local var = | |||
:css("margin-bottom", "24px") | :css("margin-bottom", "24px") | ||
| Linha 70: | Linha 99: | ||
:wikitext("Archon Crimsonveil") | :wikitext("Archon Crimsonveil") | ||
-- | ---------------------------------------------------- | ||
local main = | -- Corpo principal (responsivo) | ||
---------------------------------------------------- | |||
local main = box:tag("div") | |||
:addClass("boss-main") | |||
:css{ | :css{ | ||
display = "flex", | display = "flex", | ||
["align-items"] = "center" | gap = "20px", | ||
["align-items"] = "center", | |||
["justify-content"] = "space-between", | |||
["flex-wrap"] = "wrap" | |||
} | } | ||
main:tag("div") | main:tag("div") | ||
:css{ | :addClass("boss-img-box") | ||
:wikitext(string.format("[[Arquivo:%s| | :css{ ["flex"] = "none" } | ||
:wikitext(string.format("[[Arquivo:%s|90px]]", img)) | |||
local textBox = main:tag("div") | local textBox = main:tag("div") | ||
:css{ ["flex"] = "1", ["min-width"] = "200px" } | |||
textBox:tag("div") | textBox:tag("div") | ||
| Linha 93: | Linha 128: | ||
:wikitext(string.format('"%s"', frase)) | :wikitext(string.format('"%s"', frase)) | ||
---------------------------------------------------- | |||
-- Stats | -- Stats | ||
---------------------------------------------------- | |||
local stats = main:tag("div") | local stats = main:tag("div") | ||
:addClass("boss-stats") | |||
:css{ | :css{ | ||
display = "flex", | display = "flex", | ||
["flex-direction"] = "column", | ["flex-direction"] = "column", | ||
["align-items"] = "flex-end", | ["align-items"] = "flex-end", | ||
gap = "6px" | gap = "6px", | ||
["min-width"] = "160px" | |||
} | } | ||
| Linha 115: | Linha 153: | ||
display = "flex", | display = "flex", | ||
["align-items"] = "center", | ["align-items"] = "center", | ||
gap = " | ["justify-content"] = "center", | ||
gap = "16px", | |||
["flex-wrap"] = "wrap" | |||
} | } | ||
sline: | sline:wikitext(string.format('<span style="color:#fb3d3d;font-weight:bold;font-size:1.15em;">❤️ %s</span>', hp)) | ||
sline:wikitext(string.format('<span style="color:#ffe568;font-weight:bold;font-size:1.08em;">💰 %s</span>', exp)) | |||
sline:wikitext(string.format('<span style="color:#6ca8fb;font-weight:bold;font-size:1.04em;">⚔️ %s</span>', nivel)) | |||
stats:tag("div") | |||
:css{ | :css{ | ||
["margin-top"] = "5px", | ["margin-top"] = "5px", | ||
["font-size"] = "90%", | ["font-size"] = "90%", | ||
color = "#cfccff" | color = "#cfccff", | ||
["text-align"] = "right" | |||
} | } | ||
:wikitext(string.format( | |||
"<b>Frescor:</b> %s <b>Forte:</b> %s <b>Reflete:</b> %s", | |||
fresco, forte, reflete | |||
)) | |||
---------------------------------------------------- | |||
-- Tabela de loot | |||
---------------------------------------------------- | |||
local loot = box:tag("div") | |||
local loot = | |||
:css{ | :css{ | ||
["margin-top"] = "28px", | ["margin-top"] = "28px", | ||
| Linha 174: | Linha 205: | ||
end | end | ||
row(" | row("Comum:", "#f3e8bb", comum) | ||
row(" | row("Semi-Raro:", "#aeccff", semiraro) | ||
row(" | row("Raro:", "#e6e5ff", raro) | ||
row(" | row("Muito Raro:", "#f9538f", muitoRaro) | ||
return tostring(html) | return tostring(html) | ||
Edição das 20h56min de 22 de novembro de 2025
A documentação para este módulo pode ser criada em Módulo:Gb/doc
-- Módulo:BossDisplay (responsivo)
local p = {}
function p.bossInfo(frame)
local args = frame:getParent().args
local function g(k, default)
return mw.text.trim(args[k] or "") ~= "" and args[k] or default
end
local img = g("img", "Placeholder.png")
local nome = g("nome", "Nome do Boss")
local frase = g("frase", "Frase ou lema do boss.")
local hp = g("hp", "???")
local exp = g("exp", "???")
local nivel = g("nivel", "???")
local fresco = g("fresco", "-")
local forte = g("forte", "-")
local reflete = g("reflete", "-")
local comum = g("comum", "")
local semiraro = g("semiraro", "")
local raro = g("raro", "")
local muitoRaro = g("muitoraro", "")
----------------------------------------------------
-- CSS responsivo embutido
----------------------------------------------------
local css = [[
<style>
@media screen and (max-width: 650px) {
.boss-main {
flex-direction: column !important;
text-align: center;
gap: 16px;
}
.boss-img-box img {
width: 70px !important;
height: 70px !important;
}
.boss-stats {
align-items: center !important;
}
}
</style>
]]
local html = mw.html.create()
html:wikitext(css)
local box = html:tag("div")
:addClass("boss-container")
:css{
background = "#18181b",
["border-radius"] = "12px",
padding = "30px",
color = "#fff",
["max-width"] = "750px",
width = "100%",
margin = "auto",
["font-family"] = "Verdana,sans-serif",
["box-sizing"] = "border-box"
}
----------------------------------------------------
-- Cabeçalho
----------------------------------------------------
box:tag("div")
:css{ ["font-size"] = "1.5em", ["font-weight"] = "bold", ["margin-bottom"] = "10px" }
:wikitext("Bosses")
local var = box:tag("div")
:css("margin-bottom", "24px")
var:tag("span")
:css{
["background-color"] = "#232329",
["border-radius"] = "7px 0 0 7px",
padding = "7px 20px",
["font-size"] = "1em",
color = "#cbcdd7",
["font-weight"] = "600"
}
:wikitext("Unbound Crimsonveil")
var:tag("span")
:css{
["background-color"] = "#19171c",
["border-radius"] = "0 7px 7px 0",
padding = "7px 20px",
["font-size"] = "1em",
color = "#fff",
["font-weight"] = "600",
border = "2px solid #c7a047",
["border-left"] = "0"
}
:wikitext("Archon Crimsonveil")
----------------------------------------------------
-- Corpo principal (responsivo)
----------------------------------------------------
local main = box:tag("div")
:addClass("boss-main")
:css{
display = "flex",
gap = "20px",
["align-items"] = "center",
["justify-content"] = "space-between",
["flex-wrap"] = "wrap"
}
main:tag("div")
:addClass("boss-img-box")
:css{ ["flex"] = "none" }
:wikitext(string.format("[[Arquivo:%s|90px]]", img))
local textBox = main:tag("div")
:css{ ["flex"] = "1", ["min-width"] = "200px" }
textBox:tag("div")
:css{ ["font-size"] = "1.2em", ["font-weight"] = "bold", color = "#e82b2b" }
:wikitext(nome)
textBox:tag("div")
:css{ ["font-size"] = "95%", color = "#eaa85d", ["font-style"] = "italic" }
:wikitext(string.format('"%s"', frase))
----------------------------------------------------
-- Stats
----------------------------------------------------
local stats = main:tag("div")
:addClass("boss-stats")
:css{
display = "flex",
["flex-direction"] = "column",
["align-items"] = "flex-end",
gap = "6px",
["min-width"] = "160px"
}
local statBox = stats:tag("div")
:css{
["background-color"] = "#222126",
["border-radius"] = "8px",
padding = "12px 20px",
["min-width"] = "170px"
}
local sline = statBox:tag("div")
:css{
display = "flex",
["align-items"] = "center",
["justify-content"] = "center",
gap = "16px",
["flex-wrap"] = "wrap"
}
sline:wikitext(string.format('<span style="color:#fb3d3d;font-weight:bold;font-size:1.15em;">❤️ %s</span>', hp))
sline:wikitext(string.format('<span style="color:#ffe568;font-weight:bold;font-size:1.08em;">💰 %s</span>', exp))
sline:wikitext(string.format('<span style="color:#6ca8fb;font-weight:bold;font-size:1.04em;">⚔️ %s</span>', nivel))
stats:tag("div")
:css{
["margin-top"] = "5px",
["font-size"] = "90%",
color = "#cfccff",
["text-align"] = "right"
}
:wikitext(string.format(
"<b>Frescor:</b> %s <b>Forte:</b> %s <b>Reflete:</b> %s",
fresco, forte, reflete
))
----------------------------------------------------
-- Tabela de loot
----------------------------------------------------
local loot = box:tag("div")
:css{
["margin-top"] = "28px",
background = "#232329",
["border-radius"] = "10px",
padding = "18px"
}
local tableEl = loot:tag("table")
:css{
width = "100%",
color = "#fff",
["table-layout"] = "auto"
}
local function row(label, color, content)
local tr = tableEl:tag("tr")
tr:tag("th")
:css{
["text-align"] = "left",
color = color,
padding = "6px",
["font-size"] = "1.07em"
}
:wikitext(label)
tr:tag("td"):wikitext(content)
end
row("Comum:", "#f3e8bb", comum)
row("Semi-Raro:", "#aeccff", semiraro)
row("Raro:", "#e6e5ff", raro)
row("Muito Raro:", "#f9538f", muitoRaro)
return tostring(html)
end
return p