Модуль:Entity Lookup: различия между версиями
Mhamster (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| (не показано 48 промежуточных версий 3 участников) | |||
| Строка 1: | Строка 1: | ||
local prototypes = mw. | local p = {} | ||
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 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 | |||
-- p.getname{args={"FreedomImplant"}} | |||
function p.getname(frame, entid) -- {{#invoke:Entity Lookup|getname|ProtoID}} | |||
local id = frame.args and frame.args[1] or entid | |||
if not id then | |||
return "Не найдено" | |||
end | |||
local override = p.name_overrides[id] | |||
if override then | |||
return lower(override) | |||
end | |||
local entity = p.entities[id] | |||
if not entity then | |||
return "Не найдено" | |||
end | |||
local useSuffix = frame.args and frame.args.suffix and frame.args.suffix ~= "" | |||
return buildName(entity, useSuffix) | |||
end | |||
-- p.getidbyname{args={"Швабра"}} | |||
function p.getidbyname(frame, entname) -- {{#invoke:Entity Lookup|getidbyname|Название}} | |||
local name = frame.args and frame.args[1] or entname | |||
if not name then return "Не найдено" end | |||
for id, overrideName in pairs(p.name_overrides) do | |||
if overrideName == name then | |||
return id | |||
end | |||
end | |||
for id, entity in pairs(p.entities) do | |||
if entity.name == name or buildName(entity) == name then | |||
return id | |||
end | |||
end | |||
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 | |||
-- p.createtexttooltip{args={"Верхний текст", "FreedomImplant", "Файл:Horns.png"}} | |||
function p.createtexttooltip(frame) -- {{#invoke:Entity Lookup|createtexttooltip|Текст|ProtoID|img=картиночка}} | |||
local out = " " | |||
local entity = p.entities[frame.args[2]] | |||
local stats = frame:preprocess("{{Особое|".. frame.args[2] .."}}") | |||
if entity ~= nil then do | |||
if frame.args["img"] ~= nil then do | |||
out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|".. entity.name .."|".. string.gsub(entity.desc, "\n", "<br>") .."|".. stats .."|img=".. frame.args["img"] .."}}") | |||
end else | |||
out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|".. entity.name .."|".. string.gsub(entity.desc, "\n", "<br>") .."|".. stats .."}}") | |||
end | |||
-- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}} | |||
end else | |||
out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|Не найден|Предмет не найден|img=MobMouse2.png}}") | |||
end | |||
return out | |||
end | |||
-- p. | -- p.createimagetooltip{args={"Файл:Horns.png", "FreedomImplant", Статы="Имеет 3 заряда"}} | ||
function p. | function p.createimagetooltip(frame) -- {{#invoke:Entity Lookup|createimagetooltip|Картинка|ProtoID|Мета=мета|Статы=статы}} | ||
local out = " " | |||
local entity = p.entities[frame.args[2]] | |||
local pic = frame.args[1] | |||
local meta = frame.args["Мета"] | |||
local stats = frame:preprocess("{{Особое|".. frame.args[2] .."}}") | |||
if meta == nil then | |||
meta = "64x64px|link=" | |||
end | |||
meta = meta:gsub(',', '|') | |||
pic = "[[" .. frame.args[1] .. "|" .. meta .. "]]" | |||
if entity ~= nil then do | |||
if frame.args[1] ~= nil then do | |||
out = frame:preprocess("{{Tooltip|".. pic .. "|" .. entity.name .. "|" .. entity.desc .. "|" .. stats .."|no-text-decoration=1}}") | |||
end else | |||
out = frame:preprocess("{{Tooltip|[[Файл:MobMouse2.png|64x64px|left|middle|link=]]|" .. entity.name .. "|" .. entity.desc .. "|" .. stats .."|no-text-decoration=1}}") | |||
end | |||
-- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}} | |||
end else | |||
out = frame:preprocess("{{Tooltip|" .. pic .. "|Не найден|Предмет не найден|img=MobMouse2.png|no-text-decoration=1}}") | |||
end | |||
return out | |||
end | end | ||
return p | return p | ||