Модуль:Entity Lookup: различия между версиями

мНет описания правки
Нет описания правки
 
(не показано 15 промежуточных версий 2 участников)
Строка 1: Строка 1:
local prototypes = mw.loadData("Module:Entity Lookup/data")
local p = {}
local overrides = mw.loadData("Module:Entity Lookup/names")
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 p = {}
local function buildName(entity, useSuffix)
p.entities = prototypes.entities
local name = entity.name or ""
p.name_overrides = overrides.name_overrides 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


-- Сначала проверяем наличие в overrides
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 entity.name
return "Не найдено"
end
end


return "Не найдено"
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


-- Сначала ищем в overrides
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


-- Затем ищем в prototypes
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", "Файл:Honks.gif"}}
-- 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=Mousegif.gif}}")
  out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|Не найден|Предмет не найден|img=MobMouse2.png}}")
end
end
return out
return out
Строка 69: Строка 124:




-- p.createimagetooltip{args={"Файл:Honks.gif", "FreedomImplant", Статы="Имеет 3 заряда"}}
-- 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|[[Файл:Mousegif.gif|64x64px|left|middle|link=]]|" .. entity.name .. "|" .. entity.desc .. "|" .. stats .."|no-text-decoration=1}}")
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=Mousegif.gif|no-text-decoration=1}}")
  out = frame:preprocess("{{Tooltip|" .. pic .. "|Не найден|Предмет не найден|img=MobMouse2.png|no-text-decoration=1}}")
end
end
return out
return out