Minecraft Wiki
Advertisement

Этот модуль реализует шаблон {{GTOreProc}}.

Зависимости

Смотрите также

local slot = require('Модуль:Инвентарный слот').slot
local GTCell = require('Модуль:GregTechProc').craftingTable
local CraftCell = require('Модуль:Интерфейс').craftingTable
local a1 = { 'ыль' , 'соль' , 'ая' , 'ный' , 'орошок' , 'песок'}
local b1 = { 'ыли' , 'соли' , 'ой' , 'ного' , 'орошка' , 'песка'}
-- Предмет для строки-заголовка
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', '3' )
	head_1:wikitext("'''" .. addSlot(block, mod) .. text .. "'''")
end
-- Ячейка с машиной
local addGTCell = function( line, progress, args )
	local cell = line:tag('td')
	cell:css('padding','1px')
	args["Прогресс"] = progress
	cell:wikitext(GTCell(args))
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 = {}

function p.procTable( f )

	local args = 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["Выход"]
	local oven = args["Обжиг"]
	local ingot = args["Слиток"]
	local nugget = args["Кусочек"]
	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 = 'Измельчённая ' .. mw.ustring.lower(ore)
	local purified = 'Очищенная ' .. mw.ustring.lower(ore)
	local centrifuged = 'Отцентрифуженная ' .. mw.ustring.lower(ore)
	local dust = args["Пыль"]
	local dirty
	local clean
	if args["МРод"] then 
		dirty = 'Загрязнённый ' .. mw.ustring.lower(dust)
		clean = 'Очищенный ' .. mw.ustring.lower(dust)
	else
		dirty = 'Загрязнённая ' .. mw.ustring.lower(dust)
		clean = 'Очищенная ' .. mw.ustring.lower(dust)
	end
	local chance = args["Шанс"] or '10'
	local ByProd1 = args["ПРесурс1"]
	local ByProd2 = args["ПРесурс2"]
	local ByProd3 = args["ПРесурс3"]
	local tiny1 = ByProd1
	local tiny2 = ByProd2
	for i=1,table.maxn(a1) do
		tiny1 = string.gsub(tiny1, a1[i], b1[i])
		tiny2 = string.gsub(tiny2, a1[i], b1[i])
	end
	tiny1 = 'Крошечная кучка ' .. mw.ustring.lower(tiny1)
	tiny2 = 'Крошечная кучка ' .. mw.ustring.lower(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, ["Выход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}))
	line_1_1:wikitext('<td>&nbsp;</td>')
--
	if calcite then
		local line_1_2 = body:tag('tr')
		line_1_2:wikitext('<td>&nbsp;</td>')
		line_1_2:wikitext('<td>&nbsp;</td>')
		line_1_2:wikitext(addGTCell(line_1_2, 'Электрическая доменная печь:gt5', {["Температура"] = '1500', ["Ресурс1"] = block, ["Ресурс2"] = 'Кальцитовая пыль', ["Выход1"] = 'v:Железный слиток,' .. calcite, ["Выход2"] = 'Кучка золы', }))
	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}))
	line_2_1:wikitext(addCraftCell(line_2_1, crushed, dirty, mod))
--
	local line_2_2 = body:tag('tr')
	line_2_2:wikitext(addGTCell(line_2_2, 'Рудопромывочная машина:gt5', {["Ресурс1"] = crushed, ["РесурсЖ1"] = 'Вода', ["РЖК1"] = '1000', ["Выход1"] = purified, ["Выход2"] = tiny1, ["Выход3"] = 'Каменная пыль'}))
	line_2_2:wikitext(addGTCell(line_2_2, 'Термическая центрифуга:gt5', {["Ресурс1"] = crushed, ["Выход1"] = centrifuged, ["Выход2"] = tiny2, ["Выход3"] = 'Каменная пыль'}))
	line_2_2:wikitext('<td>&nbsp;</td>')
--
	local line_2_3 = body:tag('tr')
	if SPersulphate or mercury then
		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_3:wikitext(addGTCell(line_2_2, 'Химическая ванна:gt5', {["Шанс2"] = '70', ["Шанс3"] = '40', ["Ресурс1"] = crushed, ["РесурсЖ1"] = bath1, ["РЖК1"] = '1000', ["Выход1"] = purified, ["Выход2"] = bath2, ["Выход3"] = 'Каменная пыль'}))
	else
		line_2_3:wikitext('<td>&nbsp;</td>')
	end
	line_2_3:wikitext('<td>&nbsp;</td>')
	line_2_3:wikitext('<td>&nbsp;</td>')
-----------
	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}))
	line_3_1:wikitext(addCraftCell(line_3_1, purified, clean, mod))
--
	local line_3_2 = body:tag('tr')
	line_3_2:wikitext('<td>&nbsp;</td>')
	line_3_2:wikitext(addGTCell(line_3_2, 'Термическая центрифуга:gt5', {["Ресурс1"] = purified, ["Выход1"] = centrifuged, ["Выход2"] = tiny2}))
	line_3_2:wikitext('<td>&nbsp;</td>')
-----------
	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}))
	line_4_1:wikitext(addCraftCell(line_4_1, centrifuged, dust, mod))
--
	local line_4_2 = body:tag('tr')
	line_4_2:wikitext('<td>&nbsp;</td>')
	line_4_2:wikitext('<td>&nbsp;</td>')
	line_4_2:wikitext('<td>&nbsp;</td>')
-----------
	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}))
	line_5_1:wikitext('<td>&nbsp;</td>')
	line_5_1:wikitext('<td>&nbsp;</td>')
-----------
	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}))
	line_6_1:wikitext('<td>&nbsp;</td>')
	line_6_1:wikitext('<td>&nbsp;</td>')
	
	return tostring( mw.html.create( 'table' ):node( body ) )
end

return p
Advertisement