익명
×
새 문서 만들기
여기에 문서 제목을 쓰세요:
We currently have 900 articles on 루리위키. Type your article name above or click on one of the titles below and start writing!



900Articles

모듈:궤적시리즈/하늘의 궤적/캐릭터 스테이터스: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
1번째 줄: 1번째 줄:
local p = {}
local p = {}


function p.renderStatRow(frame)
-- 쉼표로 구분된 문자열을 숫자 배열로 변환
     local name  = frame.args.name or ""
local function parseValues(str)
     local value = frame.args.HP or ""
     local values = {}
    local rowIndex = tonumber(frame.args.row or 1)
     for val in string.gmatch(str or "", "([^,]+)") do
        table.insert(values, val)
    end
    return values
end


    -- 능력치 이름 열
function p.renderCharacterStats(frame)
     local tdStyleName = "background-color:#446DFF; color:white; padding:6px; text-align:left; font-weight:bold; width:30%;"
     local stats = {
        {name="HP", vals=parseValues(frame.args.HP)},
        {name="STR", vals=parseValues(frame.args.STR)},
        {name="DEF", vals=parseValues(frame.args.DEF)},
        {name="ATS", vals=parseValues(frame.args.ATS)},
        {name="ADF", vals=parseValues(frame.args.ADF)},
        {name="DEX", vals=parseValues(frame.args.DEX)},
        {name="AGL", vals=parseValues(frame.args.AGL)},
        {name="MOV", vals=parseValues(frame.args.MOV)},
        {name="RNG", vals=parseValues(frame.args.RNG)},
        {name="SPD", vals=parseValues(frame.args.SPD)},
        {name="HIT", vals=parseValues(frame.args.HIT)},
        {name="CRT", vals=parseValues(frame.args.CRT)},
        {name="EVA", vals=parseValues(frame.args.EVA)},
        {name="MEVA", vals=parseValues(frame.args.MEVA)}
    }


     -- 입력값 열: 행 단위 홀짝
     local html = mw.html.create("div"):css{
    local tdStyleValue = (rowIndex % 2 == 1) and "background-color:#EDF3FF; padding:6px; width:17.5%;" or "padding:6px; width:17.5%;"
        display="flex", flex_wrap="wrap", gap="10px",
        justify_content="center", align_items="flex-start"
    }


     local html = mw.html.create("tr")
     local function makeTable(tblStats)
    html:tag("td"):attr("style", tdStyleName):wikitext(name)
        local tbl = mw.html.create("table"):addClass("wikitable")
    html:tag("td"):attr("style", tdStyleValue):wikitext(value) -- 성장치
            :css{
    html:tag("td"):attr("style", tdStyleValue):wikitext("")   -- Lv1
                flex="1", min_width="300px", text_align="center", border_collapse="collapse",
    html:tag("td"):attr("style", tdStyleValue):wikitext("")   -- Lv50
                margin="0", border_radius="8px", overflow="hidden", border_style="hidden"
    html:tag("td"):attr("style", tdStyleValue):wikitext("")   -- Lv120
            }
 
        -- 헤더
        tbl:tag("tr")
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:30%"):wikitext("능력치")
            :done()
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("성장치")
            :done()
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv1")
            :done()
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv50")
            :done()
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv120")
 
        -- 각 행
        for i, stat in ipairs(tblStats) do
            local tr = tbl:tag("tr")
            -- 능력치 이름
            tr:tag("td"):css("background-color","#446DFF;color:white;font-weight:bold;text-align:left;padding:6px"):wikitext(stat.name)
            -- 입력값: 홀짝행 색 적용
            local bg = (i % 2 == 1) and "#EDF3FF" or ""
            for j=1,4 do
                tr:tag("td"):css("background-color",bg):css("padding","6px"):css("width","17.5%"):wikitext(stat.vals[j] or "")
            end
        end
 
        return tbl
    end
 
    -- 왼쪽/오른쪽 표를 나눠서 표시
    html:node(makeTable({unpack(stats,1,7)}))
    html:node(makeTable({unpack(stats,8,14)}))


     return tostring(html)
     return tostring(html)

2025년 11월 22일 (토) 02:39 판

이 모듈에 대한 설명문서는 모듈:궤적시리즈/하늘의 궤적/캐릭터 스테이터스/설명문서에서 만들 수 있습니다

local p = {}

-- 쉼표로 구분된 문자열을 숫자 배열로 변환
local function parseValues(str)
    local values = {}
    for val in string.gmatch(str or "", "([^,]+)") do
        table.insert(values, val)
    end
    return values
end

function p.renderCharacterStats(frame)
    local stats = {
        {name="HP", vals=parseValues(frame.args.HP)},
        {name="STR", vals=parseValues(frame.args.STR)},
        {name="DEF", vals=parseValues(frame.args.DEF)},
        {name="ATS", vals=parseValues(frame.args.ATS)},
        {name="ADF", vals=parseValues(frame.args.ADF)},
        {name="DEX", vals=parseValues(frame.args.DEX)},
        {name="AGL", vals=parseValues(frame.args.AGL)},
        {name="MOV", vals=parseValues(frame.args.MOV)},
        {name="RNG", vals=parseValues(frame.args.RNG)},
        {name="SPD", vals=parseValues(frame.args.SPD)},
        {name="HIT", vals=parseValues(frame.args.HIT)},
        {name="CRT", vals=parseValues(frame.args.CRT)},
        {name="EVA", vals=parseValues(frame.args.EVA)},
        {name="MEVA", vals=parseValues(frame.args.MEVA)}
    }

    local html = mw.html.create("div"):css{
        display="flex", flex_wrap="wrap", gap="10px",
        justify_content="center", align_items="flex-start"
    }

    local function makeTable(tblStats)
        local tbl = mw.html.create("table"):addClass("wikitable")
            :css{
                flex="1", min_width="300px", text_align="center", border_collapse="collapse",
                margin="0", border_radius="8px", overflow="hidden", border_style="hidden"
            }

        -- 헤더
        tbl:tag("tr")
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:30%"):wikitext("능력치")
            :done()
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("성장치")
            :done()
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv1")
            :done()
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv50")
            :done()
            :tag("th"):css("background-color","#2E3B84;color:white;padding:8px;width:17.5%"):wikitext("Lv120")

        -- 각 행
        for i, stat in ipairs(tblStats) do
            local tr = tbl:tag("tr")
            -- 능력치 이름
            tr:tag("td"):css("background-color","#446DFF;color:white;font-weight:bold;text-align:left;padding:6px"):wikitext(stat.name)
            -- 입력값: 홀짝행 색 적용
            local bg = (i % 2 == 1) and "#EDF3FF" or ""
            for j=1,4 do
                tr:tag("td"):css("background-color",bg):css("padding","6px"):css("width","17.5%"):wikitext(stat.vals[j] or "")
            end
        end

        return tbl
    end

    -- 왼쪽/오른쪽 표를 나눠서 표시
    html:node(makeTable({unpack(stats,1,7)}))
    html:node(makeTable({unpack(stats,8,14)}))

    return tostring(html)
end

return p