<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.gla.com.br/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AChestReward</id>
	<title>Módulo:ChestReward - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.gla.com.br/index.php?action=history&amp;feed=atom&amp;title=M%C3%B3dulo%3AChestReward"/>
	<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:ChestReward&amp;action=history"/>
	<updated>2026-05-09T10:44:14Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:ChestReward&amp;diff=45096&amp;oldid=prev</id>
		<title>Larifk: Criou página com 'local p = {} local Item = require(&quot;Módulo:Item&quot;)  local BAU_IMAGENS = {     comum = 'CommonChest.png',     ouro  = 'GoldChest.png' }  local function formatNumber(num)     num...'</title>
		<link rel="alternate" type="text/html" href="https://wiki.gla.com.br/index.php?title=M%C3%B3dulo:ChestReward&amp;diff=45096&amp;oldid=prev"/>
		<updated>2026-03-17T13:54:32Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;local p = {} local Item = require(&amp;quot;Módulo:Item&amp;quot;)  local BAU_IMAGENS = {     comum = &amp;#039;CommonChest.png&amp;#039;,     ouro  = &amp;#039;GoldChest.png&amp;#039; }  local function formatNumber(num)     num...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local Item = require(&amp;quot;Módulo:Item&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local BAU_IMAGENS = {&lt;br /&gt;
    comum = 'CommonChest.png',&lt;br /&gt;
    ouro  = 'GoldChest.png'&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function formatNumber(num)&lt;br /&gt;
    num = tonumber(num) or 0&lt;br /&gt;
    if num &amp;gt;= 1e9 then&lt;br /&gt;
        return string.format(&amp;quot;%.0f&amp;quot;, num / 1e6) .. &amp;quot;KKK&amp;quot;&lt;br /&gt;
    elseif num &amp;gt;= 1e6 then&lt;br /&gt;
        return string.format(&amp;quot;%.0f&amp;quot;, num / 1e6) .. &amp;quot;KK&amp;quot;&lt;br /&gt;
    elseif num &amp;gt;= 1e4 then&lt;br /&gt;
        return string.format(&amp;quot;%.0f&amp;quot;, num / 1e3) .. &amp;quot;K&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        local s = tostring(num)&lt;br /&gt;
        return s:reverse():gsub(&amp;quot;(%d%d%d)&amp;quot;, &amp;quot;%1,&amp;quot;):reverse():gsub(&amp;quot;^,&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parseItemEntry(entry)&lt;br /&gt;
    entry = mw.text.trim(entry)&lt;br /&gt;
    if entry == &amp;quot;&amp;quot; then return nil, nil end&lt;br /&gt;
&lt;br /&gt;
    local ident, qtdStr&lt;br /&gt;
&lt;br /&gt;
    if entry:find(&amp;quot;;&amp;quot;) then&lt;br /&gt;
        ident, qtdStr = entry:match(&amp;quot;^(.-)%s*;%s*(%d+)$&amp;quot;)&lt;br /&gt;
    else&lt;br /&gt;
        ident, qtdStr = entry:match(&amp;quot;^(.-)%s*:%s*(%d+)$&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if not ident or not qtdStr then return nil, nil end&lt;br /&gt;
    return mw.text.trim(ident), tonumber(qtdStr)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function renderRewards(itensRaw, lang)&lt;br /&gt;
    if not itensRaw or itensRaw == &amp;quot;&amp;quot; then return &amp;quot;&amp;quot; end&lt;br /&gt;
&lt;br /&gt;
    local parts = {}&lt;br /&gt;
&lt;br /&gt;
    for entry in mw.text.gsplit(itensRaw, &amp;quot;,&amp;quot;, true) do&lt;br /&gt;
        local ident, qtdNum = parseItemEntry(entry)&lt;br /&gt;
        if ident and qtdNum then&lt;br /&gt;
            local item = Item.resolve(ident)&lt;br /&gt;
&lt;br /&gt;
            if not item then&lt;br /&gt;
                item = {&lt;br /&gt;
                    id = 0,&lt;br /&gt;
                    image = ident:match(&amp;quot;%.%w+$&amp;quot;) and ident or (ident .. &amp;quot;.png&amp;quot;),&lt;br /&gt;
                    names = { pt = ident, en = ident },&lt;br /&gt;
                    category = &amp;quot;unknown&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            local qtdFormatada = formatNumber(qtdNum)&lt;br /&gt;
            parts[#parts + 1] = Item.renderOne(item, qtdFormatada, lang, {&lt;br /&gt;
                showTooltip = true,&lt;br /&gt;
                showCount = true&lt;br /&gt;
            })&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return table.concat(parts)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local nome = mw.text.trim(args['nome'] or '')&lt;br /&gt;
    local lang = mw.text.trim(args['lang'] or 'pt')&lt;br /&gt;
&lt;br /&gt;
    local root = mw.html.create('div'):attr('class', 'lk-wrap')&lt;br /&gt;
&lt;br /&gt;
    root:tag('span'):attr('class', 'lk-theme-btn'):wikitext('☾ Dark')&lt;br /&gt;
&lt;br /&gt;
    if nome ~= '' then&lt;br /&gt;
        root:tag('div'):attr('class', 'lk-titulo'):wikitext(nome)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local baus = {}&lt;br /&gt;
    local i = 1&lt;br /&gt;
    while true do&lt;br /&gt;
        local tipo = mw.text.trim(args['bau' .. i .. 'tipo'] or '')&lt;br /&gt;
        if tipo == '' then break end&lt;br /&gt;
        baus[#baus + 1] = i&lt;br /&gt;
        i = i + 1&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if #baus == 0 then return tostring(root) end&lt;br /&gt;
&lt;br /&gt;
    local tabs = root:tag('div'):attr('class', 'lk-tabs')&lt;br /&gt;
    for idx, n in ipairs(baus) do&lt;br /&gt;
        local tipo   = mw.text.trim(args['bau' .. n .. 'tipo'] or '')&lt;br /&gt;
        local tabImg = BAU_IMAGENS[tipo] or ''&lt;br /&gt;
        local tab    = tabs:tag('span')&lt;br /&gt;
            :attr('class', idx == 1 and 'lk-tab active' or 'lk-tab')&lt;br /&gt;
            :attr('data-tab', 'b' .. n)&lt;br /&gt;
        if tabImg ~= '' then&lt;br /&gt;
            tab:node(mw.html.create(''):wikitext('[[File:' .. tabImg .. '|20px|link=]]'))&lt;br /&gt;
        end&lt;br /&gt;
        tab:tag('span'):wikitext('Baú ' .. string.format('%02d', n))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    for idx, n in ipairs(baus) do&lt;br /&gt;
        local px    = 'bau' .. n&lt;br /&gt;
        local tipo  = mw.text.trim(args[px .. 'tipo'] or '')&lt;br /&gt;
        local itens = mw.text.trim(args[px .. 'itens'] or '')&lt;br /&gt;
        local video = mw.text.trim(args[px .. 'video'] or '')&lt;br /&gt;
        local rota  = mw.text.trim(args[px .. 'rota'] or '')&lt;br /&gt;
&lt;br /&gt;
        local panel = root:tag('div')&lt;br /&gt;
            :attr('class', idx == 1 and 'lk-panel active' or 'lk-panel')&lt;br /&gt;
            :attr('data-panel', 'b' .. n)&lt;br /&gt;
&lt;br /&gt;
        local rsec  = panel:tag('div')&lt;br /&gt;
        rsec:tag('div'):attr('class', 'lk-slabel'):wikitext('Recompensas')&lt;br /&gt;
        local grid = rsec:tag('div'):attr('class', 'lk-rewards reward-items')&lt;br /&gt;
&lt;br /&gt;
        grid:wikitext(renderRewards(itens, lang))&lt;br /&gt;
&lt;br /&gt;
        if video ~= '' or rota ~= '' then&lt;br /&gt;
            panel:tag('div'):attr('class', 'lk-divider')&lt;br /&gt;
            local csec = panel:tag('div')&lt;br /&gt;
            csec:tag('div'):attr('class', 'lk-slabel'):wikitext('Como chegar')&lt;br /&gt;
&lt;br /&gt;
            local ctabs = csec:tag('div'):attr('class', 'lk-ctabs')&lt;br /&gt;
            if video ~= '' then&lt;br /&gt;
                ctabs:tag('span')&lt;br /&gt;
                    :attr('class', 'lk-ctab active')&lt;br /&gt;
                    :attr('data-ctab', 'v' .. n)&lt;br /&gt;
                    :wikitext('Vídeo')&lt;br /&gt;
            end&lt;br /&gt;
            if rota ~= '' then&lt;br /&gt;
                ctabs:tag('span')&lt;br /&gt;
                    :attr('class', video ~= '' and 'lk-ctab' or 'lk-ctab active')&lt;br /&gt;
                    :attr('data-ctab', 'r' .. n)&lt;br /&gt;
                    :wikitext('Imagem')&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            if video ~= '' then&lt;br /&gt;
                local vpanel = csec:tag('div')&lt;br /&gt;
                    :attr('class', 'lk-cpanel active')&lt;br /&gt;
                    :attr('data-cpanel', 'v' .. n)&lt;br /&gt;
                local mwrap = vpanel:tag('div'):attr('class', 'lk-media-wrap')&lt;br /&gt;
                mwrap:attr('data-video', video)&lt;br /&gt;
            end&lt;br /&gt;
&lt;br /&gt;
            if rota ~= '' then&lt;br /&gt;
                local rpanel = csec:tag('div')&lt;br /&gt;
                    :attr('class', video ~= '' and 'lk-cpanel' or 'lk-cpanel active')&lt;br /&gt;
                    :attr('data-cpanel', 'r' .. n)&lt;br /&gt;
&lt;br /&gt;
                local slider = rpanel:tag('div'):attr('class', 'lk-slider')&lt;br /&gt;
                local track  = slider:tag('div'):attr('class', 'lk-slider-track')&lt;br /&gt;
&lt;br /&gt;
                local imgs   = mw.text.split(rota, '%s*,%s*')&lt;br /&gt;
                local total  = 0&lt;br /&gt;
                for _, imgname in ipairs(imgs) do&lt;br /&gt;
                    imgname = mw.text.trim(imgname)&lt;br /&gt;
                    if imgname ~= '' then&lt;br /&gt;
                        local slide = track:tag('div'):attr('class', 'lk-slide')&lt;br /&gt;
                        slide:node(mw.html.create(''):wikitext('[[File:' .. imgname .. '|link=]]'))&lt;br /&gt;
                        total = total + 1&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
&lt;br /&gt;
                if total &amp;gt; 1 then&lt;br /&gt;
                    slider:tag('span')&lt;br /&gt;
                        :attr('class', 'lk-slide-btn lk-slide-prev')&lt;br /&gt;
                        :attr('aria-label', 'anterior')&lt;br /&gt;
                        :wikitext('&amp;lt;')&lt;br /&gt;
                    slider:tag('span')&lt;br /&gt;
                        :attr('class', 'lk-slide-btn lk-slide-next')&lt;br /&gt;
                        :attr('aria-label', 'proximo')&lt;br /&gt;
                        :wikitext('&amp;gt;')&lt;br /&gt;
                    slider:tag('span')&lt;br /&gt;
                        :attr('class', 'lk-slide-counter')&lt;br /&gt;
                        :attr('data-total', tostring(total))&lt;br /&gt;
                        :wikitext('1 / ' .. total)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Larifk</name></author>
	</entry>
</feed>