Shaleych (обсуждение | вклад) мНет описания правки |
Shaleych (обсуждение | вклад) м (Отмена правки 163470, сделанной Shaleych (обсуждение)) Метка: отмена |
||
(не показано 158 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
local itemIcon = require('Модуль:Item_icon') |
local itemIcon = require('Модуль:Item_icon') |
||
+ | local Mount = require('Модуль:Mount') |
||
− | |||
+ | local attributes = mw.loadData('Модуль:Item/Attributes') -- База данных параметров предметов |
||
local p = {} |
local p = {} |
||
local cargo = mw.ext.cargo |
local cargo = mw.ext.cargo |
||
local insignia = { |
local insignia = { |
||
− | ['Универсальная ячейка'] = '[[Файл:Универсальная ячейка знаков.png|32px|Универсальная ячейка знаков|ссылка=]]', |
||
['универсальная ячейка'] = '[[Файл:Универсальная ячейка знаков.png|32px|Универсальная ячейка знаков|ссылка=]]', |
['универсальная ячейка'] = '[[Файл:Универсальная ячейка знаков.png|32px|Универсальная ячейка знаков|ссылка=]]', |
||
− | ['Ячейка просвещенных знаков'] = '[[Файл:Просвещенный знак.png|32px|Ячейка просвещенных знаков|ссылка=]]', |
||
['ячейка просвещенных знаков'] = '[[Файл:Просвещенный знак.png|32px|Ячейка просвещенных знаков|ссылка=]]', |
['ячейка просвещенных знаков'] = '[[Файл:Просвещенный знак.png|32px|Ячейка просвещенных знаков|ссылка=]]', |
||
− | ['Ячейка серповидных знаков'] = '[[Файл:Серповидный знак.png|32px|Ячейка серповидных знаков|ссылка=]]', |
||
['ячейка серповидных знаков'] = '[[Файл:Серповидный знак.png|32px|Ячейка серповидных знаков|ссылка=]]', |
['ячейка серповидных знаков'] = '[[Файл:Серповидный знак.png|32px|Ячейка серповидных знаков|ссылка=]]', |
||
− | ['Ячейка украшенных знаков'] = '[[Файл:Украшенный знак.png|32px|Ячейка украшенных знаков|ссылка=]]', |
||
['ячейка украшенных знаков'] = '[[Файл:Украшенный знак.png|32px|Ячейка украшенных знаков|ссылка=]]', |
['ячейка украшенных знаков'] = '[[Файл:Украшенный знак.png|32px|Ячейка украшенных знаков|ссылка=]]', |
||
− | ['Ячейка царственных знаков'] = '[[Файл:Царственный знак.png|32px|Ячейка царственных знаков|ссылка=]]', |
||
['ячейка царственных знаков'] = '[[Файл:Царственный знак.png|32px|Ячейка царственных знаков|ссылка=]]', |
['ячейка царственных знаков'] = '[[Файл:Царственный знак.png|32px|Ячейка царственных знаков|ссылка=]]', |
||
− | ['Ячейка шипастых знаков'] = '[[Файл:Шипастый знак.png|32px|Ячейка шипастых знаков|ссылка=]]', |
||
['ячейка шипастых знаков'] = '[[Файл:Шипастый знак.png|32px|Ячейка шипастых знаков|ссылка=]]', |
['ячейка шипастых знаков'] = '[[Файл:Шипастый знак.png|32px|Ячейка шипастых знаков|ссылка=]]', |
||
} |
} |
||
function p.Main( frame ) |
function p.Main( frame ) |
||
− | tables = 'Items' |
+ | local tables = 'Items' |
− | fields = '_pageName,name,quality,icon,slot1,slot2,slot3,insignia_bonuses, |
+ | local fields = '_pageName, name, quality, icon, slot1, slot2, slot3, slot4, insignia_bonuses, equip_power_name, combat_power_name' |
local args = { |
local args = { |
||
− | where=' |
+ | where='categories HOLDS "Скакун" AND quality="'..frame.args['качество']..'"', |
groupBy = "_pageName" , |
groupBy = "_pageName" , |
||
orderBy = '_pageName', |
orderBy = '_pageName', |
||
Строка 31: | Строка 26: | ||
local tbl = mw.html.create('table') |
local tbl = mw.html.create('table') |
||
tbl:addClass('wikitable sortable filter-table-mount jquery-tablesorter') |
tbl:addClass('wikitable sortable filter-table-mount jquery-tablesorter') |
||
− | + | tbl:tag("th"):attr('style', 'width: 15%'):wikitext("Скакун"):done() |
|
− | + | tbl:tag("th"):attr('style', 'width: 20%'):wikitext("Список бонусов знака"):done() |
|
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | if r['combat_power'] ~= "" then |
||
⚫ | |||
− | tbl:tag("th"):wikitext("Боевое умение"):done() |
||
⚫ | |||
⚫ | |||
+ | |||
⚫ | |||
⚫ | |||
+ | |||
+ | for i = 1, 4 do |
||
+ | local slot = row["slot" .. i] |
||
+ | |||
⚫ | |||
+ | table.insert(slots, slot) |
||
end |
end |
||
⚫ | |||
⚫ | |||
− | for k,v in pairs(tbl) do |
||
− | count = count + 1 |
||
end |
end |
||
⚫ | |||
− | --Construct the rows in the table |
||
⚫ | |||
⚫ | |||
+ | |||
− | local dataFilter = {row.slot1, row.slot2, row.slot3} |
||
+ | local bonuses = {} |
||
⚫ | |||
+ | if row.insignia_bonuses then |
||
⚫ | |||
⚫ | |||
⚫ | |||
+ | bonus = mw.ustring.gsub(bonus, "^%s*(.-)%s*$", "%1") |
||
− | tr:tag("td"):wikitext(insignia[row.slot1], ' + ', insignia[row.slot2], ' + ', insignia[row.slot3]):done() |
||
⚫ | |||
⚫ | |||
− | tr:tag("td"):wikitext(insignia[row.slot1], ' + ', insignia[row.slot2]):done() |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
− | tr:tag("td"):wikitext('<ul>'..table.concat(insigniaBonuses,'\n')..'</ul>'):done() |
||
⚫ | |||
− | tr:tag("td"):wikitext(row.equip_power):done() |
||
− | end |
||
− | if r['combat_power'] ~= "" then |
||
− | tr:tag("td"):wikitext(row.combat_power):done() |
||
end |
end |
||
end |
end |
||
+ | tr:tag("td"):wikitext('<div style="text-align: center">' .. insignia[mw.ustring.lower(row.slot1)] .. ' + ' .. insignia[mw.ustring.lower(row.slot2)] .. ' + ' .. insignia[mw.ustring.lower(row.slot3)] .. (row.slot4 and ' + ' .. insignia[mw.ustring.lower(row.slot4)] or "") .. '</div><div style="overflow: auto; max-height:'..(row.slot4 and 250 or 200)..'px;"><ul>'..table.concat(bonuses,'\n')..'</ul></div>'):done() |
||
− | tr = tbl:tag("tr") |
||
+ | |||
⚫ | |||
+ | local tables_powers = 'Powers' |
||
+ | local fields_powers = '_pageName, name, icon, item_level, type, power_use, item_ui_equip_power, hit_points, power, accuracy, combat_advantage, critical_strike, critical_severity, critical_avoidance, forte, stamina_regen, deflect, awareness, movement_speed, defense, stat_universal' |
||
+ | local args_equip_power = { |
||
+ | where = 'type = "Умение экипировки" AND name = "'.. row.equip_power_name .. '"' |
||
+ | } |
||
+ | local args_combat_power = { |
||
+ | where = 'type = "Боевое умение" AND name = "'.. row.combat_power_name .. '"' |
||
+ | } |
||
+ | |||
+ | local result_equip_power = cargo.query( tables_powers, fields_powers, args_equip_power ) |
||
+ | local result_combat_power = cargo.query( tables_powers, fields_powers, args_combat_power ) |
||
+ | |||
+ | for _, power in ipairs(result_equip_power) do |
||
+ | local formatted_wikitext = {} |
||
+ | |||
+ | for _, attrib in ipairs(attributes) do |
||
+ | if power[attrib.fields_cargo] then |
||
+ | table.insert(formatted_wikitext, '+' .. power[attrib.fields_cargo] .. ' [[' .. attrib.name[1] .. '|<span class="slate">' .. attrib.name[1] .. '</span>]]') |
||
+ | end |
||
+ | end |
||
+ | |||
+ | tr:tag("td"):wikitext('Умение экипировки: [[' .. row.equip_power_name .. ']]<br>' .. (#formatted_wikitext == 0 and (power.power_use ~= '' and power.power_use or power.item_ui_equip_power) or table.concat(formatted_wikitext, '<br>')) .. '<br>+' .. power.stat_universal .. ' <span class="slate">Общий рейтинг</span>'):done() |
||
⚫ | |||
+ | for _, power in ipairs(result_combat_power) do |
||
+ | tr:tag("td"):wikitext('Боевое умение: [[' .. row.combat_power_name .. ']]<br>' .. power.power_use):done() |
||
+ | end |
||
⚫ | |||
+ | |||
⚫ | |||
return tbl |
return tbl |
||
end |
end |
Текущая версия от 12:41, 8 февраля 2024
Для документации этого модуля может быть создана страница Модуль:Mount table/doc
local itemIcon = require('Модуль:Item_icon')
local Mount = require('Модуль:Mount')
local attributes = mw.loadData('Модуль:Item/Attributes') -- База данных параметров предметов
local p = {}
local cargo = mw.ext.cargo
local insignia = {
['универсальная ячейка'] = '[[Файл:Универсальная ячейка знаков.png|32px|Универсальная ячейка знаков|ссылка=]]',
['ячейка просвещенных знаков'] = '[[Файл:Просвещенный знак.png|32px|Ячейка просвещенных знаков|ссылка=]]',
['ячейка серповидных знаков'] = '[[Файл:Серповидный знак.png|32px|Ячейка серповидных знаков|ссылка=]]',
['ячейка украшенных знаков'] = '[[Файл:Украшенный знак.png|32px|Ячейка украшенных знаков|ссылка=]]',
['ячейка царственных знаков'] = '[[Файл:Царственный знак.png|32px|Ячейка царственных знаков|ссылка=]]',
['ячейка шипастых знаков'] = '[[Файл:Шипастый знак.png|32px|Ячейка шипастых знаков|ссылка=]]',
}
function p.Main( frame )
local tables = 'Items'
local fields = '_pageName, name, quality, icon, slot1, slot2, slot3, slot4, insignia_bonuses, equip_power_name, combat_power_name'
local args = {
where='categories HOLDS "Скакун" AND quality="'..frame.args['качество']..'"',
groupBy = "_pageName" ,
orderBy = '_pageName',
}
local result = cargo.query( tables, fields, args )
local r = result[1]
local tbl = mw.html.create('table')
tbl:addClass('wikitable sortable filter-table-mount jquery-tablesorter')
tbl:tag("th"):attr('style', 'width: 15%'):wikitext("Скакун"):done()
tbl:tag("th"):attr('style', 'width: 20%'):wikitext("Список бонусов знака"):done()
if r['equip_power_name'] ~= nil then
tbl:tag("th"):wikitext("Умение экипировки"):done()
end
if r['combat_power_name'] ~= nil then
tbl:tag("th"):attr('style', 'width: 40%'):wikitext("Боевое умение"):done()
end
tbl:done()
count = #tbl
for _, row in ipairs(result) do
local slots = {}
for i = 1, 4 do
local slot = row["slot" .. i]
if slot ~= '' then
table.insert(slots, slot)
end
end
tr = tbl:tag("tr"):attr("data-filter", table.concat(slots,', '))
tr:tag("td"):wikitext(itemIcon.Main({args={row._pageName,""}})):done()
local bonuses = {}
if row.insignia_bonuses then
for bonus in string.gmatch(row.insignia_bonuses, "[^,]+") do
bonus = mw.ustring.gsub(bonus, "^%s*(.-)%s*$", "%1")
table.insert(bonuses, "<li>[[ " .. bonus .. " ]]</li>")
end
end
tr:tag("td"):wikitext('<div style="text-align: center">' .. insignia[mw.ustring.lower(row.slot1)] .. ' + ' .. insignia[mw.ustring.lower(row.slot2)] .. ' + ' .. insignia[mw.ustring.lower(row.slot3)] .. (row.slot4 and ' + ' .. insignia[mw.ustring.lower(row.slot4)] or "") .. '</div><div style="overflow: auto; max-height:'..(row.slot4 and 250 or 200)..'px;"><ul>'..table.concat(bonuses,'\n')..'</ul></div>'):done()
local tables_powers = 'Powers'
local fields_powers = '_pageName, name, icon, item_level, type, power_use, item_ui_equip_power, hit_points, power, accuracy, combat_advantage, critical_strike, critical_severity, critical_avoidance, forte, stamina_regen, deflect, awareness, movement_speed, defense, stat_universal'
local args_equip_power = {
where = 'type = "Умение экипировки" AND name = "'.. row.equip_power_name .. '"'
}
local args_combat_power = {
where = 'type = "Боевое умение" AND name = "'.. row.combat_power_name .. '"'
}
local result_equip_power = cargo.query( tables_powers, fields_powers, args_equip_power )
local result_combat_power = cargo.query( tables_powers, fields_powers, args_combat_power )
for _, power in ipairs(result_equip_power) do
local formatted_wikitext = {}
for _, attrib in ipairs(attributes) do
if power[attrib.fields_cargo] then
table.insert(formatted_wikitext, '+' .. power[attrib.fields_cargo] .. ' [[' .. attrib.name[1] .. '|<span class="slate">' .. attrib.name[1] .. '</span>]]')
end
end
tr:tag("td"):wikitext('Умение экипировки: [[' .. row.equip_power_name .. ']]<br>' .. (#formatted_wikitext == 0 and (power.power_use ~= '' and power.power_use or power.item_ui_equip_power) or table.concat(formatted_wikitext, '<br>')) .. '<br>+' .. power.stat_universal .. ' <span class="slate">Общий рейтинг</span>'):done()
end
for _, power in ipairs(result_combat_power) do
tr:tag("td"):wikitext('Боевое умение: [[' .. row.combat_power_name .. ']]<br>' .. power.power_use):done()
end
end
tbl:tag("td"):attr('colspan', count):wikitext("<b>Не найдено</b>"):done()
return tbl
end
return p