ФЭНДОМ


local p = {}
local importcoop = mw.loadData( "Модуль:Аугменты/Данные" )
local importconclave = mw.loadData( "Модуль:Аугменты/ДанныеКК" )
local Augment = importcoop.Augment
local AugmentConclave = importconclave.AugmentConclave
 
--Порядок обновления:
--   1. Добавить ["Имя Варфрэйма"] =  {[Номер] = Название, s1=Syndicats[Номер], s2=Syndicats[Номер]},
--            в Модуль:Аугменты/Данные
--   2. Добавить ["Имя Варфрэйма"] =  {s1=Syndicats[7]},
--            в Модуль:Аугменты/ДанныеКК
--   3. Второй пункт обязателен
--          Если что-то пошло не так, пните @Zero_Leaf
 
--local Syndicats = {"Стальной Меридиан","Арбитры Гексиса","Цефалон Суда","Последовательность Перрина","Новая Лока","Красная Вуаль","Конклав"}
 
---------------------------------------------------
--Проверяет используется ли аугмент а обоих режимах
---------------------------------------------------
 
function inConclave(user,i)
    if Augment[user][i] == AugmentConclave[user][i] then 
        return true
        else return false
        end
end
 
 
function AjaxHint(name)    
    return '<span class="AjaxTooltip" data-selector="#AjaxHint" data-pagename="'..name..'">[['..name..']]</span>'
end
 
function renderImage(name, size)
    if size == nill then size=190 end
    return "[[Файл:"..name.." вики.png|x"..size.."px|link="..name.."]]" 
end   
 
function inBetween(cart, val, ins)
        if val~= nil then 
            return ' '..ins..'&nbsp;'
            else return ''
    end
end  
 
 
------------------------------------------------------------------------
--Строит таблицу со всеми доступными аугментами для Аугмент моды навбокс
-----------------------------------------------------------------------
function p.augNavTable(frame)
    local Shared=require("Модуль:Функции")
    local cart= mw.html.create('table'):addClass('tpl-auras'):attr('style','width:100%;','cellpadding','0','border','0')
    for WFname in Shared.skpairs(Augment) do
        if not Augment[WFname].Placeholder then
           cart :tag('tr')
                :tag('th'):attr('style','width:5%'):wikitext('[['..WFname..']]'):done()
                :tag('td'):attr('style','width:95%'):wikitext(augRow(WFname)):done()
        end
    end
    return cart
end
 
function p.augNavTableC(frame)
        local Shared=require("Модуль:Функции")
    local cart= mw.html.create('table'):addClass('tpl-auras'):attr('style','width:100%;','cellpadding','0','border','0')
    for WFname in Shared.skpairs(AugmentConclave) do
           cart :tag('tr')
                :tag('th'):attr('style','width:5%'):wikitext('[['..WFname..']]'):done()
                :tag('td'):attr('style','width:95%'):wikitext(augRowC(WFname)):done()
    end
    return cart
end
 
function augRow(user)
    local cart = ""
    local val = nil
    for i=1, 9 do
        if Augment[user][i] then
            if not inConclave(user, i) then
                cart = cart..inBetween(cart, val, '•')
                 else
                cart = cart..inBetween(cart, 1, '⬥')  
            end
            cart = cart..AjaxHint(Augment[user][i])
            val=1 -- после первого успешного цикла активирует inBetween
        end
    end
    for i=1, 5 do
        if AugmentConclave[user][i] and AugmentConclave[user].PvE[i] and not inConclave(user, i) then
            -- если существует И доступен в кооперативе И не дублирует запись в Augment
            cart = cart..inBetween(cart, 1, '⬥') ..AjaxHint(AugmentConclave[user][i])
        end
    end
return cart
end
 
function augRowC(user)
    local both = "[[Файл:Общий_мод.png|20x20px|Общий мод|link=]] "
    local conclave = "[[Файл:Конклав_иконка_вики.png|20x20px|Конклав|link=Конклав]] "
    local cart = ""
    local val = nil
 
    for i=1, 5 do
        if AugmentConclave[user][i] then
            --cart = inBetween(cart, val, "⬥")
            if AugmentConclave[user].PvE[i] then
                cart = cart..both
            else
                cart = cart..conclave
            end
            cart = cart..AjaxHint(AugmentConclave[user][i])
            --val=1 -- после первого успешного цикла активирует inBetween
        end
    end
    if cart=="" then return " — " else return cart end
