模块:Items:修订间差异
来自星露谷物语扩展百科
更多操作
删除的内容 添加的内容
无编辑摘要 |
|||
| (未显示同一用户的12个中间版本) | |||
| 第2行: | 第2行: | ||
local zh = { |
local zh = { |
||
nameById |
nameById = mw.loadData("Module:Items/zh/ids/name"), |
||
idByName |
idByName = mw.loadData("Module:Items/zh/name/ids"), |
||
descById |
descById = mw.loadData("Module:Items/zh/id/desc"), |
||
descByName = mw.loadData("Module:Items/zh/name/desc") |
descByName = mw.loadData("Module:Items/zh/name/desc"), |
||
nameByUniqueId = mw.loadData("Module:Items/zh/id/name") |
|||
} |
} |
||
local en = { |
local en = { |
||
nameById = mw.loadData("Module:Items/en/ids/name"), |
nameById = mw.loadData("Module:Items/en/ids/name"), |
||
idByName = mw.loadData("Module:Items/en/name/ids") |
idByName = mw.loadData("Module:Items/en/name/ids"), |
||
nameByUniqueId = mw.loadData("Module:Items/en/id/name") |
|||
} |
} |
||
local overrides = { |
local overrides = { |
||
name = mw.loadData("Module:Items/overrides/name"), |
name = mw.loadData("Module:Items/overrides/name"), |
||
desc = mw.loadData("Module:Items/overrides/description") |
desc = mw.loadData("Module:Items/overrides/description"), |
||
uniqueId = mw.loadData("Module:Items/overrides/id"), |
|||
itemId = mw.loadData("Module:Items/overrides/items") |
|||
} |
} |
||
| 第21行: | 第25行: | ||
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 |
||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
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行: | 第32行: | ||
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] |
||
return id and zh.nameById[id] or "" |
return id and zh.nameById[id] or "" |
||
| 第39行: | 第40行: | ||
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 |
||
| ⚫ | |||
local text = text:lower():gsub("_", " ") |
|||
if zh.descByName[text] then return zh.descByName[text] end |
|||
| ⚫ | |||
if zh.descByName[text] then |
|||
return zh.descByName[text] |
|||
| ⚫ | |||
local id = en.idByName[text] |
local id = en.idByName[text] |
||
if id then |
if id then |
||
local |
local chineseName = zh.nameById[id] |
||
if |
if chineseName and zh.descByName[chineseName] then |
||
return zh.descByName[ |
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] |
|||
| ⚫ | |||
return "" |
return "" |
||
| ⚫ | |||
function p.getChineseNameById(input) |
|||
local text = utils.normalizeKey(utils.getArg(input)) |
|||
return text and (overrides.uniqueId[text] or zh.nameByUniqueId[text]) or "" |
|||
| ⚫ | |||
function p.getEnglishNameById(input) |
|||
local text = utils.normalizeKey(utils.getArg(input)) |
|||
| ⚫ | |||
return text and en.nameByUniqueId[text] or "" |
|||
| ⚫ | |||
function p.getId(input) |
|||
local text = utils.normalizeKey(utils.getArg(input)) |
|||
if not text then return "" end |
|||
local result = en.idByName[text] or zh.idByName[text] or overrides.itemId[text] or "" |
|||
return result |
|||
| ⚫ | |||
function p.getItemId(input) |
|||
local result = p.getId(input) |
|||
| ⚫ | |||
return result |
|||
end |
end |
||
| 第63行: | 第82行: | ||
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行: | 第92行: | ||
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 |
|||
imageName = englishName |
imageName = englishName |
||
else |
else |
||
| 第84行: | 第103行: | ||
end |
end |
||
end |
end |
||
local linkText |
local linkText |
||
if link then |
if link then |
||
| 第91行: | 第110行: | ||
linkText = "[[" .. alt .. "]]" |
linkText = "[[" .. alt .. "]]" |
||
else |
else |
||
local chineseName = |
local chineseName = p.getChineseName(inputName) |
||
if chineseName and chineseName ~= "" then |
if chineseName and chineseName ~= "" then |
||
linkText = "[[" .. chineseName .. "]]" |
linkText = "[[" .. chineseName .. "]]" |
||
| 第98行: | 第117行: | ||
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" |
|||
| ⚫ | |||
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, |
||
| ⚫ | |||
imageName, |
|||
size, |
|||
linkText, |
|||
| ⚫ | |||
) |
|||
return result |
return result |
||
end |
end |
||
| 第123行: | 第136行: | ||
}) |
}) |
||
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 |
|||
recipe = "一个用于制作" .. itemName .. "的配方", |
|||
["食谱"] = "一个用于制作" .. itemName .. "的配方", |
|||
end |
|||
["配方"] = "一个用于制作" .. itemName .. "的配方", |
|||
blueprint = "用于制造" .. itemName .. "的设计图", |
|||
["图纸"] = "用于制造" .. itemName .. "的设计图" |
|||
} |
|||
return p.getDescription(itemType) |
return specialDescriptions[itemTypeLower] or p.getDescription(itemType) |
||
end |
end |
||
2025年10月15日 (三) 06: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"),
nameByUniqueId = mw.loadData("Module:Items/zh/id/name")
}
local en = {
nameById = mw.loadData("Module:Items/en/ids/name"),
idByName = mw.loadData("Module:Items/en/name/ids"),
nameByUniqueId = mw.loadData("Module:Items/en/id/name")
}
local overrides = {
name = mw.loadData("Module:Items/overrides/name"),
desc = mw.loadData("Module:Items/overrides/description"),
uniqueId = mw.loadData("Module:Items/overrides/id"),
itemId = mw.loadData("Module:Items/overrides/items")
}
local p = {}
function p.getEnglishName(input)
local text = utils.normalizeKey(utils.getArg(input))
if not text then return "" 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
if overrides.name[text] then return overrides.name[text] 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.getChineseNameById(input)
local text = utils.normalizeKey(utils.getArg(input))
return text and (overrides.uniqueId[text] or zh.nameByUniqueId[text]) or ""
end
function p.getEnglishNameById(input)
local text = utils.normalizeKey(utils.getArg(input))
if not text then return "" end
return text and en.nameByUniqueId[text] or ""
end
function p.getId(input)
local text = utils.normalizeKey(utils.getArg(input))
if not text then return "" end
local result = en.idByName[text] or zh.idByName[text] or overrides.itemId[text] or ""
return result
end
function p.getItemId(input)
local result = p.getId(input)
result = result:gsub("\\", "<br />")
return result
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 = p.getChineseName(inputName)
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