Neverwinter Wiki
Регистрация
Advertisement

Для документации этого модуля может быть создана страница Модуль:Item icon/doc

local p = {}

--Эта функция используется для получения информации о предмете из базы данных Cargo и создания соответствующего HTML-кода для отображения иконки, названия и качества предмета на странице вики.
function p.Main( frame )
	local cargo = mw.ext.cargo

	-- Инициализируем переменную для хранения HTML-кода предмета.
    local itemHTML = nil

	-- Указываем название таблицы, с которой работаем, и поля, которые нужно выбрать.
    local tables = 'Items'
    local fields = '_pageName, icon, name, quality'

	-- Создаем аргументы для запроса к базе данных Cargo.
    local args = {
        where = '_pageName = "' .. frame.args[1] .. '"', -- Условие выборки по названию предмета.
        groupBy = '_pageName', -- Группировка результатов по названию предмета.
        limit = 1, -- Ограничение на количество выбранных результатов.
    }

	-- Выполняем запрос к базе данных Cargo.
    local result = cargo.query( tables, fields, args )
	
	-- Если запрос вернул хотя бы один результат, то сохраняем его в переменную r.
    local r = result[1]
    
	-- Если предмета не существует, создаем ссылку на страницу с названием введенным в аргументе.
    if not r then
		local itemName = frame.args[1]
		itemHTML = string.format('[[%s|<span class="ajaxttlink">%s</span>]]', itemName, itemName)
	else
		-- Если предмет существует, создаем иконку и ссылку на страницу.
		local item_icon = string.format('<span style="vertical-align: text-bottom">[[Файл:%s|20px|bottom|ссылка=%s]]</span>',
			(r['icon'] and r['icon'] or ''), -- Иконка предмета.
			r['_pageName'] -- Название страницы предмета.
		)

		-- Создаем таблицу для соответствия строковых значений их соответствующим значениям качества предметов.
		local quality_map = {
			['мусор']          = 'junk',
			['обычный']        = 'common',
			['необычный']      = 'uncommon',
			['редкий']         = 'rare',
			['эпический']      = 'epic',
			['легендарный']    = 'legendary',
			['мифический']     = 'mythic',
			['предмет задачи'] = 'quest',
			['quest']          = 'quest',
			['задача']         = 'quest',
			['common']        = 'common',
			['uncommon']      = 'uncommon',
			['rare']         = 'rare',
			['epic']      = 'epic',
			['legendary']    = 'legendary',
			['mythic']     = 'mythic',
		}

		-- Инициализируем переменную item_quality как nil.
		local item_quality = nil

		-- Проверяем, задано ли значение для параметра "качество" в вызове шаблона.
		if frame.args['качество'] ~= nil and frame.args['качество'] ~= '' then
			-- Если параметр "качество" задан, то приводим его значение к нижнему регистру.
			local quality_input = mw.ustring.lower(frame.args['качество'])
			-- Используем таблицу quality_map для получения соответствующего значения качества предмета.
			item_quality = quality_map[quality_input]
		else
			-- Если параметр "качество" не задан, то получаем значение качества предмета из базы данных.
			item_quality = quality_map[mw.ustring.lower(r['quality'])]  
		end

		-- Инициализируем переменную item_name как nil.
		local item_name = nil
		if frame.args[2] ~= nil and frame.args[2] ~= '' then
			-- Если второй аргумент был передан и не пуст, то используем его в качестве названия предмета.
			item_name = frame.args[2]
		else
			-- Если второй аргумент не был передан или пуст, то используем название предмета из базы данных.
			item_name = r['_pageName']
		end

		-- Создаем строку с помощью шаблона строки.
		itemHTML = string.format('%s <span class="%s">[[%s|<span class="ajaxttlink">%s</span>]]</span>',
			item_icon, -- Иконка предмета.
			item_quality, -- Качество предмета.
			r['_pageName'], -- Название страницы предмета.
			item_name -- Название страницы предмета для отображения внутри тега span.
		)
    end

	-- Возвращаем строку.
    return itemHTML
end
return p
Advertisement