end
-----------------------------
--конец таблицы для инфобокса
-----------------------------
 
 
----------------------------------------------------------------------
--Строит галлерею с изображениями всех PvE аугментов указанного фрейма
--------------------------------------Используется в статьях аугментов
----------------------------------------------------------------------
function p.augGallery(frame)
    local user = frame.args[1]
    if not Augment[user] then return mw.html.create('font'):attr('color','red'):wikitext('Ошибка: Неверное название Варфрейма') end
    local Aug=Augment[user]
    local AugC=AugmentConclave[user]
    local cart= mw.html.create('div')
        cart
            :attr('style','display: flex; justify-content: space-around; flex-wrap: wrap;')
            :attr('align','center')
    for i=1, 10 do
        if Aug[i] then 
            cart
                :tag('div')
                :wikitext('[[Файл:'..Aug[i]..'_вики.png|x190px|link='..Aug[i]..']]<br/>[['..Aug[i]..']]')
        end
    end
    for i=1, 5 do
        if AugC[i] and AugC.PvE[i] and not inConclave(user, i) then
            cart
                :tag('div')
                :wikitext('[[Файл:'..AugC[i]..'_вики.png|x190px|link='..AugC[i]..']]<br/>[['..AugC[i]..']]')
        end
    end
    return cart
end
 
----------------------------------------------------------------------
--Строит галлерею с изображениями всех PvP аугментов указанного фрейма
----------------------------------------------------------------------
function p.augGalleryC(frame)
    local user = frame.args[1]
    if not AugmentConclave[user] then return mw.html.create('font'):attr('color','red'):wikitext('Ошибка: Неверное название Варфрейма') end
 
    local AugC=AugmentConclave[user]
    local cart= mw.html.create('div')
        cart
            :attr('style','display: flex; justify-content: space-around; flex-wrap: wrap;')
            :attr('align','center')
 
    for i=1, 5 do
        if AugmentConclave[user][i] then 
            cart
                :tag('div')
                :wikitext('[[Файл:'..AugC[i]..'_вики.png|x190px|link='..AugC[i]..']]<br/>[['..AugC[i]..']]')
        end
    end
 
    return cart
end
    --конец отрисовки для карусели в статьях--
 
 
 
----------------------------------------------------------------
--Строит большую таблицу с изображениями аугментов в кооперативе
--------------------------Используется в Категория:Моды-аугменты
----------------------------------------------------------------
function p.augTable(frame)
    local Shared=require("Модуль:Функции")
    local cart = mw.html.create('table')
    local carter = {}
   cart:addClass('emodtable'):attr('align','center')
    :tag('tr')
        :tag('th'):attr('rowspan','2'):wikitext('Варфрейм'):done()
        :tag('th'):attr('colspan','6'):wikitext('Моды-аугменты'):done()
        :done()
    :tag('tr')
        :tag('th'):wikitext('1 способность'):done()
        :tag('th'):wikitext('2 способность'):done()
        :tag('th'):wikitext('3 способность'):done()
        :tag('th'):wikitext('4 способность'):done()
        :tag('th'):attr('colspan','2'):wikitext('Пассив /<br>Конклав'):done()
        :done()
 
    for WFname, Aug in Shared.skpairs(Augment) do
        if not Aug.Placeholder then
        for i=1, 4 do
            carter[i] = mw.html.create('td')
            if Aug[i] then 
                carter[i]:wikitext(renderImage(Aug[i],135))
              else  
                  carter[i]:wikitext(' — ')
             end
            if Aug[i+5] then carter[i]:tag('br'):done():wikitext(renderImage(Aug[i+5],135))
            end
        end
 
        carter[5], carter[6] = nil
 
        if Aug[5] then carter[5] = mw.html.create('td')
            carter[5]:wikitext(renderImage(Aug[5],135))
        end
 
        for i=1, 4 do
            if AugmentConclave[WFname] and AugmentConclave[WFname][i] and AugmentConclave[WFname].PvE[i] and not inConclave(WFname, i) then               
                carter[6] = mw.html.create('td')
                carter[6]:wikitext(renderImage(AugmentConclave[WFname][i],135))break
             end
        end        
 
      if carter[5] and not carter[6] then carter[5]:attr('colspan','2')end
      if carter[6] and not carter[5] then carter[6]:attr('colspan','2')end
 
      if not carter[5] and not carter[6] then 
          carter[5] = mw.html.create('td'):attr('colspan','2'):wikitext(' — ')
          end
 
      cart
        :tag('tr')
            :tag('td'):wikitext(renderImage(WFname,120)..'<br />[['..WFname..']]'):done()
            :node(carter[1])
            :node(carter[2])
            :node(carter[3])
            :node(carter[4])
            :node(carter[5])
            :node(carter[6]) 
        end
        end
 
    return cart
