打开/关闭菜单
324
1711
132
1.2万
星露谷物语扩展百科
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:Items:修订间差异

来自星露谷物语扩展百科
删除的内容 添加的内容
Sizau留言 | 贡献
无编辑摘要
Sizau留言 | 贡献
无编辑摘要
第2行: 第2行:


local zh = {
local zh = {
nameById = mw.loadData("Module:Items/zh/ids/name"),
nameById = mw.loadData("Module:Items/zh/ids/name"),
idByName = mw.loadData("Module:Items/zh/name/ids"),
idByName = mw.loadData("Module:Items/zh/name/ids"),
descById = mw.loadData("Module:Items/zh/id/desc"),
descById = mw.loadData("Module:Items/zh/id/desc"),
descByName = mw.loadData("Module:Items/zh/name/desc")
descByName = mw.loadData("Module:Items/zh/name/desc")
}
}
第21行: 第21行:


function p.getEnglishName(input)
function p.getEnglishName(input)
local text = utils.getArg(input)
local text = utils.normalizeKey(utils.getArg(input))
if not text then return "" end
if not text then return "" end
if overrides.name[text] then return overrides.name[text] end
text = text:lower():gsub("_", " ")
if overrides.name[text] then
return overrides.name[text]
end
local id = zh.idByName[text]
local id = zh.idByName[text]
return id and en.nameById[id] or ""
return id and en.nameById[id] or ""
第32行: 第29行:


function p.getChineseName(input)
function p.getChineseName(input)
local text = utils.getArg(input)
local text = utils.normalizeKey(utils.getArg(input))
if not text then return "" end
if not text then return "" end
local id = en.idByName[text]
local id = en.idByName[text]
第39行: 第36行:


function p.getDescription(input)
function p.getDescription(input)
local text = utils.getArg(input)
local text = utils.normalizeKey(utils.getArg(input))
if not text then return "" end
if not text then return "" end
if overrides.desc[text] then return overrides.desc[text] end
local text = text:lower():gsub("_", " ")
local tmp = overrides.desc[text]
if zh.descByName[text] then return zh.descByName[text] end
if tmp then return tmp end
if zh.descByName[text] then
return zh.descByName[text]
end
local id = en.idByName[text]
local id = en.idByName[text]
if id then
if id then
local tmp = zh.nameById[id]
local chineseName = zh.nameById[id]
if tmp and zh.descByName[tmp] then
if chineseName and zh.descByName[chineseName] then
return zh.descByName[tmp]
return zh.descByName[chineseName]
end
end
end
end
if zh.descById[text] then
if zh.descById[text] then return zh.descById[text] end
return zh.descById[text]
end
return ""
return ""
end
end
第63行: 第54行:
local args = frame.args
local args = frame.args
if frame == mw.getCurrentFrame() then
if frame == mw.getCurrentFrame() then
args = require('Module:Arguments').getArgs(frame, {
args = require('Module:Arguments').getArgs(frame,
wrappers = 'Template:Name'
{wrappers = 'Template:Name'})
})
end
end

local inputName = args[1] or ""
local inputName = args[1] or ""
local description = args[2] or ""
local description = args[2] or ""
第74行: 第64行:
local alt = args.alt
local alt = args.alt
local class = args.class
local class = args.class

local imageName = inputName
local imageName = inputName
if not utils.fileExists(inputName .. ".png") then
if not utils.fileExists(inputName .. ".png") then
local englishName = p.getEnglishName(inputName)
local englishName = p.getEnglishName(inputName)
if englishName and englishName ~= "" and utils.fileExists(englishName .. ".png") then
if englishName and englishName ~= "" and
utils.fileExists(englishName .. ".png") then
imageName = englishName
imageName = englishName
else
else
第84行: 第75行:
end
end
end
end

local linkText
local linkText
if link then
if link then
第98行: 第89行:
end
end
end
end

local cssClass = "nametemplate"
local cssClass = "nametemplate"
if class == "inline" then
if class == "inline" then cssClass = cssClass .. "inline" end

cssClass = cssClass .. "inline"
end
local result = string.format(
local result = string.format(
'<span class="%s">[[File:%s.png|%spx|link=]] %s%s</span>',
'<span class="%s">[[File:%s.png|%spx|link=]] %s%s</span>',
cssClass,
cssClass, imageName, size, linkText,
description ~= "" and "(" .. description .. ")" or "")
imageName,

size,
linkText,
description ~= "" and "(" .. description .. ")" or ""
)
return result
return result
end
end
第123行: 第108行:
})
})
end
end

local itemType = args[1] or ""
local itemType = args[1] or ""
local itemName = args[2] or ""
local itemName = args[2] or ""

local itemTypeLower = itemType:lower()
local itemTypeLower = itemType:lower()

