Mudanças entre as edições de "Módulo:Lari1"

De Wiki Gla
Ir para navegação Ir para pesquisar
 
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 1: Linha 1:
local p = {}
local p = {}
local Item = require("Módulo:Item")


local function formatNumber(num)
function p.main(frame)
     num = tonumber(num) or 0
     local args = frame:getParent().args
     if num >= 1e9 then return string.format("%.0f", num / 1e6) .. "KKK"
     local titulo = mw.text.trim(args['titulo'] or '')
     elseif num >= 1e6 then return string.format("%.0f", num / 1e6) .. "KK"
 
     elseif num >= 1e4 then return string.format("%.0f", num / 1e3) .. "K"
     local bosses = {}
     else
     local i = 1
         local s = tostring(num)
     while true do
        return s:reverse():gsub("(%d%d%d)", "%1."):reverse():gsub("^%.", "")
         local nome = mw.text.trim(args['boss' .. i .. 'nome'] or '')
    end
        if nome == '' then break end
end


local function parseItemEntry(entry)
        local boss = {
    entry = mw.text.trim(entry)
            nome = nome,
    if entry == "" then return nil, nil end
            elite = {},
    local ident, qtdStr
            hard = {}
    if entry:find(";") then
         }
        ident, qtdStr = entry:match("^(.-)%s*;%s*(%d+)$")
    else
         ident, qtdStr = entry:match("^(.-)%s*:%s*(%d+)$")
    end
    if not ident or not qtdStr then return nil, nil end
    return mw.text.trim(ident), tonumber(qtdStr)
end


function p.reward(frame)
        -- Skills Elite
    local args    = frame:getParent().args
        local j = 1
    local itensRaw = mw.text.trim(args["itens"] or "")
        while j <= 8 do
    local lang    = mw.text.trim(args["lang"] or "pt")
            local sNome = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'nome'] or '')
            if sNome == '' then break end
            table.insert(boss.elite, {
                nome  = sNome,
                video = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'video'] or ''),
                desc  = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'desc'] or '')
            })
            j = j + 1
        end


    if itensRaw == "" then return "" end
        -- Skills Hard
        j = 1
        while j <= 8 do
            local sNome = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'nome'] or '')
            if sNome == '' then break end
            table.insert(boss.hard, {
                nome  = sNome,
                video = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'video'] or ''),
                desc  = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'desc'] or '')
            })
            j = j + 1
        end


    local wrap = mw.html.create("div"):addClass("lk-reward-wrap")
        table.insert(bosses, boss)
     local lbl  = wrap:tag("div"):addClass("lk-reward-lbl"):wikitext("Recompensa Final")
        i = i + 1
     end


     local line = wrap:tag("div"):addClass("reward-items")
     local json = mw.text.jsonEncode(bosses)


     for entry in mw.text.gsplit(itensRaw, ",", true) do
     local container = mw.html.create('div')
         local ident, qtdNum = parseItemEntry(entry)
         :addClass('ba-wrap')
         if ident and qtdNum then
         :addClass('dark')
            local item = Item.resolve(ident)
        :attr('id', 'ba-wrap')
            if not item then
        :attr('data-bosses', json)
                item = {
        :attr('data-titulo', titulo)
                    id       = 0,
                    image    = ident:match("%.%w+$") and ident or (ident .. ".png"),
                    names    = { pt = ident, en = ident },
                    category = "misc"
                }
            end
            line:wikitext(Item.renderOne(item, formatNumber(qtdNum), lang, {
                showTooltip = true,
                showCount  = true
            }))
        end
    end


     return tostring(wrap)
     return tostring(container)
end
end


return p
return p

Edição atual tal como às 13h22min de 17 de março de 2026

A documentação para este módulo pode ser criada em Módulo:Lari1/doc

local p = {}

function p.main(frame)
    local args = frame:getParent().args
    local titulo = mw.text.trim(args['titulo'] or '')

    local bosses = {}
    local i = 1
    while true do
        local nome = mw.text.trim(args['boss' .. i .. 'nome'] or '')
        if nome == '' then break end

        local boss = {
            nome = nome,
            elite = {},
            hard = {}
        }

        -- Skills Elite
        local j = 1
        while j <= 8 do
            local sNome = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'nome'] or '')
            if sNome == '' then break end
            table.insert(boss.elite, {
                nome  = sNome,
                video = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'video'] or ''),
                desc  = mw.text.trim(args['boss' .. i .. 'skill' .. j .. 'desc'] or '')
            })
            j = j + 1
        end

        -- Skills Hard
        j = 1
        while j <= 8 do
            local sNome = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'nome'] or '')
            if sNome == '' then break end
            table.insert(boss.hard, {
                nome  = sNome,
                video = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'video'] or ''),
                desc  = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'desc'] or '')
            })
            j = j + 1
        end

        table.insert(bosses, boss)
        i = i + 1
    end

    local json = mw.text.jsonEncode(bosses)

    local container = mw.html.create('div')
        :addClass('ba-wrap')
        :addClass('dark')
        :attr('id', 'ba-wrap')
        :attr('data-bosses', json)
        :attr('data-titulo', titulo)

    return tostring(container)
end

return p