Mudanças entre as edições de "Módulo:Gb"
Ir para navegação
Ir para pesquisar
| Linha 6: | Linha 6: | ||
local function g(k, default) | local function g(k, default) | ||
local v = mw.text.trim(args[k] or "") | |||
return v ~= "" and v or default | |||
end | end | ||
-- Dados gerais | |||
local nome1 = g("nome1", "Forma 1") | |||
local nome2 = g("nome2", "Forma 2") | |||
local | |||
local | |||
local | 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 necessario = g("necessario", "-") | |||
local | |||
-- Loot (agora 3 categorias) | |||
local dropNormal = g("normal", "") | |||
local dropElite = g("elite", "") | |||
local dropHard = g("hard", "") | |||
-- Montagem HTML | |||
local html = mw.html.create("div") | |||
html:addClass("bossbox") | |||
html:wikitext([[ | |||
<style> | |||
.bossbox { | |||
background:#18181b; | |||
border-radius:12px; | |||
padding:20px; | |||
color:#fff; | |||
max-width:700px; | |||
margin:auto; | |||
font-family:Verdana,sans-serif; | |||
} | |||
.boss-tabs { | |||
display:flex; | |||
gap:6px; | |||
margin-bottom:15px; | |||
} | |||
.boss-tab { | |||
padding:7px 18px; | |||
border-radius:7px; | |||
background:#232329; | |||
color:#ccc; | |||
font-weight:600; | |||
text-decoration:none; | |||
} | |||
.boss-tab.active { | |||
background:#19171c; | |||
border:2px solid #c7a047; | |||
color:#fff; | |||
} | |||
.boss-main { | |||
display:flex; | |||
gap:15px; | |||
flex-wrap:wrap; | |||
} | |||
.boss-left img { | |||
border-radius:8px; | |||
} | |||
.boss-stats-box { | |||
background:#222126; | |||
border-radius:8px; | |||
padding:12px 20px; | |||
margin-top:6px; | |||
} | |||
.boss-loot { | |||
background:#232329; | |||
border-radius:10px; | |||
padding:18px; | |||
margin-top:20px; | |||
} | |||
@media(max-width:640px){ | |||
.boss-main{flex-direction:column;} | |||
} | |||
</style> | |||
]]) | |||
-- | -- SISTEMA DE ABAS (sem JS) | ||
html:wikitext('<div class="boss-tabs">') | |||
html:wikitext(string.format('<a href="#form1" class="boss-tab"> %s </a>', nome1)) | |||
html:wikitext(string.format('<a href="#form2" class="boss-tab"> %s </a>', nome2)) | |||
html:wikitext('</div>') | |||
-- | -- CONTAINER PRINCIPAL | ||
main:tag("div") | local main = html:tag("div"):addClass("boss-main") | ||
-- | -- IMAGEM | ||
main:tag("div"):addClass("boss-left") | |||
:wikitext(string.format("[[Arquivo:%s|120px]]", img)) | |||
-- DADOS DO BOSS | |||
:css{ ["font-size"] = "1. | local info = main:tag("div") | ||
info:tag("div") | |||
:css{["font-size"]="1.4em",["font-weight"]="bold",color="#e82b2b"} | |||
:wikitext(nome) | :wikitext(nome) | ||
info:tag("div") | |||
:css{ ["font-size"] = "95%", color = "#eaa85d", ["font-style"] = "italic" } | :css{["font-size"]="95%",color="#eaa85d",["font-style"]="italic"} | ||
:wikitext | :wikitext('"'..frase..'"') | ||
-- STATS | |||
local statbox = info:tag("div"):addClass("boss-stats-box") | |||
statbox:wikitext(string.format( | |||
'<span style="color:#fb3d3d;font-weight:bold;">❤️ %s</span> ' .. | |||
'<span style="color:#ffe568;font-weight:bold;">💰 %s</span> ' .. | |||
'<span style="color:#6ca8fb;font-weight:bold;">⚔️ %s</span>', | |||
hp, exp, nivel | |||
)) | |||
-- | -- NECESSARIO | ||
info:tag("div") | |||
:css{ | :css{["margin-top"]="8px",["font-size"]="90%",color="#cfccff"} | ||
:wikitext('<b>Necessário:</b> ' .. necessario) | |||
local | -- LOOT TABLE | ||
:css{ | local loot = html:tag("div"):addClass("boss-loot") | ||
loot:tag("div") | |||
:css{["font-size"]="1.2em","margin-bottom","10px",color="#f3e8bb"} | |||
:wikitext("Drops") | |||
local function | local function addRow(title, color, content) | ||
if content ~= "" then | |||
loot:tag("div") | |||
:css{color=color,["margin-top"]="6px"} | |||
:wikitext(string.format("<b>%s</b>: %s", title, content)) | |||
end | |||
end | end | ||
addRow("Normal", "#f3e8bb", dropNormal) | |||
addRow("Elite", "#aeccff", dropElite) | |||
addRow("Hard", "#f9538f", dropHard) | |||
return tostring(html) | return tostring(html) | ||
Edição das 20h28min de 22 de novembro de 2025
A documentação para este módulo pode ser criada em Módulo:Gb/doc
-- Módulo:BossDisplay
local p = {}
function p.bossInfo(frame)
local args = frame:getParent().args
local function g(k, default)
local v = mw.text.trim(args[k] or "")
return v ~= "" and v or default
end
-- Dados gerais
local nome1 = g("nome1", "Forma 1")
local nome2 = g("nome2", "Forma 2")
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 necessario = g("necessario", "-")
-- Loot (agora 3 categorias)
local dropNormal = g("normal", "")
local dropElite = g("elite", "")
local dropHard = g("hard", "")
-- Montagem HTML
local html = mw.html.create("div")
html:addClass("bossbox")
html:wikitext([[
<style>
.bossbox {
background:#18181b;
border-radius:12px;
padding:20px;
color:#fff;
max-width:700px;
margin:auto;
font-family:Verdana,sans-serif;
}
.boss-tabs {
display:flex;
gap:6px;
margin-bottom:15px;
}
.boss-tab {
padding:7px 18px;
border-radius:7px;
background:#232329;
color:#ccc;
font-weight:600;
text-decoration:none;
}
.boss-tab.active {
background:#19171c;
border:2px solid #c7a047;
color:#fff;
}
.boss-main {
display:flex;
gap:15px;
flex-wrap:wrap;
}
.boss-left img {
border-radius:8px;
}
.boss-stats-box {
background:#222126;
border-radius:8px;
padding:12px 20px;
margin-top:6px;
}
.boss-loot {
background:#232329;
border-radius:10px;
padding:18px;
margin-top:20px;
}
@media(max-width:640px){
.boss-main{flex-direction:column;}
}
</style>
]])
-- SISTEMA DE ABAS (sem JS)
html:wikitext('<div class="boss-tabs">')
html:wikitext(string.format('<a href="#form1" class="boss-tab"> %s </a>', nome1))
html:wikitext(string.format('<a href="#form2" class="boss-tab"> %s </a>', nome2))
html:wikitext('</div>')
-- CONTAINER PRINCIPAL
local main = html:tag("div"):addClass("boss-main")
-- IMAGEM
main:tag("div"):addClass("boss-left")
:wikitext(string.format("[[Arquivo:%s|120px]]", img))
-- DADOS DO BOSS
local info = main:tag("div")
info:tag("div")
:css{["font-size"]="1.4em",["font-weight"]="bold",color="#e82b2b"}
:wikitext(nome)
info:tag("div")
:css{["font-size"]="95%",color="#eaa85d",["font-style"]="italic"}
:wikitext('"'..frase..'"')
-- STATS
local statbox = info:tag("div"):addClass("boss-stats-box")
statbox:wikitext(string.format(
'<span style="color:#fb3d3d;font-weight:bold;">❤️ %s</span> ' ..
'<span style="color:#ffe568;font-weight:bold;">💰 %s</span> ' ..
'<span style="color:#6ca8fb;font-weight:bold;">⚔️ %s</span>',
hp, exp, nivel
))
-- NECESSARIO
info:tag("div")
:css{["margin-top"]="8px",["font-size"]="90%",color="#cfccff"}
:wikitext('<b>Necessário:</b> ' .. necessario)
-- LOOT TABLE
local loot = html:tag("div"):addClass("boss-loot")
loot:tag("div")
:css{["font-size"]="1.2em","margin-bottom","10px",color="#f3e8bb"}
:wikitext("Drops")
local function addRow(title, color, content)
if content ~= "" then
loot:tag("div")
:css{color=color,["margin-top"]="6px"}
:wikitext(string.format("<b>%s</b>: %s", title, content))
end
end
addRow("Normal", "#f3e8bb", dropNormal)
addRow("Elite", "#aeccff", dropElite)
addRow("Hard", "#f9538f", dropHard)
return tostring(html)
end
return p