Модуль:Entity Lookup: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| (не показано 15 промежуточных версий 2 участников) | |||
| Строка 1: | Строка 1: | ||
local | local p = {} | ||
local | local JsonPaths = require('Module:JsonPaths') | ||
local function safeLoad(page) | |||
local moduleName = JsonPaths.get(page) | |||
local ok, data = pcall(mw.loadData, moduleName) | |||
return ok and (data or {}) or {} | |||
end | |||
p.entities = safeLoad("entity prototypes.json") | |||
p.name_overrides = safeLoad("entity name overrides.json") | |||
local | local function buildName(entity, useSuffix) | ||
local name = entity.name or "" | |||
local label = mw.ustring.lower(entity.label or "") | |||
local suffix = "" | |||
if useSuffix then | |||
suffix = mw.ustring.lower(entity.suffix or "") | |||
if suffix ~= "" then | |||
local parts = {} | |||
for part in tostring(suffix):gmatch("[^,;]+") do | |||
part = mw.text.trim(part) | |||
if part ~= "" then | |||
parts[#parts + 1] = part | |||
end | |||
end | |||
suffix = table.concat(parts, ", ") | |||
end | |||
end | |||
if label ~= "" and suffix ~= "" and label == suffix then | |||
suffix = "" | |||
end | |||
if label == "" and suffix == "" then | |||
return name | |||
elseif label == "" then | |||
return name .. " (" .. suffix .. ")" | |||
elseif suffix == "" then | |||
return name .. " (" .. label .. ")" | |||
else | |||
return name .. " (" .. label .. ") (" .. suffix .. ")" | |||
end | |||
end | |||
| Строка 10: | Строка 50: | ||
function p.getname(frame, entid) -- {{#invoke:Entity Lookup|getname|ProtoID}} | function p.getname(frame, entid) -- {{#invoke:Entity Lookup|getname|ProtoID}} | ||
local id = frame.args and frame.args[1] or entid | local id = frame.args and frame.args[1] or entid | ||
if not id then return "Не найдено" end | if not id then | ||
return "Не найдено" | |||
end | |||
local override = p.name_overrides[id] | local override = p.name_overrides[id] | ||
if override then | if override then | ||
return override | return lower(override) | ||
end | end | ||
local entity = p.entities[id] | local entity = p.entities[id] | ||
if entity then | if not entity then | ||
return | return "Не найдено" | ||
end | end | ||
local useSuffix = frame.args and frame.args.suffix and frame.args.suffix ~= "" | |||
return buildName(entity, useSuffix) | |||
end | end | ||
| Строка 32: | Строка 74: | ||
if not name then return "Не найдено" end | if not name then return "Не найдено" end | ||
for id, overrideName in pairs(p.name_overrides) do | for id, overrideName in pairs(p.name_overrides) do | ||
if overrideName == name then | if overrideName == name then | ||
| Строка 39: | Строка 80: | ||
end | end | ||
for id, entity in pairs(p.entities) do | for id, entity in pairs(p.entities) do | ||
if entity.name == name then | if entity.name == name or buildName(entity) == name then | ||
return id | return id | ||
end | end | ||
| Строка 47: | Строка 87: | ||
return "Не найдено" | return "Не найдено" | ||
end | |||
-- p.getname{args={"FreedomImplant"}} | |||
function p.getdesc(frame, entid) -- {{#invoke:Entity Lookup|getdesc|ProtoID}} | |||
local out = "" | |||
local id = "" | |||
if frame.args[1] ~= nil then id = frame.args[1] | |||
else id = entid end | |||
local entity = p.entities[id] | |||
if entity ~= nil then | |||
out = entity.desc | |||
else | |||
out = "Не найдено" | |||
end | |||
return out | |||
end | end | ||
-- p.createtexttooltip{args={"Верхний текст", "FreedomImplant", "Файл: | -- p.createtexttooltip{args={"Верхний текст", "FreedomImplant", "Файл:Horns.png"}} | ||
function p.createtexttooltip(frame) -- {{#invoke:Entity Lookup|createtexttooltip|Текст|ProtoID|img=картиночка}} | function p.createtexttooltip(frame) -- {{#invoke:Entity Lookup|createtexttooltip|Текст|ProtoID|img=картиночка}} | ||
local out = " " | local out = " " | ||
| Строка 63: | Строка 118: | ||
-- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}} | -- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}} | ||
end else | end else | ||
out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|Не найден|Предмет не найден|img= | out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|Не найден|Предмет не найден|img=MobMouse2.png}}") | ||
end | end | ||
return out | return out | ||
| Строка 69: | Строка 124: | ||
-- p.createimagetooltip{args={"Файл: | -- p.createimagetooltip{args={"Файл:Horns.png", "FreedomImplant", Статы="Имеет 3 заряда"}} | ||
function p.createimagetooltip(frame) -- {{#invoke:Entity Lookup|createimagetooltip|Картинка|ProtoID|Мета=мета|Статы=статы}} | function p.createimagetooltip(frame) -- {{#invoke:Entity Lookup|createimagetooltip|Картинка|ProtoID|Мета=мета|Статы=статы}} | ||
local out = " " | local out = " " | ||
| Строка 85: | Строка 140: | ||
out = frame:preprocess("{{Tooltip|".. pic .. "|" .. entity.name .. "|" .. entity.desc .. "|" .. stats .."|no-text-decoration=1}}") | out = frame:preprocess("{{Tooltip|".. pic .. "|" .. entity.name .. "|" .. entity.desc .. "|" .. stats .."|no-text-decoration=1}}") | ||
end else | end else | ||
out = frame:preprocess("{{Tooltip|[[Файл: | out = frame:preprocess("{{Tooltip|[[Файл:MobMouse2.png|64x64px|left|middle|link=]]|" .. entity.name .. "|" .. entity.desc .. "|" .. stats .."|no-text-decoration=1}}") | ||
end | end | ||
-- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}} | -- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}} | ||
end else | end else | ||
out = frame:preprocess("{{Tooltip|" .. pic .. "|Не найден|Предмет не найден|img= | out = frame:preprocess("{{Tooltip|" .. pic .. "|Не найден|Предмет не найден|img=MobMouse2.png|no-text-decoration=1}}") | ||
end | end | ||
return out | return out | ||