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

De Wiki Gla
Ir para navegação Ir para pesquisar
 
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"
    else
        local s = tostring(num)
        return s:reverse():gsub("(%d%d%d)", "%1."):reverse():gsub("^%.", "")
    end
end


local function parseEntry(entry)
    local bosses = {}
    entry = mw.text.trim(entry)
     local i = 1
    if entry == "" then return nil, nil end
     while true do
     local ident, qtd
         local nome = mw.text.trim(args['boss' .. i .. 'nome'] or '')
    if entry:find(";") then
        if nome == '' then break end
        ident, qtd = entry:match("^(.-)%s*;%s*(%d+)$")
     else
         ident, qtd = entry:match("^(.-)%s*:%s*(%d+)$")
    end
    if not ident or not qtd then return nil, nil end
    return mw.text.trim(ident), tonumber(qtd)
end


function p.reward(frame)
        local boss = {
    local args = frame:getParent().args
            nome = nome,
    local raw  = mw.text.trim(args["itens"] or "")
            elite = {},
    local lang = mw.text.trim(args["lang"] or "pt")
            hard = {}
    if raw == "" then return "" end
        }


    local wrap = mw.html.create("div"):addClass("lk-reward-wrap")
        -- Skills Elite
    wrap:tag("div"):addClass("lk-reward-lbl"):wikitext("Recompensa Final")
        local j = 1
    local line = wrap:tag("div"):addClass("reward-items")
        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


    for entry in mw.text.gsplit(raw, ",", true) do
        -- Skills Hard
         local ident, qty = parseEntry(entry)
         j = 1
         if ident and qty then
         while j <= 8 do
             local item = Item.resolve(ident)
             local sNome = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'nome'] or '')
             if not item then
             if sNome == '' then break end
                item = {
            table.insert(boss.hard, {
                    id = 0,
                nome  = sNome,
                    image = ident:match("%.%w+$") and ident or (ident .. ".png"),
                video = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'video'] or ''),
                    names = { pt = ident, en = ident },
                desc  = mw.text.trim(args['boss' .. i .. 'hskill' .. j .. 'desc'] or '')
                    category = "misc"
             })
                }
            j = j + 1
            end
            line:wikitext(Item.renderOne(item, formatNumber(qty), lang, {
                showTooltip = true,
                showCount = true
             }))
         end
         end
        table.insert(bosses, boss)
        i = i + 1
     end
     end


     return tostring(wrap)
    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
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