Neverwinter Wiki
мНет описания правки
м (Отмена правки 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,equip_power,combat_power'
+
local fields = '_pageName, name, quality, icon, slot1, slot2, slot3, slot4, insignia_bonuses, equip_power_name, combat_power_name'
 
local args = {
 
local args = {
where='type HOLDS "Скакун" AND quality="'..frame.args['качество']..'"',
+
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: 15%'):wikitext("Скакун"):done()
tbl:tag("th"):attr('style', 'width: 12%'):wikitext("Ячейки знаков"):done()
+
tbl:tag("th"):attr('style', 'width: 20%'):wikitext("Список бонусов знака"):done()
 
if r['equip_power_name'] ~= nil then
tbl:tag("th"):attr('style', 'width: 20%'):wikitext("Бонусы знаков"):done()
 
 
tbl:tag("th"):wikitext("Умение экипировки"):done()
if r['equip_power'] ~= "" then
 
 
end
tbl:tag("th"):wikitext("Умение экипировки"):done()
 
 
if r['combat_power_name'] ~= nil then
end
 
 
tbl:tag("th"):attr('style', 'width: 40%'):wikitext("Боевое умение"):done()
if r['combat_power'] ~= "" then
 
 
end
tbl:tag("th"):wikitext("Боевое умение"):done()
 
 
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
tbl:done()
 
count = 0
 
for k,v in pairs(tbl) do
 
count = count + 1
 
 
end
 
end
   
 
tr = tbl:tag("tr"):attr("data-filter", table.concat(slots,', '))
--Construct the rows in the table
 
 
tr:tag("td"):wikitext(itemIcon.Main({args={row._pageName,""}})):done()
for _,row in ipairs(result) do
 
  +
local dataFilter = {row.slot1, row.slot2, row.slot3}
 
  +
local bonuses = {}
tr = tbl:tag("tr"):attr("data-filter", table.concat(dataFilter,', '))
 
  +
if row.insignia_bonuses then
tr:tag("td"):wikitext(itemIcon.Main({args={row._pageName,""}})):done()
 
 
for bonus in string.gmatch(row.insignia_bonuses, "[^,]+") do
if row.slot3 ~= "" then
 
  +
bonus = mw.ustring.gsub(bonus, "^%s*(.-)%s*$", "%1")
tr:tag("td"):wikitext(insignia[row.slot1], ' + ', insignia[row.slot2], ' + ', insignia[row.slot3]):done()
 
 
table.insert(bonuses, "<li>[[ " .. bonus .. " ]]</li>")
else
 
tr:tag("td"):wikitext(insignia[row.slot1], ' + ', insignia[row.slot2]):done()
 
end
 
local insigniaBonuses = {}
 
for i in string.gmatch(row.insignia_bonuses, "[^,]+") do
 
table.insert(insigniaBonuses , '<li>[['..i..']]</li>')
 
end
 
tr:tag("td"):wikitext('<ul>'..table.concat(insigniaBonuses,'\n')..'</ul>'):done()
 
if r['equip_power'] ~= "" then
 
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")
 
  +
tr:tag("td"):att('css','rtext-align: center; display: none'):attr('colspan', count):wikitext('<b>Не найдено</b>'):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
 
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