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

模块:Items:修订间差异

来自星露谷物语扩展百科
删除的内容 添加的内容
Sizau留言 | 贡献
无编辑摘要
Sizau留言 | 贡献
撤销Sizau讨论)的版本132489
第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.normalizeKey(utils.getArg(input))
local text = utils.getArg(input)
if not text then return "" end
if not text then return "" end
text = text:lower():gsub("_", " ")
if overrides.name[text] then return overrides.name[text] end
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 ""
第29行: 第32行:


function p.getChineseName(input)
function p.getChineseName(input)
local text = utils.normalizeKey(utils.getArg(input))
local text = 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]
第36行: 第39行:


function p.getDescription(input)
function p.getDescription(input)
local text = utils.normalizeKey(utils.getArg(input))
local text = utils.getArg(input)
if not text then return "" end
if not text then return "" end
local text = text:lower():gsub("_", " ")
if overrides.desc[text] then return overrides.desc[text] end
if zh.descByName[text] then return zh.descByName[text] end
local tmp = overrides.desc[text]
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 chineseName = zh.nameById[id]
local tmp = zh.nameById[id]
if chineseName and zh.descByName[chineseName] then
if tmp and zh.descByName[tmp] then
return zh.descByName[chineseName]
return zh.descByName[tmp]
end
end
end
end
if zh.descById[text] then return zh.descById[text] end
if zh.descById[text] then
return zh.descById[text]
end
return ""
return ""
end
end
第54行: 第63行:
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 ""
第64行: 第74行:
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
if englishName and englishName ~= "" and utils.fileExists(englishName .. ".png") then
utils.fileExists(englishName .. ".png") then
imageName = englishName
imageName = englishName
else
else
第75行: 第84行:
end
end
end
end

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

local cssClass = "nametemplate"
local cssClass = "nametemplate"
if class == "inline" then cssClass = cssClass .. "inline" end
if class == "inline" then
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, imageName, size, linkText,
cssClass,
imageName,
description ~= "" and "(" .. description .. ")" or "")
size,

linkText,
description ~= "" and "(" .. description .. ")" or ""
)
return result
return result
end
end
第108行: 第123行:
})
})
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()

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

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



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

[ 创建 | 刷新 ]文档页面
当前模块文档缺失,需要扩充。
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.getArg(input)
    if not text then return "" end
    text = text:lower():gsub("_", " ")
    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.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.getArg(input)
    if not text then return "" end
    local text = text:lower():gsub("_", " ")
    local tmp = overrides.desc[text]
    if tmp then return tmp end
    if zh.descByName[text] then
        return zh.descByName[text]
    end
    local id = en.idByName[text]
    if id then
        local tmp = zh.nameById[id]
        if tmp and zh.descByName[tmp] then
            return zh.descByName[tmp]
        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()
    
    if itemTypeLower == "recipe" or itemTypeLower == "食谱" or itemTypeLower == "配方" then
        return "一个用于制作" .. itemName .. "的配方"
    end
    
    if itemTypeLower == "blueprint" or itemTypeLower == "图纸" then
        return "用于制造" .. itemName .. "的设计图"
    end
    
    return p.getDescription(itemType)
end

return p