local specialDescriptions = {
if itemTypeLower == "recipe" or itemTypeLower == "食谱" or itemTypeLower == "配方" then
return "一个用于制作" .. itemName .. "的配方"
recipe = "一个用于制作" .. itemName .. "的配方",
["食谱"] = "一个用于制作" .. itemName .. "的配方",
end
["配方"] = "一个用于制作" .. itemName .. "的配方",
if itemTypeLower == "blueprint" or itemTypeLower == "图" then
blueprint = "用于制造" .. itemName .. "的设计图",
return "用于制造" .. itemName .. "的设计图"
["图纸"] = "用于制造" .. itemName .. "的设计图"
end
}

return p.getDescription(itemType)
return specialDescriptions[itemTypeLower] or p.getDescription(itemType)
end
end



2025年10月13日 (一) 20:03的版本

[ 创建 | 刷新 ]文档页面
当前模块文档缺失,需要扩充。
local utils = require("Module:Utils")

local zh = {
    nameById = mw.loadData("Module:Items/zh/ids/name"),
    idByName = mw.loadData("Module:Items/zh/name/ids"),
    descById = mw.loadData("Module:Items/zh/id/desc"),
    descByName = mw.loadData("Module:Items/zh/name/desc")
}

local en = {
    nameById = mw.loadData("Module:Items/en/ids/name"),
    idByName = mw.loadData("Module:Items/en/name/ids")
}

local overrides = {
    name = mw.loadData("Module:Items/overrides/name"),
    desc = mw.loadData("Module:Items/overrides/description")
}

local p = {}

function p.getEnglishName(input)
    local text = utils.normalizeKey(utils.getArg(input))
    if not text then return "" end
    if overrides.name[text] then return overrides.name[text] end
    local id = zh.idByName[text]
    return id and en.nameById[id] or ""
end

function p.getChineseName(input)
    local text = utils.normalizeKey(utils.getArg(input))
    if not text then return "" end
    local id = en.idByName[text]
    return id and zh.nameById[id] or ""
end

function p.getDescription(input)
    local text = utils.normalizeKey(utils.getArg(input))
    if not text then return "" end
    if overrides.desc[text] then return overrides.desc[text] end
    if zh.descByName[text] then return zh.descByName[text] end
    local id = en.idByName[text]
    if id then
        local chineseName = zh.nameById[id]
        if chineseName and zh.descByName[chineseName] then
            return zh.descByName[chineseName]
        end
    end
    if zh.descById[text] then return zh.descById[text] end
    return ""
end

function p.renderName(frame)
    local args = frame.args
    if frame == mw.getCurrentFrame() then
        args = require('Module:Arguments').getArgs(frame,
                                                   {wrappers = 'Template:Name'})
    end

    local inputName = args[1] or ""
    local description = args[2] or ""
    local size = args.size or "24"
    local link = args.link
    local alt = args.alt
    local class = args.class

    local imageName = inputName
    if not utils.fileExists(inputName .. ".png") then
        local englishName = p.getEnglishName(inputName)
        if englishName and englishName ~= "" and
            utils.fileExists(englishName .. ".png") then
            imageName = englishName
        else
            imageName = "Blank icon"
        end
    end

    local linkText
    if link then
        linkText = "[[" .. link .. "]]"
    elseif alt then
        linkText = "[[" .. alt .. "]]"
    else
        local chineseName = '' -- reserved placeholder
        if chineseName and chineseName ~= "" then
            linkText = "[[" .. chineseName .. "]]"
        else
            linkText = "[[" .. inputName .. "]]"
        end
    end

    local cssClass = "nametemplate"
    if class == "inline" then cssClass = cssClass .. "inline" end

    local result = string.format(
                       '<span class="%s">[[File:%s.png|%spx|link=]] %s%s</span>',
                       cssClass, imageName, size, linkText,
                       description ~= "" and "(" .. description .. ")" or "")

    return result
end

function p.renderDescription(frame)
    local args = frame.args
    if frame == mw.getCurrentFrame() then
        args = require('Module:Arguments').getArgs(frame, {
            wrappers = 'Template:Description'
        })
    end

    local itemType = args[1] or ""
    local itemName = args[2] or ""

    local itemTypeLower = itemType:lower()

    local specialDescriptions = {
        recipe = "一个用于制作" .. itemName .. "的配方",
        ["食谱"] = "一个用于制作" .. itemName .. "的配方",
        ["配方"] = "一个用于制作" .. itemName .. "的配方",
        blueprint = "用于制造" .. itemName .. "的设计图",
        ["图纸"] = "用于制造" .. itemName .. "的设计图"
    }

    return specialDescriptions[itemTypeLower] or p.getDescription(itemType)
end

return p