Модуль:ShopData: различия между версиями
(Новая страница: «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...») |
Нет описания правки |
||
| (не показано 15 промежуточных версий этого же участника) | |||
| Строка 2: | Строка 2: | ||
local lib = require('Module:Feature') | local lib = require('Module:Feature') | ||
local libItem = require('Module:ItemData') | |||
local libHero = require('Module:HeroData') | |||
local libUnit = require('Module:UnitData') | |||
function p.get(frame) | function p.get(frame) | ||
| Строка 26: | Строка 29: | ||
return result | return result | ||
end | 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] == "Повелительница мух" 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] == "Аврора, Ангел Надежды" 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] == "Судья" 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] == "Пожиратель душ" 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] == "Тразк" 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", true))) | |||
:done() | |||
elseif | |||
v[k2][1] == "ЛтА-7" 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] == "Пушка тайн" or | |||
v[k2][1] == "Лучники" or | |||
v[k2][1] == "Волшебники" or | |||
v[k2][1] == "Воины/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], true))) | |||
:done() | |||
else | |||
divNode | |||
:tag('div') | |||
:addClass('loot-item') | |||
:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v[k2][1], "60px", v[k2][2], true))) | |||
:done() | |||
end | |||
end | |||
end | |||
end | |||
return frame:preprocess(tostring(divNode)) | |||
end | |||
function p.getItemIcon(item, size, count, link) | |||
local item_data = require ('Module:ItemData/data') | |||
local rarity_data = require ('Module:ItemData/rarities') | |||
local rarity, icon = "" | |||
if size == nil then | |||
size = "30px" | |||
end | |||
if count == nil then | |||
count = "" | |||
end | |||
if link == nil then | |||
link = "" | |||
end | |||
if lib.lookup(item_data, item) then | |||
icon = item_data[item]["icon"] | |||
else | |||
return item | |||
end | |||
if rarity_data[item_data[item]["rarity"]] and rarity_data[item_data[item]["rarity"]] ~= nil then | |||
rarity = rarity_data[item_data[item]["rarity"]] | |||
else | |||
rarity = "обычный" | |||
end | |||
return mw.ustring.format('{{ItemIcon|%s|%s|%s|size=%s|count=%s|link=%s}}', item, icon, rarity, size, count, link) | |||
end | |||
function p.getLotSource(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 = "" | |||
local result = get["source"](lot) | |||
if (result == "Магазин") then | |||
str = str .. mw.ustring.format('<div class="shop" style="width:fit-content; width: -moz-fit-content">') | |||
str = str .. mw.ustring.format('[[Файл:icon_shop.png|x100px|ссылка=Магазин]]', "Магазин") | |||
str = str .. mw.ustring.format('</div>') | |||
elseif (result == "Квесты") then | |||
str = str .. mw.ustring.format('<div class="shop" style="width:fit-content; width: -moz-fit-content">') | |||
str = str .. mw.ustring.format('[[Файл:icon_quests.png|x100px|ссылка=Ежедневные квесты]]', "Квесты") | |||
str = str .. mw.ustring.format('</div>') | |||
end | |||
return frame:preprocess(tostring(str)) | |||
end | |||
function p.getLotIcon(lot, size, count, link) | |||
local shop_data = require ('Module:ShopData/data') | |||
local icon = "" | |||
local unit = false | |||
if size == nil then | |||
size = "30px" | |||
end | |||
if count == nil then | |||
count = "" | |||
end | |||
if link == nil then | |||
link = "" | |||
end | |||
if lib.lookup(shop_data, lot) then | |||
icon = shop_data[lot]["icon"] | |||
else | |||
return lot | |||
end | |||
return mw.ustring.format('{{LotIcon|%s|%s|size=%s|link=%s}}', lot, icon, size, link) | |||
end | end | ||
return p | return p | ||
Текущая версия от 07:26, 25 июня 2023
Данная группа модулей хранит информацию о магазинных товарах из Крушителей подземелий. Перечень модулей:
- Модуль:ShopData - основные функции
- Модуль:ShopData/data - массив данных о товарах
- Модуль:ShopData/getter - сборщик данных о товарах
- Модуль:ShopData/types - массив данных c типами валют
- Модуль:ShopData/lots - массив данных с содержанием товаров
- Модуль:ShopData/source - массив данных с типами источника получения товара
Информация из Модуль:ShopData/doc
local p = {}
local lib = require('Module:Feature')
local libItem = require('Module:ItemData')
local libHero = require('Module:HeroData')
local libUnit = require('Module:UnitData')
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] == "Повелительница мух" 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] == "Аврора, Ангел Надежды" 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] == "Судья" 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] == "Пожиратель душ" 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] == "Тразк" 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", true)))
:done()
elseif
v[k2][1] == "ЛтА-7" 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] == "Пушка тайн" or
v[k2][1] == "Лучники" or
v[k2][1] == "Волшебники" or
v[k2][1] == "Воины/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], true)))
:done()
else
divNode
:tag('div')
:addClass('loot-item')
:wikitext(mw.ustring.format('%s', libItem.getItemIcon(v[k2][1], "60px", v[k2][2], true)))
:done()
end
end
end
end
return frame:preprocess(tostring(divNode))
end
function p.getItemIcon(item, size, count, link)
local item_data = require ('Module:ItemData/data')
local rarity_data = require ('Module:ItemData/rarities')
local rarity, icon = ""
if size == nil then
size = "30px"
end
if count == nil then
count = ""
end
if link == nil then
link = ""
end
if lib.lookup(item_data, item) then
icon = item_data[item]["icon"]
else
return item
end
if rarity_data[item_data[item]["rarity"]] and rarity_data[item_data[item]["rarity"]] ~= nil then
rarity = rarity_data[item_data[item]["rarity"]]
else
rarity = "обычный"
end
return mw.ustring.format('{{ItemIcon|%s|%s|%s|size=%s|count=%s|link=%s}}', item, icon, rarity, size, count, link)
end
function p.getLotSource(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 = ""
local result = get["source"](lot)
if (result == "Магазин") then
str = str .. mw.ustring.format('<div class="shop" style="width:fit-content; width: -moz-fit-content">')
str = str .. mw.ustring.format('[[Файл:icon_shop.png|x100px|ссылка=Магазин]]', "Магазин")
str = str .. mw.ustring.format('</div>')
elseif (result == "Квесты") then
str = str .. mw.ustring.format('<div class="shop" style="width:fit-content; width: -moz-fit-content">')
str = str .. mw.ustring.format('[[Файл:icon_quests.png|x100px|ссылка=Ежедневные квесты]]', "Квесты")
str = str .. mw.ustring.format('</div>')
end
return frame:preprocess(tostring(str))
end
function p.getLotIcon(lot, size, count, link)
local shop_data = require ('Module:ShopData/data')
local icon = ""
local unit = false
if size == nil then
size = "30px"
end
if count == nil then
count = ""
end
if link == nil then
link = ""
end
if lib.lookup(shop_data, lot) then
icon = shop_data[lot]["icon"]
else
return lot
end
return mw.ustring.format('{{LotIcon|%s|%s|size=%s|link=%s}}', lot, icon, size, link)
end
return p