Этот модуль реализует шаблон
local slot = require('Модуль:Инвентарный слот').slot local GTCell = require('Модуль:Обработка').interface local CraftCell = require('Модуль:Интерфейс').craftingTable local a1 = { 'ыль' , 'соль' , 'ая' , 'ный' , 'орошок' , 'песок'} local b1 = { 'ыли' , 'соли' , 'ой' , 'ного' , 'орошка' , 'песка'} -- Первая строчная буква local lcfirst = function(s) local s1 = mw.ustring.sub(s,1,1) s1 = mw.ustring.lower(s1) local s2 = mw.ustring.sub(s,2) s = s1 .. s2 return s end -- Предмет для строки-заголовка local addSlot = function( item, mod) return slot{ [1] = item, ["мод"] = mod, ["класс"] = 'invslot-plain', ["масштаб"] = '0.5', ["стиль"] = 'top:-1px' } end -- Строка-заголовок local addHeadLine = function(body, block, text, mod) local head = body:tag('tr') local head_1 = head:tag('th') head_1:attr( 'colspan', '2' ) head_1:wikitext("'''" .. addSlot(block, mod) .. text .. "'''") end -- Ячейка с машиной local addGTCell = function( line, progress, NewArgs ) local cell = line:tag('td') NewArgs["Прогресс"] = progress cell:wikitext(GTCell(NewArgs)) end -- Ячейка с верстаком local addCraftCell = function( line, input, output, mod ) local cell = line:tag('td') cell:css('padding','1px') cell:wikitext(CraftCell{["A1"] = 'Молот', ["A2"] = input, ["Выход"] = output, ["Мод"] = mod}) end -- Экспортируемые функции local p = {} p.procTable = function( f ) local args = f.args or f if f == mw.getCurrentFrame() then args = f:getParent().args else f = mw.getCurrentFrame() end -- Чтение и генерация аргументов local mod = args["МодБ"] or 'GregTech' local block = {} table.insert(block,args["РудаБ"]) if args["РудаБ2"] then table.insert(block,args["РудаБ2"]) if args["РудаБ3"] then table.insert(block,args["РудаБ3"]) if args["РудаБ4"] then table.insert(block,args["РудаБ4"]) if args["РудаБ5"] then table.insert(block,args["РудаБ5"]) end end end end block = table.concat(block,';') local SDust = {} table.insert(SDust,args["ПыльПороды"]) if args["ПыльПороды2"] then table.insert(SDust,args["ПыльПороды2"]) if args["ПыльПороды3"] then table.insert(SDust,args["ПыльПороды3"]) if args["ПыльПороды4"] then table.insert(SDust,args["ПыльПороды4"]) if args["ПыльПороды5"] then table.insert(SDust,args["ПыльПороды5"]) end end end end SDust = table.concat(SDust,';') local mercury = args["Ртуть"] local SPersulphate = args["Персульфат"] local out = args["Выход"] or '2' local oven = args["Обжиг"] local ingot = args["Слиток"] local nugget = args["Кусочек"] local nugget_num = args["Кусочков"] or 10 local blast = args["Домна"] local temp = args["Температура"] local calcite = args["Кальцит"] local magnet = args["Магнит"] local autoclave = args["Автоклав"] local gem = args["Самоцвет"] local rock = args["Камень"] local ore = args["Руда"] local crushed = 'Измельчённая ' .. lcfirst(ore) local purified = 'Очищенная ' .. lcfirst(ore) local centrifuged = 'Рафинированная ' .. lcfirst(ore) local dust = args["Пыль"] local dirty local clean if args["МРод"] then dirty = 'Загрязнённый ' .. lcfirst(mw.ustring.gsub(dust,'v:','')) clean = 'Очищенный ' .. lcfirst(mw.ustring.gsub(dust,'v:','')) else dirty = 'Загрязнённая ' .. lcfirst(mw.ustring.gsub(dust,'v:','')) clean = 'Очищенная ' .. lcfirst(mw.ustring.gsub(dust,'v:','')) end local chance = args["Шанс"] or '10' local ByProd1 = args["ПРесурс1"] local ByProd2 = args["ПРесурс2"] local ByProd3 = args["ПРесурс3"] local tiny1 = mw.ustring.gsub(ByProd1,'v:','') local tiny2 = mw.ustring.gsub(ByProd2,'v:','') for i=1,table.maxn(a1) do tiny1 = mw.ustring.gsub(tiny1, a1[i], b1[i]) tiny2 = mw.ustring.gsub(tiny2, a1[i], b1[i]) end tiny1 = 'Крошечная кучка ' .. lcfirst(tiny1) tiny2 = 'Крошечная кучка ' .. lcfirst(tiny2) if args["МРод2"] then tiny1 = tiny1 .. 'а' tiny2 = tiny2 .. 'а' end local ByProdM = args["ПРесурсД"] or ByProd1 --Построение таблицы local body = mw.html.create('table'):addClass('wikitable') body:css('text-align' , 'center') ----------- body:wikitext(addHeadLine(body, block, 'Блок руды', mod)) -- local line_1_1 = body:tag('tr') line_1_1:wikitext(addGTCell(line_1_1, 'Дробитель:gt5', {["Уровень"] = '3', ["Шанс2"] = chance, ["Шанс3"] = '50', ["Ресурс1"] = block, ["Выход1"] = crushed .. ',' .. out, ["Выход2"] = ByProdM, ["Выход3"] = SDust})) local hammer if not oven or oven == 'thaum:Ртуть' then hammer = crushed else hammer = oven end if out or '1' > '1' then hammer = hammer .. ',' .. out/2 end line_1_1:wikitext(addGTCell(line_1_1, 'Кузнечный молот:gt5', {["Ресурс1"] = block, ["Выход1"] = hammer})) -- if ingot or oven or calcite then local line_1_2 = body:tag('tr') if ingot then line_1_2:wikitext(addGTCell(line_1_2, 'Печь:gt5', {["Ресурс1"] = block, ["Выход1"] = ingot .. ',' .. math.ceil(out/2)})) elseif oven then line_1_2:wikitext(addGTCell(line_1_2, 'Печь:gt5', {["Ресурс1"] = block, ["Выход1"] = oven .. ',' .. math.ceil(out/4)})) else line_1_2:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]].</td>') end if calcite then line_1_2:wikitext(addGTCell(line_1_2, 'Электрическая доменная печь:gt5', {["Температура"] = '1500', ["Ресурс1"] = block, ["Ресурс2"] = 'Кальцитовая пыль', ["Выход1"] = 'v:Железный слиток,' .. calcite, ["Выход2"] = 'Кучка золы', })) else line_1_2:wikitext('<td>Нельзя обжечь в [[GregTech/Электрическая доменная печь|доменной печи]].</td>') end end ----------- body:wikitext(addHeadLine(body, crushed, 'Измельчённая руда', 'GregTech')) -- local line_2_1 = body:tag('tr') line_2_1:wikitext(addGTCell(line_2_1, 'Дробитель:gt5', {["Уровень"] = '2', ["Шанс2"] = '10', ["Ресурс1"] = crushed, ["Выход1"] = dirty, ["Выход2"] = ByProd1})) line_2_1:wikitext(addGTCell(line_2_1, 'Кузнечный молот:gt5', {["Ресурс1"] = crushed, ["Выход1"] = dirty})) -- local line_2_2 = body:tag('tr') if ingot or oven == 'thaum:Ртуть' then line_2_2:wikitext(addGTCell(line_2_2, 'Печь:gt5', {["Ресурс1"] = crushed, ["Выход1"] = nugget .. ',' .. nugget_num})) elseif blast then line_2_2:wikitext(addGTCell(line_2_2, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = crushed, ["Выход1"] = blast})) else line_2_2:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]].</td>') end line_2_2:wikitext(addCraftCell(line_2_2, crushed, dirty, mod)) -- local line_2_3 = body:tag('tr') line_2_3:wikitext(addGTCell(line_2_3, 'Термическая центрифуга:gt5', {["Ресурс1"] = crushed, ["Выход1"] = centrifuged, ["Выход2"] = tiny2, ["Выход3"] = 'Каменная пыль'})) line_2_3:wikitext(addGTCell(line_2_3, 'Рудопромывочная машина:gt5', {["Ресурс1"] = crushed, ["РесурсЖ1"] = 'Вода', ["РЖК1"] = '1000', ["Выход1"] = purified, ["Выход2"] = tiny1, ["Выход3"] = 'Каменная пыль'})) -- if SPersulphate or mercury then local line_2_4 = body:tag('tr') local bath1 = {} local bath2 = {} if SPersulphate then table.insert(bath1,'Персульфат натрия') table.insert(bath2,SPersulphate) end if mercury then table.insert(bath1,'Ртуть') table.insert(bath2,mercury) end bath1 = table.concat(bath1,';') bath2 = table.concat(bath2,';') line_2_4:wikitext(addGTCell(line_2_4, 'Химическая ванна:gt5', {["Шанс2"] = '70', ["Шанс3"] = '40', ["Ресурс1"] = crushed, ["РесурсЖ1"] = bath1, ["РЖК1"] = '1000', ["Выход1"] = purified, ["Выход2"] = bath2, ["Выход3"] = 'Каменная пыль'})) line_2_4:wikitext('<td> </td>') end ----------- body:wikitext(addHeadLine(body, purified, 'Очищенная руда', 'GregTech')) -- local line_3_1 = body:tag('tr') line_3_1:wikitext(addGTCell(line_3_1, 'Дробитель:gt5', {["Уровень"] = '2', ["Шанс2"] = '10', ["Ресурс1"] = purified, ["Выход1"] = clean, ["Выход2"] = ByProd2})) line_3_1:wikitext(addGTCell(line_3_1, 'Кузнечный молот:gt5', {["Ресурс1"] = purified, ["Выход1"] = clean})) -- local line_3_2 = body:tag('tr') line_3_2:wikitext(addGTCell(line_3_2, 'Термическая центрифуга:gt5', {["Ресурс1"] = purified, ["Выход1"] = centrifuged, ["Выход2"] = tiny2})) line_3_2:wikitext(addCraftCell(line_3_2, purified, clean, mod)) -- if ingot or rock or gem or oven == 'thaum:Ртуть' then local line_3_3 = body:tag('tr') if ingot or oven == 'thaum:Ртуть' then line_3_3:wikitext(addGTCell(line_3_3, 'Печь:gt5', {["Ресурс1"] = purified, ["Выход1"] = nugget .. ',' .. nugget_num})) elseif blast then line_3_3:wikitext(addGTCell(line_3_3, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = purified, ["Выход1"] = blast})) else line_3_3:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]].</td>') end if rock then line_3_3:wikitext(addGTCell(line_3_3, 'Просеиватель:gt5', {["Ресурс1"] = purified, ["Выход1"] = oven, ["Выход2"] = oven, ["Выход3"] = oven, ["Выход4"] = oven, ["Выход5"] = oven, ["Выход6"] = dust})) elseif gem then local gtgem = lcfirst(mw.ustring.gsub(oven,'v:','')) local ending if args["ЖРод"] then ending ='ая ' else ending ='ый ' end line_3_3:wikitext(addGTCell(line_3_3, 'Просеиватель:gt5', {["Ресурс1"] = purified, ["Выход1"] = 'Совершенн' .. ending .. gtgem, ["Выход2"] = 'Безупречн' .. ending .. gtgem, ["Выход3"] = oven, ["Выход4"] = 'Дефектн' .. ending .. gtgem, ["Выход5"] = 'Расколот' .. ending .. gtgem, ["Выход6"] = dust})) else line_3_3:wikitext('<td>Нельзя [[GregTech/Просеиватель|просеять]].</td>') end end ----------- body:wikitext(addHeadLine(body, centrifuged, 'Рафинированная руда', 'GregTech')) -- local line_4_1 = body:tag('tr') line_4_1:wikitext(addGTCell(line_4_1, 'Дробитель:gt5', {["Уровень"] = '2', ["Шанс2"] = '10', ["Ресурс1"] = centrifuged, ["Выход1"] = dust, ["Выход2"] = ByProd3})) line_4_1:wikitext(addGTCell(line_4_1, 'Кузнечный молот:gt5', {["Ресурс1"] = centrifuged, ["Выход1"] = dust})) -- local line_4_2 = body:tag('tr') if ingot or oven == 'thaum:Ртуть' then line_4_2:wikitext(addGTCell(line_4_2, 'Печь:gt5', {["Ресурс1"] = centrifuged, ["Выход1"] = nugget .. ',' .. nugget_num})) elseif blast then line_4_2:wikitext(addGTCell(line_4_2, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = centrifuged, ["Выход1"] = blast})) else line_4_2:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]].</td>') end line_4_2:wikitext(addCraftCell(line_4_2, centrifuged, dust, mod)) ----------- body:wikitext(addHeadLine(body, dirty, 'Загрязнённая пыль', 'GregTech')) -- local line_5_1 = body:tag('tr') line_5_1:wikitext(addGTCell(line_5_1, 'Центрифуга:gt5', {["Ресурс1"] = dirty, ["Выход1"] = dust, ["Выход2"] = tiny1})) if ingot then line_5_1:wikitext(addGTCell(line_5_1, 'Печь:gt5', {["Ресурс1"] = dirty, ["Выход1"] = ingot})) elseif blast then line_5_1:wikitext(addGTCell(line_5_1, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = dirty, ["Выход1"] = blast})) elseif autoclave then line_5_1:wikitext(addGTCell(line_5_1, 'Автоклав:gt5', {["Шанс1"] = '90;95', ["Ресурс1"] = dirty, ["РесурсЖ1"] = 'Вода; Дистиллированная вода', ["РЖК1"] = '200', ["Выход1"] = oven})) else line_5_1:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]]<br>или<br>кристаллизовать в [[GregTech/Автоклав|автоклаве]].</td>') end ----------- body:wikitext(addHeadLine(body, clean, 'Очищенная пыль', 'GregTech')) -- local line_6_1 = body:tag('tr') line_6_1:wikitext(addGTCell(line_6_1, 'Центрифуга:gt5', {["Ресурс1"] = clean, ["Выход1"] = dust, ["Выход2"] = tiny2})) if ingot then line_6_1:wikitext(addGTCell(line_6_1, 'Печь:gt5', {["Ресурс1"] = clean, ["Выход1"] = ingot})) elseif blast then line_6_1:wikitext(addGTCell(line_6_1, 'Электрическая доменная печь:gt5', {["Температура"] = temp, ["Ресурс1"] = clean, ["Выход1"] = blast})) elseif autoclave then line_6_1:wikitext(addGTCell(line_6_1, 'Автоклав:gt5', {["Шанс1"] = '90;95', ["Ресурс1"] = clean, ["РесурсЖ1"] = 'Вода; Дистиллированная вода', ["РЖК1"] = '200', ["Выход1"] = oven})) else line_6_1:wikitext('<td>Нельзя обжечь в [[GregTech/Печь|печи]]<br>или<br>кристаллизовать в [[GregTech/Автоклав|автоклаве]].</td>') end -- if magnet then local line_6_2 = body:tag('tr') local mt = {["Железо"] = {'железн','Кусочек железа'},["Золото"] = {'золот','v:Кусочек золота'},["Неодим"] = {'неодимов','Кусочек неодима'}} line_6_2:wikitext(addGTCell(line_6_2, 'Электромагнитный разделитель:gt5', {["Шанс2"] = '40', ["Шанс3"] = '20', ["Ресурс1"] = clean, ["Выход1"] = dust, ["Выход2"] = 'Кучка ' .. mt[magnet][1] .. 'ой пыли', ["Выход3"] = mt[magnet][2]})) line_6_2:wikitext('<td> </td>') end return tostring( mw.html.create( 'table' ):node( body ) ) end return p