Shaleych (обсуждение | вклад) мНет описания правки |
Shaleych (обсуждение | вклад) мНет описания правки |
||
(не показано 46 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
− | local |
+ | local get_args = require('Модуль:Arguments').getArgs |
+ | local item_icon = require('Модуль:Item_icon') -- Модуль для создания ссылок на предметы с качеством предмета и иконкой |
||
+ | local companion = require('Модуль:Companion') -- Основной модуль спутников |
||
+ | local data = mw.loadData( 'Module:Companion/Powers' ) -- База данных умений спутников |
||
+ | local item_acquisition = require('Модуль:Item/Item acquisition') -- Модуль для вывода информации про способы получения предмета |
||
local p = {} |
local p = {} |
||
+ | -- Таблица качеств предмета |
||
+ | local quality = { |
||
+ | ["common"] = 'common', |
||
+ | ["обычный"] = 'common', |
||
+ | ["uncommon"] = 'uncommon', |
||
+ | ["необычный"] = 'uncommon', |
||
+ | ["rare"] = 'rare', |
||
+ | ["редкий"] = 'rare', |
||
+ | ["epic"] = 'epic', |
||
+ | ["эпический"] = 'epic', |
||
+ | ["legendary"] = 'legendary', |
||
+ | ["легендарный"] = 'legendary', |
||
+ | ["mythic"] = 'mythic', |
||
+ | ["мифический"] = 'mythic', |
||
+ | } |
||
+ | |||
+ | -- Основная функция для создания таблицы со спутниками (1. Название спуника, 2. Умения спуникаб, 3. Способы получения спуника) |
||
function p.Main( frame ) |
function p.Main( frame ) |
||
local cargo = mw.ext.cargo |
local cargo = mw.ext.cargo |
||
− | tables = 'Items' |
+ | local tables = 'Items' |
− | fields = ' |
+ | local fields = 'name, icon, quality, enhancement_power, player_bonus_power, categories' |
local args = { |
local args = { |
||
− | where=' |
+ | where='categories HOLDS "Спутник"', |
− | orderBy = ' |
+ | orderBy = 'name', |
+ | limit = '500', |
||
} |
} |
||
local result = cargo.query( tables, fields, args ) |
local result = cargo.query( tables, fields, args ) |
||
local r = result[1] |
local r = result[1] |
||
− | --Start the table |
||
local tbl = mw.html.create('table') |
local tbl = mw.html.create('table') |
||
tbl:addClass('wikitable') |
tbl:addClass('wikitable') |
||
− | + | tbl:tag("th"):wikitext("Спутник"):done() |
|
− | + | tbl:tag("th"):wikitext("Умение усиления"):done() |
|
− | + | tbl:tag("th"):wikitext("Боевое умение игрока"):done() |
|
+ | tbl:tag("th"):wikitext("Получение"):done() |
||
− | + | tbl:done() |
|
− | --Construct the rows in the table |
||
+ | |||
⚫ | |||
+ | for _, row in ipairs(result) do |
||
⚫ | |||
− | + | tr = tbl:tag("tr") |
|
+ | |||
⚫ | |||
− | + | tr:tag("td"):wikitext(item_icon.Main({args={row.name,""}})):done() |
|
+ | |||
+ | if row.enhancement_power then |
||
+ | local tables = 'Powers' |
||
+ | local fields = 'name, icon, item_ui_equip_power' |
||
+ | local args = { |
||
+ | where = 'name = "' .. row.enhancement_power .. '"', |
||
+ | } |
||
+ | local result = cargo.query( tables, fields, args ) |
||
+ | local r = result[1] |
||
+ | |||
+ | tr:tag("td"):wikitext('[[File:' .. r['icon'] .. '|20px|link=]] [[' .. row.enhancement_power .. ']]<br>' .. r['item_ui_equip_power']):done() |
||
+ | end |
||
+ | |||
+ | if data[row.player_bonus_power] then |
||
+ | if data[row.player_bonus_power].quality then |
||
+ | tr:tag("td"):wikitext('<b>' .. row.player_bonus_power .. '</b><br>' .. frame:expandTemplate{title = 'Подсветка параметров', args = {data[row.player_bonus_power].quality[quality[row.quality]]}}):done() |
||
+ | else |
||
+ | tr:tag("td"):wikitext('<b>' .. row.player_bonus_power .. '</b><br>' .. frame:expandTemplate{title = 'Подсветка параметров', args = {data[row.player_bonus_power]}}):done() |
||
+ | end |
||
+ | else |
||
+ | tr:tag("td"):wikitext(frame:expandTemplate{title = 'Подсветка параметров', args = {row.player_bonus_power}}):done() |
||
+ | end |
||
+ | |||
+ | tr:tag("td"):wikitext(item_acquisition.itemAcquisition({args={row.name,""}})):done() |
||
+ | end |
||
+ | return tbl |
||
+ | end |
||
+ | |||
+ | function p.companions_list( frame ) |
||
+ | local args = get_args(frame, {parentFirst = true}) |
||
+ | local cargo = mw.ext.cargo |
||
+ | local tables = 'Items' |
||
+ | local fields = '_pageName, quality, powers, enhancement_power, player_bonus_power, categories' |
||
+ | local items_table_args = { |
||
+ | where = 'categories HOLDS "Спутник"', |
||
+ | orderBy = 'quality, _pageName', |
||
+ | } |
||
+ | |||
+ | if args['качество'] then |
||
+ | items_table_args.where = items_table_args.where .. ' AND quality = "' .. args['качество'] .. '"' |
||
+ | end |
||
+ | if args['умение'] then |
||
+ | items_table_args.where = items_table_args.where .. ' AND powers HOLDS "' .. args['умение'] .. '"' |
||
+ | end |
||
+ | if args['умение усиления'] then |
||
+ | items_table_args.where = items_table_args.where .. ' AND enhancement_power = "' .. args['умение усиления'] .. '"' |
||
+ | end |
||
+ | if args['бонусное умение игрока'] then |
||
+ | items_table_args.where = items_table_args.where .. ' AND player_bonus_power = "' .. args['бонусное умение игрока'] .. '"' |
||
+ | end |
||
+ | |||
+ | local result = cargo.query( tables, fields, items_table_args ) |
||
+ | |||
+ | local text = {} |
||
+ | |||
+ | local countResults = 0 |
||
+ | for _ in pairs(result) do countResults = countResults + 1 end |
||
+ | |||
+ | if frame.args['содержится в'] then |
||
+ | for i,v in ipairs(result) do |
||
+ | text[i] = '<li>'.. frame:expandTemplate{title = 'Содержит', args = {v._pageName}} ..'</li>' |
||
end |
end |
||
+ | else |
||
⚫ | |||
+ | text[i] = '<li>' .. item_icon.Main({args={v._pageName,""}}) .. '</li>' |
||
+ | end |
||
+ | end |
||
+ | if countResults < 10 then |
||
+ | return '<ul>'..table.concat(text)..'</ul>' |
||
+ | else |
||
+ | return '<ul style="-webkit-column-width: 305px; -moz-column-width: 305px; column-width: 305px;">'..table.concat(text)..'</ul>' |
||
+ | end |
||
+ | |||
+ | end |
||
+ | |||
+ | function p.companionPowerTable(frame) |
||
+ | local cargo = mw.ext.cargo |
||
+ | local tables = 'Powers' |
||
+ | local fields = 'Powers._pageName, Powers.name, Powers.icon, Powers.type, Powers.item_ui_equip_power' |
||
+ | local args = { |
||
+ | where = 'Powers.type = "' .. frame.args[1] .. '"', |
||
+ | orderBy = 'Powers.item_level, Powers._pageName', |
||
+ | } |
||
+ | |||
+ | local result = cargo.query( tables, fields, args ) |
||
+ | |||
+ | local tbl = mw.html.create('table') |
||
+ | tbl:addClass('wikitable sortable jquery-tablesorter') |
||
+ | tbl:tag("th"):attr('style', 'width: 17%;'):wikitext("Умение"):done() |
||
+ | tbl:tag("th"):wikitext("Эффект"):done() |
||
+ | tbl:tag("th"):attr('style', 'width: 27%;'):wikitext("Доступно на<br>следующих спутниках"):done() |
||
+ | tbl:done() |
||
+ | |||
+ | for _, power in ipairs(result) do |
||
⚫ | |||
+ | tr:tag("td"):wikitext('[[File:' .. power["Powers.icon"] .. '|32px|link=' .. power["Powers._pageName"] ..']] [[' .. power["Powers._pageName"] .. ']]'):done() |
||
+ | |||
+ | if mw.ustring.lower(power["Powers.type"]) == 'усиление' then |
||
+ | tr:tag("td"):wikitext(power["Powers.item_ui_equip_power"]):done() |
||
+ | elseif mw.ustring.lower(power["Powers.type"]) == 'бонусное умение игрока' then |
||
⚫ | |||
+ | end |
||
+ | |||
+ | local tables_items = 'Items' |
||
+ | local fields_items = 'Items._pageName, Items.quality, Items.enhancement_power, Items.player_bonus_power' |
||
+ | local args_items = { |
||
+ | where = 'Items.enhancement_power = "' .. power["Powers.name"] .. '" OR Items.player_bonus_power = "' .. power["Powers.name"] .. '"', |
||
+ | orderBy = 'Items.name, Items.quality', |
||
+ | } |
||
+ | local result_items = cargo.query( tables_items, fields_items, args_items ) |
||
+ | |||
+ | local countResults = 0 |
||
+ | for _ in pairs(result_items) do countResults = countResults + 1 end |
||
+ | |||
+ | local mounts = {} |
||
+ | for _, item in ipairs(result_items) do |
||
+ | table.insert(mounts, item_icon.Main({args={item["Items._pageName"],""}})) |
||
+ | end |
||
+ | if countResults > 4 then |
||
+ | tr:tag("td"):tag("div"):attr('style', 'height: 150px; overflow-y: scroll;'):wikitext(table.concat(mounts, "<br>")):done() |
||
+ | else |
||
+ | tr:tag("td"):wikitext(table.concat(mounts, "<br>")):done() |
||
+ | end |
||
+ | end |
||
return tbl |
return tbl |
||
end |
end |
||
+ | |||
return p |
return p |
Текущая версия от 15:56, 28 января 2024
Для документации этого модуля может быть создана страница Модуль:Companion table/doc
local get_args = require('Модуль:Arguments').getArgs
local item_icon = require('Модуль:Item_icon') -- Модуль для создания ссылок на предметы с качеством предмета и иконкой
local companion = require('Модуль:Companion') -- Основной модуль спутников
local data = mw.loadData( 'Module:Companion/Powers' ) -- База данных умений спутников
local item_acquisition = require('Модуль:Item/Item acquisition') -- Модуль для вывода информации про способы получения предмета
local p = {}
-- Таблица качеств предмета
local quality = {
["common"] = 'common',
["обычный"] = 'common',
["uncommon"] = 'uncommon',
["необычный"] = 'uncommon',
["rare"] = 'rare',
["редкий"] = 'rare',
["epic"] = 'epic',
["эпический"] = 'epic',
["legendary"] = 'legendary',
["легендарный"] = 'legendary',
["mythic"] = 'mythic',
["мифический"] = 'mythic',
}
-- Основная функция для создания таблицы со спутниками (1. Название спуника, 2. Умения спуникаб, 3. Способы получения спуника)
function p.Main( frame )
local cargo = mw.ext.cargo
local tables = 'Items'
local fields = 'name, icon, quality, enhancement_power, player_bonus_power, categories'
local args = {
where='categories HOLDS "Спутник"',
orderBy = 'name',
limit = '500',
}
local result = cargo.query( tables, fields, args )
local r = result[1]
local tbl = mw.html.create('table')
tbl:addClass('wikitable')
tbl:tag("th"):wikitext("Спутник"):done()
tbl:tag("th"):wikitext("Умение усиления"):done()
tbl:tag("th"):wikitext("Боевое умение игрока"):done()
tbl:tag("th"):wikitext("Получение"):done()
tbl:done()
for _, row in ipairs(result) do
tr = tbl:tag("tr")
tr:tag("td"):wikitext(item_icon.Main({args={row.name,""}})):done()
if row.enhancement_power then
local tables = 'Powers'
local fields = 'name, icon, item_ui_equip_power'
local args = {
where = 'name = "' .. row.enhancement_power .. '"',
}
local result = cargo.query( tables, fields, args )
local r = result[1]
tr:tag("td"):wikitext('[[File:' .. r['icon'] .. '|20px|link=]] [[' .. row.enhancement_power .. ']]<br>' .. r['item_ui_equip_power']):done()
end
if data[row.player_bonus_power] then
if data[row.player_bonus_power].quality then
tr:tag("td"):wikitext('<b>' .. row.player_bonus_power .. '</b><br>' .. frame:expandTemplate{title = 'Подсветка параметров', args = {data[row.player_bonus_power].quality[quality[row.quality]]}}):done()
else
tr:tag("td"):wikitext('<b>' .. row.player_bonus_power .. '</b><br>' .. frame:expandTemplate{title = 'Подсветка параметров', args = {data[row.player_bonus_power]}}):done()
end
else
tr:tag("td"):wikitext(frame:expandTemplate{title = 'Подсветка параметров', args = {row.player_bonus_power}}):done()
end
tr:tag("td"):wikitext(item_acquisition.itemAcquisition({args={row.name,""}})):done()
end
return tbl
end
function p.companions_list( frame )
local args = get_args(frame, {parentFirst = true})
local cargo = mw.ext.cargo
local tables = 'Items'
local fields = '_pageName, quality, powers, enhancement_power, player_bonus_power, categories'
local items_table_args = {
where = 'categories HOLDS "Спутник"',
orderBy = 'quality, _pageName',
}
if args['качество'] then
items_table_args.where = items_table_args.where .. ' AND quality = "' .. args['качество'] .. '"'
end
if args['умение'] then
items_table_args.where = items_table_args.where .. ' AND powers HOLDS "' .. args['умение'] .. '"'
end
if args['умение усиления'] then
items_table_args.where = items_table_args.where .. ' AND enhancement_power = "' .. args['умение усиления'] .. '"'
end
if args['бонусное умение игрока'] then
items_table_args.where = items_table_args.where .. ' AND player_bonus_power = "' .. args['бонусное умение игрока'] .. '"'
end
local result = cargo.query( tables, fields, items_table_args )
local text = {}
local countResults = 0
for _ in pairs(result) do countResults = countResults + 1 end
if frame.args['содержится в'] then
for i,v in ipairs(result) do
text[i] = '<li>'.. frame:expandTemplate{title = 'Содержит', args = {v._pageName}} ..'</li>'
end
else
for i,v in ipairs(result) do
text[i] = '<li>' .. item_icon.Main({args={v._pageName,""}}) .. '</li>'
end
end
if countResults < 10 then
return '<ul>'..table.concat(text)..'</ul>'
else
return '<ul style="-webkit-column-width: 305px; -moz-column-width: 305px; column-width: 305px;">'..table.concat(text)..'</ul>'
end
end
function p.companionPowerTable(frame)
local cargo = mw.ext.cargo
local tables = 'Powers'
local fields = 'Powers._pageName, Powers.name, Powers.icon, Powers.type, Powers.item_ui_equip_power'
local args = {
where = 'Powers.type = "' .. frame.args[1] .. '"',
orderBy = 'Powers.item_level, Powers._pageName',
}
local result = cargo.query( tables, fields, args )
local tbl = mw.html.create('table')
tbl:addClass('wikitable sortable jquery-tablesorter')
tbl:tag("th"):attr('style', 'width: 17%;'):wikitext("Умение"):done()
tbl:tag("th"):wikitext("Эффект"):done()
tbl:tag("th"):attr('style', 'width: 27%;'):wikitext("Доступно на<br>следующих спутниках"):done()
tbl:done()
for _, power in ipairs(result) do
tr = tbl:tag("tr")
tr:tag("td"):wikitext('[[File:' .. power["Powers.icon"] .. '|32px|link=' .. power["Powers._pageName"] ..']] [[' .. power["Powers._pageName"] .. ']]'):done()
if mw.ustring.lower(power["Powers.type"]) == 'усиление' then
tr:tag("td"):wikitext(power["Powers.item_ui_equip_power"]):done()
elseif mw.ustring.lower(power["Powers.type"]) == 'бонусное умение игрока' then
tr:tag("td"):wikitext(power["Powers.item_ui_equip_power"]):done()
end
local tables_items = 'Items'
local fields_items = 'Items._pageName, Items.quality, Items.enhancement_power, Items.player_bonus_power'
local args_items = {
where = 'Items.enhancement_power = "' .. power["Powers.name"] .. '" OR Items.player_bonus_power = "' .. power["Powers.name"] .. '"',
orderBy = 'Items.name, Items.quality',
}
local result_items = cargo.query( tables_items, fields_items, args_items )
local countResults = 0
for _ in pairs(result_items) do countResults = countResults + 1 end
local mounts = {}
for _, item in ipairs(result_items) do
table.insert(mounts, item_icon.Main({args={item["Items._pageName"],""}}))
end
if countResults > 4 then
tr:tag("td"):tag("div"):attr('style', 'height: 150px; overflow-y: scroll;'):wikitext(table.concat(mounts, "<br>")):done()
else
tr:tag("td"):wikitext(table.concat(mounts, "<br>")):done()
end
end
return tbl
end
return p