Для документации этого модуля может быть создана страница Модуль:Vendor list/doc
local item_icon = require('Модуль:Item_icon')
local get_args = require('Модуль:Arguments').getArgs
local p = {}
function p.Main( frame )
local args = get_args(frame, {parentFirst = true})
local cargo = mw.ext.cargo
local tables = 'Cost, NPCs'
local fields = 'Cost.merchant, Cost.item, Cost.quality, Cost.quantity, Cost.cost__full, Cost.cost, Cost._pageID, NPCs._pageName, NPCs.zone, NPCs.region'
local item_or_cost = frame.args['валюта'] ~= "" and 'cost HOLDS LIKE "%' .. frame.args['валюта'] .. '%"' or 'Cost.item="' .. frame.args[1] .. '"'
local argst = {
join = 'Cost.merchant = NPCs._pageName',
where = item_or_cost,
}
local result = cargo.query( tables, fields, argst )
local r = result[1]
local tbl = mw.html.create('table')
tbl:addClass('wikitable')
if frame.args['валюта'] ~= "" then
tbl:tag("th"):wikitext("Предмет"):done()
end
tbl:tag("th"):wikitext("Торговец"):done()
tbl:tag("th"):wikitext("Область"):done()
tbl:tag("th"):wikitext("Регион"):done()
tbl:tag("th"):wikitext("Стоимость"):done()
tbl:done()
local zones = {
["Просторы Нортдарка"] = "Андердарк",
["Мантол-Дерит"] = "Андердарк"
}
for _, row in ipairs(result) do
local display = row["NPCs.zone"] ~= nil and '' or 'display: none;'
local colspan = row["NPCs.zone"] ~= nil and 1 or 2
local tr = tbl:tag("tr")
if frame.args['валюта'] ~= "" then
tr:tag("td"):wikitext(item_icon.Main({args={row["Cost.item"],""}})):done()
end
tr:tag("td"):wikitext('[[' .. row["Cost.merchant"] .. ']]'):done()
if mw.ustring.find(row["Cost.cost__full"], "Милость Макоса" ) or mw.ustring.find(row["Cost.cost__full"], "Милость Эку") then
tr:tag("td"):attr("colspan", colspan):wikitext('[[Затерянный город Ому]]'):done()
elseif row["Cost.merchant"] == 'Базар чудес' then
tr:tag("td"):wikitext('Протекторат'):done()
else
tr:tag("td"):attr("colspan", colspan):wikitext(row["NPCs.zone"] ~= nil and '[[' .. row["NPCs.zone"] .. ']]' or 'Магазин кампании'):done()
end
if zones[row["NPCs.region"]] then
tr:tag("td"):attr('style', display):wikitext(zones[row["NPCs.region"]]):done()
elseif mw.ustring.find(row["Cost.cost__full"], "Милость Макоса") or mw.ustring.find(row["Cost.cost__full"], "Милость Эку") then
tr:tag("td"):attr('style', display):wikitext('[[Чалт]]'):done()
elseif row["Cost.merchant"] == 'Базар чудес' then
tr:tag("td"):wikitext('Берег Мечей'):done()
else
tr:tag("td"):attr('style', display):wikitext(''):done()
end
tr:tag("td"):wikitext(frame:expandTemplate{title = 'Валюта', args = {row["Cost.cost__full"]}}):done()
local tr = tbl:tag("tr")
local function queryPower(power_type)
local tables = 'Items'
local fields = 'name, quality'
local args = {
where = 'name = "'.. power_type .. '"',
}
return cargo.query(tables, fields, args)[1]
end
local result_current_title = queryPower(mw.title.getCurrentTitle().text)
local result_frame_args = queryPower(frame.args[1])
if result_current_title["quality"] ~= result_frame_args["quality"] then
tr:tag("td"):attr('colspan', 5):css('text-align', 'center'):wikitext('У торговца продается ' .. item_icon.Main({args={frame.args[1],""}}) .. ' <b>необычного</b> качества!'):done()
end
end
if next(result) == nil then
local tr = tbl:tag("tr")
if frame.args['валюта'] ~= "" then
tr:tag("td"):attr('colspan', 5):wikitext('<span style="text-align: center">Нет товаров, которые можно купить за <b>' .. frame.args['валюта'] .. '.</b></span>'):done()
else
tr:tag("td"):attr('colspan', 4):wikitext('<span style="text-align: center">Этот предмет нигде не продается или еще не был добавлен в список товаров торговца.</span>'):done()
end
end
return tbl
end
return p