Модуль:ShopData: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 28: | Строка 28: | ||
end | end | ||
function p. | function p.getLots(frame) | ||
local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | ||
Строка 40: | Строка 40: | ||
end | end | ||
function p. | function p.getLotsPack(frame) | ||
local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | ||
Строка 47: | Строка 47: | ||
local count | local count | ||
local result = get[" | local result = get["lot_data"](lot) | ||
for k, v in ipairs(result) do | for k, v in ipairs(result) do | ||
if tonumber(args['index']) == k then | if tonumber(args['index']) == k then | ||
Строка 57: | Строка 57: | ||
end | end | ||
function p. | function p.getLotType(frame) | ||
local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | ||
Строка 65: | Строка 65: | ||
local type = "" | local type = "" | ||
local result = get[" | local result = get["lot_data"](lot) | ||
for k, v in ipairs(result) do | for k, v in ipairs(result) do | ||
if tonumber(args['index']) == k then | if tonumber(args['index']) == k then | ||
Строка 75: | Строка 75: | ||
end | end | ||
function p. | function p.getLotItems(frame) | ||
local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | ||
Строка 88: | Строка 88: | ||
:newline() | :newline() | ||
local result = get[" | local result = get["lots"](lot) | ||
for k, v in ipairs(result) do | for k, v in ipairs(result) do | ||
if tonumber(args['index']) == k then | if tonumber(args['index']) == k then |
Версия от 10:19, 14 сентября 2022
Данная группа модулей хранит информацию о магазинных товарах из Крушителей подземелий. Перечень модулей:
- Модуль:ShopData - основные функции
- Модуль:ShopData/data - массив данных о товарах
- Модуль:ShopData/getter - сборщик данных о товарах
- Модуль:ShopData/types - массив данных c типами валют
- Модуль:ShopData/lots - массив данных с содержанием товаров
- Модуль:ShopData/source - массив данных с типами источника получения товара
Информация из Модуль:ShopData/doc
local p = {} local lib = require('Module:Feature') function p.get(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:ShopData/getter') local lot = args['lot'] or args[1] local datatype = args['datatype'] or args[2] local output = args['output'] or args[3] or nil local result = get[datatype](lot) if output ~= nil and type(result) == "table" then if output == "csv" then return lib.tbl_concat{result} elseif output == "custom" then return frame:preprocess(lib.tbl_concat({result, prepend = args['prepend'], append = args['append'], separator = args['separator'], index = args["index"]})) elseif output == "template" then return frame:preprocess(lib.tbl_concat{result, prepend = "{{" .. args['t_name'] .. "|", append = "}}", separator = args['separator']}) end elseif result == nil then return "" else return result end end function p.getLots(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:ShopData/getter') local lot = args['lot'] or args[1] local str = "" str = mw.ustring.format('{{Lot|%s}}', lot) return frame:preprocess(tostring(str)) end function p.getLotsPack(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:ShopData/getter') local lot = args['lot'] or args[1] local count local result = get["lot_data"](lot) for k, v in ipairs(result) do if tonumber(args['index']) == k then count = mw.ustring.format('%d', v[2]) end end return tonumber(count) end function p.getLotType(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:ShopData/getter') local loot_type = require('Module:ItemData/loot/types') local lot = args['lot'] or args[1] local type = "" local result = get["lot_data"](lot) for k, v in ipairs(result) do if tonumber(args['index']) == k then type = mw.ustring.format('%s', loot_type[v[3]]) end end return tostring(type) end function p.getLotItems(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:ShopData/getter') local libHero = require('Module:HeroData') local libUnit = require('Module:UnitData') local lot = args['lot'] or args[1] local divNode = mw.html.create('div') divNode :cssText('display: flex; flex-flow: row wrap; justify-content: center;') :newline() local result = get["lots"](lot) for k, v in ipairs(result) do if tonumber(args['index']) == k then for k2, v2 in ipairs(v) do if v[k2][1] == "Августин" or v[k2][1] == "Аилред" or v[k2][1] == "Офаниель" or v[k2][1] == "Дидгур" or v[k2][1] == "Воин ягуара" or v[k2][1] == "Уильям Вейн" or v[k2][1] == "Тразк" or v[k2][1] == "Джамис" then divNode :tag('div') :addClass('loot-item') :wikitext(mw.ustring.format('%s', libHero.getHeroIcon(v[k2][1], "60px"))) :done() elseif v[k2][1] == "Лучники" or v[k2][1] == "Волшебники" or v[k2][1] == "Воины" or v[k2][1] == "Грифоны" or v[k2][1] == "Черные рыцари" or v[k2][1] == "Сторожевая башня пустоты/1" then divNode :tag('div') :addClass('loot-item') :wikitext(mw.ustring.format('%s', libUnit.getUnitIcon(v[k2][1], "60px", v[k2][2]))) :done() else divNode :tag('div') :addClass('loot-item') :wikitext(mw.ustring.format('%s', p.getItemIcon(v[k2][1], "60px", v[k2][2]))) :done() end end end end return frame:preprocess(tostring(divNode)) end return p