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

Материал из Space Station 14 Вики
мНет описания правки
м поддержка суффиксов
Метка: отменено
Строка 5: Строка 5:
p.entities = prototypes.entities
p.entities = prototypes.entities
p.name_overrides = overrides.name_overrides or {}
p.name_overrides = overrides.name_overrides or {}


-- p.getname{args={"FreedomImplant"}}
-- p.getname{args={"FreedomImplant"}}
Строка 12: Строка 11:
if not id then return "Не найдено" end
if not id then return "Не найдено" end


local override = p.name_overrides[id]
if p.name_overrides[id] then
if override then
return p.name_overrides[id]
return override
end
end


local entity = p.entities[id]
local entity = p.entities[id]
if entity then
if entity then
return entity.name
local name = entity.name or ""
if entity.suffix and entity.suffix ~= "" then
name = name .. " (" .. entity.suffix .. ")"
end
return name
end
end


return "Не найдено"
return "Не найдено"
end
end


-- p.getidbyname{args={"Швабра"}}
-- p.getidbyname{args={"Швабра"}}
Строка 38: Строка 39:


for id, entity in pairs(p.entities) do
for id, entity in pairs(p.entities) do
if entity.name == name then
local actualName = entity.name
if entity.suffix and entity.suffix ~= "" then
actualName = actualName .. " (" .. entity.suffix .. ")"
end
if actualName == name then
return id
return id
end
end
Строка 46: Строка 51:
end
end


 
-- p.getdesc{args={"FreedomImplant"}}
-- p.getname{args={"FreedomImplant"}}
function p.getdesc(frame, entid) -- {{#invoke:Entity Lookup|getdesc|ProtoID}}
function p.getdesc(frame, entid) -- {{#invoke:Entity Lookup|getdesc|ProtoID}}
    local out = ""
local id = frame.args and frame.args[1] or entid
    local id = ""
local entity = p.entities[id]
    if frame.args[1] ~= nil then id = frame.args[1]  
if entity then
    else id = entid end
return entity.desc or ""
    local entity = p.entities[id]
end
    if entity ~= nil then
return "Не найдено"
        out = entity.desc
    else
        out = "Не найдено"
    end
return out
end
end


-- p.createtexttooltip{args={"Верхний текст", "FreedomImplant", "Файл:Honks.gif"}}
-- p.createtexttooltip{args={"Верхний текст", "FreedomImplant", "Файл:Honks.gif"}}
function p.createtexttooltip(frame) -- {{#invoke:Entity Lookup|createtexttooltip|Текст|ProtoID|img=картиночка}}
function p.createtexttooltip(frame) -- {{#invoke:Entity Lookup|createtexttooltip|Текст|ProtoID|img=картиночка}}
local out = " "
local args = frame.args
local entity = p.entities[frame.args[2]]
local label, id, img = args[1], args[2], args.img
local stats = frame:preprocess("{{Особое|".. frame.args[2] .."}}")
local entity = p.entities[id]
if entity ~= nil then do
local stats = frame:preprocess("{{Особое|" .. id .. "}}")
if frame.args["img"] ~= nil then do
if entity then
out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|".. entity.name .."|".. string.gsub(entity.desc, "\n", "<br>") .."|".. stats .."|img=".. frame.args["img"] .."}}")
local displayName = entity.name
end else
if entity.suffix and entity.suffix ~= "" then
out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|".. entity.name .."|".. string.gsub(entity.desc, "\n", "<br>") .."|".. stats .."}}")
displayName = displayName .. " (" .. entity.suffix .. ")"
end
local desc = string.gsub(entity.desc or "", "\n", "<br>")
if img then
return frame:preprocess("{{Tooltip|" .. label .. "|" .. displayName .. "|" .. desc .. "|" .. stats .. "|img=" .. img .. "}}")
else
return frame:preprocess("{{Tooltip|" .. label .. "|" .. displayName .. "|" .. desc .. "|" .. stats .. "}}")
end
end
-- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}}
end else
  out = frame:preprocess("{{Tooltip|".. frame.args[1] .."|Не найден|Предмет не найден|img=Mousegif.gif}}")
end
end
return out
return frame:preprocess("{{Tooltip|" .. label .. "|Не найден|Предмет не найден|img=Mousegif.gif}}")
end
end


-- p.createimagetooltip{args={"Файл:Honks.gif", "FreedomImplant", Статы="Имеет 3 заряда"}}
-- p.createimagetooltip{args={"Файл:Honks.gif", "FreedomImplant", Статы="Имеет 3 заряда"}}
function p.createimagetooltip(frame) -- {{#invoke:Entity Lookup|createimagetooltip|Картинка|ProtoID|Мета=мета|Статы=статы}}
function p.createimagetooltip(frame) -- {{#invoke:Entity Lookup|createimagetooltip|Картинка|ProtoID|Мета=мета|Статы=статы}}
local out = " "
local picFile, id = frame.args[1], frame.args[2]
local entity = p.entities[frame.args[2]]
local meta = frame.args["Мета"] or "64x64px|link="
local pic = frame.args[1]
local stats = frame:preprocess("{{Особое|" .. id .. "}}")
local meta = frame.args["Мета"]
local stats = frame:preprocess("{{Особое|".. frame.args[2] .."}}")
if meta == nil then
meta = "64x64px|link="
end
meta = meta:gsub(',', '|')
meta = meta:gsub(',', '|')
pic = "[[" .. frame.args[1] .. "|" .. meta .. "]]"
local pic = string.format("[[%s|%s]]", picFile, meta)
if entity ~= nil then do
local entity = p.entities[id]
if frame.args[1] ~= nil then do
if entity then
out = frame:preprocess("{{Tooltip|".. pic .. "|" .. entity.name .. "|" .. entity.desc .. "|" .. stats .."|no-text-decoration=1}}")
local displayName = entity.name
end else
if entity.suffix and entity.suffix ~= "" then
out = frame:preprocess("{{Tooltip|[[Файл:Mousegif.gif|64x64px|left|middle|link=]]|" .. entity.name .. "|" .. entity.desc .. "|" .. stats .."|no-text-decoration=1}}")
displayName = displayName .. " (" .. entity.suffix .. ")"
end
end
local desc = entity.desc or ""
return frame:preprocess(string.format("{{Tooltip|%s|%s|%s|%s|no-text-decoration=1}}", pic, displayName, desc, stats))
end
-- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}}
-- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}}
end else
return frame:preprocess(string.format("{{Tooltip|%s|Не найден|Предмет не найден|img=Mousegif.gif|no-text-decoration=1}}", pic))
  out = frame:preprocess("{{Tooltip|" .. pic .. "|Не найден|Предмет не найден|img=Mousegif.gif|no-text-decoration=1}}")
end
return out
end
end


return p
return p

Версия от 17:26, 2 июля 2025

Викиделам привет, остальным рекомендую вернуться на главную.

К функциям

Про модули

Модули - небольшие скрипты, призванные облегчить жизнь всем, кто занимается вики. Модули - почти тоже самое, что и шаблоны, с одним небольшим отличием: модули не просто заменяют один кусочек текста на другой кусочек текста и подставляют в него параметры, но и могут производить некоторые манипуляции с данными, будь то: вычисление сложных математических функций, получение данных из json баз данных и много чего ещё.
Ещё модули отличаются от шаблонов механизмом вызова. Вместо простого {{Название шаблона|Аргументы шаблона}} вы используете следующую конструкцию:

{{#invoke:Название модуля|Функция модуля|Аргументы функции}}

Заметили кое-что? Всё верно, в этой конструкции добавляется ключевое слово #invoke, а после названия модуля необходимо указать название нужной нам функции. Это необходимо потому, что модули не выполняют одну единственную задачу. Этих задач модуль может выполнять хоть 100 штук (если конечно кому-то не лень создавать 100 функций), поэтому нам необходимо указать модулю то, что мы от него хотим в данный конкретно момент.
Аргументы работают так же, как и в шаблонах. Если в документации аргументы задаются через Аргумент1=ПримерноеЗначение, то и при вызове модуля вы должны писать Аргумент1=ВашеЗначение, где Аргумент1 это название аргумента, указанного в документации, а ВашеЗначение это ваше значение, которое вы хотите передать в модуль.
Если же аргумент написан без знака = после него, это значит что аргумент зависит от своей позиции. Всё так же, как и с шаблонами.

Про этот модуль

Этот модуль должен облегчить жизнь всем тем, кто решился поработать с энтити на вики. С его помощью можно "брать" названия и описания энтити (всех, даже животных и стен) прямо из игры и разворачивать их в удобные шаблоны. Сделано это было для того, чтобы не выискивать в локализации нужные названия и описания энтити. Очень полезно!!! Пример вызова функции createtexttooltip модуля Entity Lookup с аргументами "FreedomImplant|img=Файл:Horns.png" {{#invoke:Entity Lookup|createtexttooltip|Текст|FreedomImplant|img=Horns.png}}

ТекстИмплант "свобода"
Этот имплант позволяет пользователю вырваться из наручников до трёх раз, прежде чем он перестанет функционировать.


Very easy to use. Подробнее смотрите на сайте mediawiki.

Функции модуля

createtexttooltip

createtexttooltip позволяет нам создать шаблон Tooltip и наклеить его на указанный в аргументах текст.
{{#invoke:Entity Lookup|createtexttooltip|Текст|ID|img=Horns.png}}

  • Текст - Текст, к которому нужно добавить Tooltip
  • ID - ID энтити из игры (к примеру у коричневой мыши ID - MobMouse1)
  • img (именной, опциональный) - Ссылка на картинку БЕЗ ПРИПИСКИ "Файл:" или "File:". Картинка будет использована как иконка в шаблоне Tooltip.

createimagetooltip

createimagetooltip позволяет нам создать шаблон Tooltip и наклеить его на указанное в аргументах изображение.
{{#invoke:Entity Lookup|createimagetooltip|Картинка|ID|Мета=Мета1,Мета2}}

  • Картинка - Ссылка на картинку, начинающаяся с "Файл:" или "File:". Картинка с наложенным Tooltip будет отображаться там, где вы вызовете модуль.
  • ID - ID энтити из игры (к примеру у коричневой мыши ID - MobMouse1)
  • Мета (именной, опциональный) - "Метаданные" для обработки картинки. То же самое, что вы бы написали после названия картинки в квадратных скобочках на обычной странице. Небольшой нюанс: вместо | мы используем ,(например "64x64px,left,middle,link=")

getname

getname позволяет получить имя предмета в том же виде, в котором оно записано в игре. {{#invoke:Entity Lookup|getname|ID}}

  • ID - ID энтити из игры (к примеру у коричневой мыши ID - MobMouse1)

getdesc

getdesc позволяет получить описание предмета в том же виде, в котором оно записано в игре. {{#invoke:Entity Lookup|getdesc|ID}}

  • ID - ID энтити из игры (к примеру у коричневой мыши ID - MobMouse1)

local prototypes = mw.loadData("Module:Entity Lookup/data")
local overrides = mw.loadData("Module:Entity Lookup/names")

local p = {}
p.entities = prototypes.entities
p.name_overrides = overrides.name_overrides or {}

-- 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

	if p.name_overrides[id] then
		return p.name_overrides[id]
	end

	local entity = p.entities[id]
	if entity then
		local name = entity.name or ""
		if entity.suffix and entity.suffix ~= "" then
			name = name .. " (" .. entity.suffix .. ")"
		end
		return name
	end

	return "Не найдено"
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
		local actualName = entity.name
		if entity.suffix and entity.suffix ~= "" then
			actualName = actualName .. " (" .. entity.suffix .. ")"
		end
		if actualName == name then
			return id
		end
	end

	return "Не найдено"
end

-- p.getdesc{args={"FreedomImplant"}}
function p.getdesc(frame, entid) -- {{#invoke:Entity Lookup|getdesc|ProtoID}}
	local id = frame.args and frame.args[1] or entid
	local entity = p.entities[id]
	if entity then
		return entity.desc or ""
	end
	return "Не найдено"
end

-- p.createtexttooltip{args={"Верхний текст", "FreedomImplant", "Файл:Honks.gif"}}
function p.createtexttooltip(frame) -- {{#invoke:Entity Lookup|createtexttooltip|Текст|ProtoID|img=картиночка}}
	local args = frame.args
	local label, id, img = args[1], args[2], args.img
	local entity = p.entities[id]
	local stats = frame:preprocess("{{Особое|" .. id .. "}}")
	if entity then
		local displayName = entity.name
		if entity.suffix and entity.suffix ~= "" then
			displayName = displayName .. " (" .. entity.suffix .. ")"
		end
		local desc = string.gsub(entity.desc or "", "\n", "<br>")
		if img then
			return frame:preprocess("{{Tooltip|" .. label .. "|" .. displayName .. "|" .. desc .. "|" .. stats .. "|img=" .. img .. "}}")
		else
			return frame:preprocess("{{Tooltip|" .. label .. "|" .. displayName .. "|" .. desc .. "|" .. stats .. "}}")
		end
	end
	return frame:preprocess("{{Tooltip|" .. label .. "|Не найден|Предмет не найден|img=Mousegif.gif}}")
end

-- p.createimagetooltip{args={"Файл:Honks.gif", "FreedomImplant", Статы="Имеет 3 заряда"}}
function p.createimagetooltip(frame) -- {{#invoke:Entity Lookup|createimagetooltip|Картинка|ProtoID|Мета=мета|Статы=статы}}
	local picFile, id = frame.args[1], frame.args[2]
	local meta = frame.args["Мета"] or "64x64px|link="
	local stats = frame:preprocess("{{Особое|" .. id .. "}}")
	meta = meta:gsub(',', '|')
	local pic = string.format("[[%s|%s]]", picFile, meta)
	local entity = p.entities[id]
	if entity then
		local displayName = entity.name
		if entity.suffix and entity.suffix ~= "" then
			displayName = displayName .. " (" .. entity.suffix .. ")"
		end
		local desc = entity.desc or ""
		return frame:preprocess(string.format("{{Tooltip|%s|%s|%s|%s|no-text-decoration=1}}", pic, displayName, desc, stats))
	end
	-- {{Tooltip|Текст|[[картиночка|64x64px|left|middle|link=]] Название|Описание}}
	return frame:preprocess(string.format("{{Tooltip|%s|Не найден|Предмет не найден|img=Mousegif.gif|no-text-decoration=1}}", pic))
end

return p