end
-- иконки синдикатов. Больше не умещаются в таблицу.
--            "[[Файл:"..Aug.s1.." иконка вики.png|x28px|link="..Aug.s1.."]]"
--            <br />[[Файл:"..Aug.s2.." иконка вики.png|x28px|link="..Aug.s2.."]]"
--            "<br />[[Файл:"..Aug.s3.." иконка вики.png|x28px|link="..Aug.s3.."]]"
--    
 
 
----------------------------------------------------------
-------Строит таблицу с картинками всех аугментов Конклава 
------------------------Пропускает варфреймов без КК аугов 
--При передаче любого аргумента отображает всех варфреймов
---------------------Используется в Конклав/Доступные моды
----------------------------------------------------------
function p.augTableC(frame)
    local Shared=require("Модуль:Функции")
    local cart = ""
    local render_anyway = frame.args[1]
    if render_anyway=="" then render_anyway=nil end
    cart=cart..'\n{| class="emodtable" align="center"'
    cart=cart..'\n!rowspan="2"|Варфрейм'
    cart=cart..'\n!colspan="4"|Моды-аугменты'
    cart=cart..'\n!rowspan="2"|Синдикат'
    cart=cart..'\n|-'
    cart=cart..'\n!1 способность'
    cart=cart..'\n!2 способность'
    cart=cart..'\n!3 способность'
    cart=cart..'\n!4 способность'
    cart=cart..'\n|-'
    for WFname, Aug in Shared.skpairs(AugmentConclave) do
 
        if Aug[1] or Aug[2] or Aug[3] or Aug[4] or render_anyway then
 
        cart=cart..'\n|'..renderImage(WFname,140)..'<br />[['..WFname..']]'
        for j=1, 4 do
            if Aug[j] then cart = cart.."\n|"..renderImage(Aug[j],135)
              else cart = cart..'\n| — ' 
             end
        end
            cart=cart.."\n|[[Файл:"..Aug.s1.." иконка вики.png|x28px|link="..Aug.s1.."]]"
        cart = cart.."\n|-"
 
        end -- конец if
 
        end
    cart=cart.."\n|}"
    return cart
end
 
---------------------------------------------------
--Возвращает множество элементов Шаблон:Предложение
---------для каждого аугмента в указанном синдикате
---------------------------------------------------
function p.buildOfferedAugs(frame)
    local syn=frame.args[1]
    if syn=="" or syn==nil then return '<font color="red">ОШИБКА: Введите название синдиката</font>' end
    local carted={}
    local Offering=require("Модуль:Предложение")
 
    for userName, Aug in pairs(Augment) do
        if syn==Aug.s1 or syn==Aug.s2 then
        for i=1, 10 do
            if Aug[i] then  table.insert(carted, tostring(Offering.customOffering({Item=Aug[i],Cost="25,000", Rank=5, Selector="#AjaxHint"})))
            end
        end
        end
    end
 
    return table.concat( carted, ' ')
end
 
 
--------------------------------------------------------------------
--Возвращает список варфрэймов, принадледжащик к искомому синдикату
----в алфовитном порядке, викитекстом. Дляобновления статей вручную
--------------------------------------------------------------------
function p.getAllPatrons(frame)
    local syn=frame.args[1]
    local Shared=require("Модуль:Функции")
    local cart ={}
    for Warframe, Aug in Shared.skpairs(Augment) do
        if Aug.s1==syn or Aug.s2==syn then table.insert(cart, "&#91;&#91;"..Warframe.."&#93;&#93;") end
    end
    return table.concat(cart, ", ")
end
 
---------------------------------------------------------------------
--Функция отладки: Возвращает ссылки на аугменты указанного варфрейма
---------------------------------------------------------------------
function p.augLinks(frame)
    local rtrn = ""
    local user = frame.args[1]
    for i=1, 5 do
        if Augment[user][i] then rtrn = rtrn.."[["..Augment[user][i].. "]] " end
    end
    return rtrn
end
 
----------------------------------------------------------------------
--Функция отладки: Возвращает имя указаного аугмента указанного фрейма
----------------------------------------------------------------------
function p.augName(frame)
    local user = frame.args[1]
    local case = tonumber(frame.args[2]) or 1
        if Augment[user][case] then 
            return Augment[user][case]
    end 
end
 
return p
Материалы сообщества доступны в соответствии с условиями лицензии CC-BY-SA , если не указано иное.