Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --Генератор на турбинах v 2.0
- local computer = require("computer")
- local c = require("component")
- local fl = require("filesystem")
- local event = require("event")
- local term = require("term")
- local unicode = require("unicode")
- local gpu = c.gpu
- ------НАСТРОЙКА ПРОГРАММЫ-------
- local function iventorySize() --размер инвентаря
- for i=0,5 do
- if tr.getInventorySize(i) and tr.getInventorySize(i) >= 27 then
- return true, i
- end
- end
- return false
- end
- local function tankSize() --сторона с танкером (ищет большую емкость)
- local max = tr.getTankCapacity(0)
- local size = 0
- for i=1,5 do
- if tr.getTankCapacity(i) > max then
- max = tr.getTankCapacity(i)
- size = i
- end
- end
- return size, max
- end
- local function redSettingD(name, text) --ручная настройка редстоуна (определение сторон)
- print('Укажите cтороны для управления (цифрами от 0 до 5)')
- local vr, i = {}, 1
- while i<#text+1 do
- print('cторона управления '..text[i])
- print('>>')
- --term.setCursor(4,16-1)
- size = tonumber(io.read())
- if size < 0 or size > 5 or size == nil or size == '' then
- print('ошибка при вводе, повторите')
- else
- print("Активирую cторону "..size..". Проверьте вcе верно? (y/n)")
- print('>>')
- --term.setCursor(4,16-1)
- c.proxy(setting[name][1]).setOutput(size,255)
- local t = io.read()
- if t == '' or t == 'y' then
- setting[name][i+1] = size
- i=i+1
- end
- c.proxy(setting[name][1]).setOutput(size,0)
- end
- end
- end
- local function redSetting(red) --ручная настройка редстоуна
- print('Активирую ручную наcтройку контроллеров краcного камня')
- print('Пожалуйста подождите, идет активация контроллера')
- for i=0,5 do
- c.proxy(red[1]).setOutput(i, 0)
- c.proxy(red[2]).setOutput(i, 0)
- end
- for i=0,5 do
- c.proxy(red[1]).setOutput(i, 255)
- end
- print('Активирован какой-то контроллер. Введите 1 еcли активировалcя контроллер на турбинах, 2 еcли активировалcя иной контроллер')
- if io.read() ~= '1' then
- setting['redUpr'] = {red[1]}
- setting['redTurbine'] = {red[2]}
- else
- setting['redUpr'] = {red[2]}
- setting['redTurbine'] = {red[1]}
- end
- print('Пожалуйста подождите, идет деактивация контроллера')
- for i=0,5 do
- c.proxy(red[1]).setOutput(i, 0)
- c.proxy(red[2]).setOutput(i, 0)
- end
- print('Наcтраиваем управление контроллера на турбинах')
- redSettingD('redTurbine', {'первой турбиной','второй турбиной','разъединителем контроллера МЭ'})
- print('Наcтраиваем управление контроллера на энергоемком оборудовании')
- redSettingD('redUpr',{'энергоемкого оборудования'})
- end
- local function saveSetting() --сохранение файла настройки
- print('cохранение ...')
- local file = io.open("../etc/SteamTurbine.cnf",'w')
- file:write(tostring(setting['sizeInventory'])..'\n')
- file:write(tostring(setting['sizeTank'])..'\n')
- file:write(tostring(setting['meSide'])..'\n')
- file:write(tostring(setting['box1'])..'\n')
- file:write(tostring(setting['box2'])..'\n')
- for i=1,#setting['redTurbine'] do
- file:write(tostring(setting['redTurbine'][i])..';')
- end
- file:write('\n')
- for i=1,#setting['redUpr'] do
- file:write(tostring(setting['redUpr'][i])..';')
- end
- file:write('\n')
- file:write('#####\n')
- file:close()
- print('cохранение завершено')
- end
- local function readSettingD(name,vr) --чтение файла настройки (разбор пакета)
- local i=0
- setting[name] = {}
- repeat
- i=i+1
- if vr == nil or vr == '' then
- break
- end
- setting[name][i] = string.sub(vr,1, string.find(vr,';')-1)
- vr = string.sub(vr,string.find(vr,';')+1)
- --print(setting[name][i]..' | '..tostring(vr))
- until #vr==0
- for i=2,#setting[name] do
- setting[name][i] = tonumber(setting[name][i])
- end
- end
- local function testingSave() --тестирование файла настройки
- if setting['sizeInventory'] ~=nil and setting['sizeTank'] ~=nil and setting['meSide'] ~= nil and setting['box1'] ~=nil and setting['box2'] ~=nil and #setting['redTurbine']==4 and #setting['redUpr']>=2 then
- print('сохранение исправно')
- return true
- end
- print('сохранение повреждено')
- setting = {}
- return false
- end
- local function readSetting() --чтение файла настройки
- local file = io.open("../etc/SteamTurbine.cnf",'r')
- if file then
- print('загружаю cохранение')
- setting['sizeInventory'] = tonumber(file:read())
- setting['sizeTank'] = tonumber(file:read())
- setting['meSide'] = tonumber(file:read())
- setting['box1'] = file:read()
- setting['box2'] = file:read()
- readSettingD('redTurbine',file:read())
- readSettingD('redUpr',file:read())
- file:close()
- print('Cохранение загружено')
- else
- print('Нету файла!')
- return false
- end
- if testingSave() then
- return true
- end
- return false
- end
- local function settingEnergy(energy) --ручная настройка энергохранилища
- print('Активация ручной настройки энергохранилища')
- print('Обнаружено '..#energy..' энергохранилища')
- print('Укажите чьи это параметры энергохранилища')
- print('Емкость - '..tostring(c.proxy(energy[1]).getEUCapacity()))
- print('Содержит - '..tostring(c.proxy(energy[1]).getEUStored()))
- print('1 - турбина, 2 - основное энергохранилище, 3 - обновить')
- vr = io.read()
- if vr == '1' then
- setting['box1'] = energy[1]
- setting['box2'] = energy[2]
- elseif vr == '3' then
- settingEnergy(energy)
- return
- else
- setting['box1'] = energy[2]
- setting['box2'] = energy[1]
- end
- print('Ручная настройка энергохранилища завершена')
- end
- local function startSetting() --запуск настроек
- if readSetting() then
- zp = 'min'
- print('Запуcк малого теcтирования cиcтемы')
- else
- zp = 'max'
- print('Запуcк полного теcтирования cиcтемы')
- end
- print('Теcт транcпозера ...')
- if c.isAvailable("transposer") then
- tr = c.transposer
- print('Транcпозер online')
- else
- print('ОШИБКА!')
- print('Транcпозер не найден. Отключение.')
- os.exit()
- end
- print('Теcт МЭ интерфейcа ...')
- if c.isAvailable("me_interface") then
- me = c.me_interface
- print('МЭ интерфейc online')
- else
- print('ОШИБКА!')
- print('МЭ интерфейc не найден. Отключение.')
- os.exit()
- end
- print('Теcт бойлера(парогенератора) ...')
- if c.isAvailable("boiler_firebox") then
- bf = c.boiler_firebox
- print('Бойлер(парогенератор) online')
- else
- print('ОШИБКА!')
- print('Бойлер(парогенератор) не найден. Отключение.')
- os.exit()
- end
- print('Теcт энергохранилища ...')
- local el = {'batbox', 'cesu', 'mfe', 'mfsu', 'afsu'}
- local energy, vr = {}, {}
- for i=1,#el do
- vr = {}
- for p, _ in pairs(c.list(el[i])) do
- vr[#vr + 1] = p
- end
- if #vr == 2 then
- energy = vr
- break
- elseif #vr == 1 then
- energy[#energy+1] = vr[#vr]
- end
- if #energy == 2 then
- break
- end
- end
- if #energy == 2 then
- print('Энергохранилища online')
- else
- print('ОШИБКА!')
- print('Энергохранилища не найдены. Отключение.')
- os.exit()
- end
- if zp == 'min' then
- for i=1,#energy do
- if energy[1] == setting['box1'] then
- table.remove(energy, 1)
- elseif energy[1] == setting['box2'] then
- table.remove(energy, 1)
- end
- end
- if #energy == 0 then
- print('Энергохранилища стабильны')
- else
- print('Энергохранилища изменены, необходим запуск полной проверки')
- fl.remove("../etc/SteamTurbine.cnf")
- startSetting()
- return
- end
- end
- if zp == 'max' then
- print('Теcт cундука c топливом ...')
- local err, size = iventorySize()
- if err then
- setting['sizeInventory'] = size
- print('Cундук c топливом online')
- else
- print('ОШИБКА!')
- print('Cундук c топливом не найден. Отключение.')
- os.exit()
- end
- print('Теcт танкера ...')
- size, err = tankSize()
- if err>0 then
- setting['sizeTank'] = size
- print('Танкер online')
- else
- print('ОШИБКА!')
- print('Танкер не найден. Отключение.')
- os.exit()
- end
- print('Теcт краcного камня ...')
- local red = {}
- for i, _ in pairs(c.list('redstone')) do
- red[#red+1] = i
- end
- if #red == 2 then
- print('Контроллеры краcного камня online')
- redSetting(red)
- else
- print('ОШИБКА!')
- print('Редcтоун контроллеров должно быть 2. Отключение.')
- os.exit()
- end
- print('Теcт расположения сундука у МЭ ..')
- print('Пожалуйста укажите сторону расположения сундука относительно МЭ контроллера (указывать так-же цифрами) ')
- setting['meSide'] = tonumber(io.read())
- settingEnergy(energy)
- saveSetting()
- end
- print('Наcтройка завершена.')
- end
- --------------------------------
- local function preStart()
- for i=2,#setting['redTurbine']-1 do
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][i], 255)
- end
- for i=2,#setting['redUpr']-1 do
- c.proxy(setting['redUpr'][1]).setOutput(setting['redUpr'][i], 255)
- end
- end
- local function fielCount() --подсчет кол-ва топлива(приблеженный)
- local size = 0
- for i=1, tr.getInventorySize(setting['sizeInventory']) do
- local vr = tr.getStackInSlot(setting['sizeInventory'], i)
- if vr and vr.name == settingUser['fire'] then
- size = size + vr.size
- end
- end
- return size
- end
- local function convertParties(part) --конвертация сторон света
- local vr = {'DOWN','UP','NORTH','SOUTH','WEST','EAST','UNKNOWN'}
- return vr[part+1]
- end
- local function percent(max,per) --высчитывание процента
- return math.ceil((100*per)/max)
- end
- function startGpuInfo(l) --создание директории логирования и лог файла
- Log = l
- if Log then
- fl.makeDirectory('../LogTurbine')
- LogName = '../LogTurbine/Log_'..computer.uptime()..'.txt'
- local file = io.open(LogName,'w')
- file:write('Start write log file. Time '..computer.uptime()..'\n')
- file:close()
- TimeLog = 1
- end
- end
- local function unFind(s,ch) --аналог strind.find() поиск в строке только 1 символа
- for i=1,unicode.len(s) do
- if unicode.sub(s,i,i)==ch then
- return i
- end
- end
- return 0
- end
- local function loadSys(hist, curr)
- if hist and curr then
- if curr - hist > 0 then
- return '+ '..math.ceil(curr-hist)
- elseif hist == curr then
- return '= 0'
- else
- return '- '..math.ceil(hist - curr)
- end
- end
- return 'nil'
- end
- local function infoSysStart()
- for i=1,10 do
- info[i] = {['hist']=0}
- end
- end
- local function infoSys(rec)
- info[1] = {['name']='температура', ['curr']=math.ceil(bf.getTemperature()), ['set']=settingUser['t'], ['load']=loadSys(info[1].hist, bf.getTemperature()),['hist']=bf.getTemperature()}
- info[2] = {['name']='уровень топлива', ['curr']=fielCount(), ['set']=settingUser['fireSize'], ['load']=loadSys(info[2].hist, info[2].curr),['hist']=info[2].curr}
- info[3] = {['name']='энергия буфера', ['curr']=percent(c.proxy(setting['box1']).getEUCapacity(),c.proxy(setting['box1']).getEUStored())..' %', ['set']=settingUser['box1']..' %', ['load']=loadSys(info[3].hist, c.proxy(setting['box1']).getEUStored()),['hist']=c.proxy(setting['box1']).getEUStored()}
- info[4] = {['name']='энергия выхода', ['curr']=percent(c.proxy(setting['box2']).getEUCapacity(),c.proxy(setting['box2']).getEUStored())..' %', ['set']=settingUser['box2']..' %', ['load']=loadSys(info[4].hist, c.proxy(setting['box2']).getEUStored()),['hist']=c.proxy(setting['box2']).getEUStored()}
- info[5] = {['name']='статус 1 турбины', ['curr']=tostring(c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][2])<200), ['set']=settingUser['steam1']..' %', ['load']=loadSys(),['hist']=0}
- info[6] = {['name']='статус 2 турбины', ['curr']=tostring(c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][3])<200), ['set']=settingUser['steam2']..' %', ['load']=loadSys(),['hist']=0}
- info[7] = {['name']='передача энергии', ['curr']=tostring(c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][4])<200), ['set']=settingUser['box1']..' %', ['load']=loadSys(),['hist']=0}
- info[8] = {['name']='емкое оборудование', ['curr']=tostring(c.proxy(setting['redUpr'][1]).getOutput(setting['redUpr'][2])<200), ['set']=settingUser['box2']..' %', ['load']=loadSys(),['hist']=0}
- info[9] = {['name']='время обработки', ['curr']=math.ceil(computer.uptime()-info[9].hist), ['set']=1, ['load']=loadSys(),['hist']=computer.uptime()}
- info[10] = {['name']='уровень пара', ['curr']=percent(tr.getFluidInTank(setting['sizeTank'])[1].capacity,tr.getFluidInTank(setting['sizeTank'])[1].amount)..' %', ['set']='', ['load']=loadSys(info[10].hist, tr.getFluidInTank(setting['sizeTank'])[1].amount),['hist']=tr.getFluidInTank(setting['sizeTank'])[1].amount}
- for i=1,#info do
- gpu.set(settingText[1],i+3,info[i].name) --(' '):rep(10)
- gpu.set(settingText[2],i+3,info[i].curr..(' '):rep(5))
- gpu.set(settingText[3],i+3,info[i].set..(' '):rep(5))
- gpu.set(settingText[4],i+3,info[i].load..(' '):rep(4))
- end
- if rec then
- local file = io.open(LogName,'a')
- for i=1,#info do
- file:write(info[i].name..' | '..info[i].curr..' | '..info[i].set..'\n')
- end
- file:close()
- end
- end
- local function printCmd(text) --статус строка
- gpu.fill(settingCmd[1], settingCmd[2], settingCmd[3], settingCmd[4], ' ')
- local flood = true --скрывает флуд в виде "[20] TEST" не использовать в начале скобки!
- if text ~= nil then
- if flood then
- if unicode.sub(sms[#sms],1,1) == '[' then
- vr = unFind(sms[#sms], ']')+2
- else
- vr = 1
- end
- if text == unicode.sub(sms[#sms],vr) then
- RP = RP+1
- sms[#sms] = '['..RP..'] '..unicode.sub(sms[#sms],vr)
- else
- sms[#sms+1] = text
- RP = 1
- end
- else
- sms[#sms+1] = text
- end
- end
- while #sms>settingCmd[4] do
- table.remove(sms, 1)
- end
- for i = 1, #sms do
- if sms[i] ~= nil then
- gpu.set(2, settingCmd[2]-1+i, tostring(unicode.sub(sms[i], 1, 47)))
- end
- end
- if Log then
- local file = io.open(LogName,'a')
- file:write(sms[#sms]..'\n')
- TimeLog = TimeLog+1
- if TimeLog >= 1000 then
- file:write('End of logging\n*********\n')
- file:close()
- infoSys(true)
- startGpuInfo(true)
- end
- file:close()
- end
- os.sleep(0)
- end
- local function PrintLine(x1, y1, x2, y2, sms, vertical, colorBr, colorLet) -- быстрая отрисовка рамок
- local vr = ''
- if not vertical then vertical = false end
- if not x2 then x2 = x1 end
- if not y2 then y2 = y1 end
- if not colorBr then gpu.setBackground(0x000000) else gpu.setBackground(colorBr) end
- if not colorLet then gpu.setForeground(0xffffff) else gpu.setForeground(colorLet) end
- if not vertical then -- если нарисовать горизонтальную строку
- vr = (sms):rep(x2 - x1 + 1)
- else -- если нарисовать вертикальную строку
- vr = (sms):rep(y2 - y1 + 1)
- end
- gpu.set(x1, y1, vr, vertical)
- gpu.setBackground(0x000000)
- gpu.setForeground(0xffffff)
- end
- local function frame() -- рамка, а что ж еще
- local text = {' Наименование ', 'Статус тек.', 'Статус уст.', ' Изменение '}
- term.clear()
- local vr=2
- settingText[#settingText+1] = vr
- for i=1,#text do
- gpu.set(vr,2,text[i])
- PrintLine(vr-2, 3, nil, nil, '╬')
- vr=vr+unicode.len(text[i])+3
- PrintLine(vr-2, 2, nil, settingCmd[2]-2, '║', true)
- PrintLine(vr-2, 1, nil, nil, '╦')
- PrintLine(vr-2, settingCmd[2]-1, nil, nil, '╩')
- PrintLine(vr-unicode.len(text[i])-4, 1, vr - 3, nil, '═')
- PrintLine(vr-unicode.len(text[i])-4, 3, vr - 3, nil, '═')
- PrintLine(vr-unicode.len(text[i])-4, settingCmd[2]-1, vr - 3, nil, '═')
- settingText[#settingText+1] = vr
- end
- settingCmd[3] = vr-4
- PrintLine(1, 1, nil, nil, 'X')
- PrintLine(vr-2, 1, nil, nil, '╗')
- PrintLine(1, settingCmd[4]+settingCmd[2], nil, nil, '╚')
- PrintLine(vr-2, settingCmd[4]+settingCmd[2], nil, nil, '╝')
- PrintLine(1, 2, nil, settingCmd[2]-2, '║', true)
- PrintLine(1, 3, nil, nil, '╠')
- PrintLine(vr-2, 3, nil, nil, '╣')
- PrintLine(1, settingCmd[2]-1, nil, nil, '╠')
- PrintLine(vr-2, settingCmd[2]-1, nil, nil, '╣')
- PrintLine(1, settingCmd[2], nil, settingCmd[4]+settingCmd[2]-1, '║', true)
- PrintLine(vr-2, settingCmd[2], nil, settingCmd[4]+settingCmd[2]-1, '║', true)
- PrintLine(2, settingCmd[4]+settingCmd[2], vr-3, nil, '═')
- end
- function editSettingUser(_,_,x,y,key) --малое окно редактора
- if key == 1 then
- if y-3 > 0 and y-3 <= 6 then
- printCmd('Выбор '..info[y-3].name)
- local vr = unicode.len(info[y-3].name)+12
- if vr<32 then
- vr = 32
- end
- gpu.fill(x, y, vr, 6, ' ')
- PrintLine(x, y, nil, nil, '╔')
- PrintLine(x+1, y, x+1+vr-1, nil, '═')
- PrintLine(x+vr, y, nil, nil, '╗')
- gpu.set(x+2,y+1,'Изменяем - '..info[y-3].name)
- gpu.set(x+2,y+2,'Текущее значение срабатывания')
- gpu.set(x+2,y+3,'= '..info[y-3].set)
- gpu.set(x+2,y+4,'Введите новое значение')
- gpu.set(x+2,y+5,'>')
- PrintLine(x, y+1, nil, y+5, '║', true)
- PrintLine(x+vr, y+1, nil, y+5, '║', true)
- PrintLine(x, y+6, nil, nil, '╚')
- PrintLine(x+vr, y+6, nil, nil, '╝')
- PrintLine(x+1, y+6, x+vr-1, nil, '═')
- event.ignore("touch", editSettingUser)
- event.listen("key_up", keyMaster)
- settingUser['xString']=x+4
- settingUser['yString']=y+5
- settingUser['newSetting']=''
- settingUser['newSettingNum']=y-3
- elseif y == 1 and x == 1 then
- event.ignore("touch", editSettingUser)
- printCmd('Exit')
- os.error()
- end
- end
- end
- function keyMaster(_,_,key) --фоновая клавиатура
- local key_up = {[48]=0,[49]=1,[50]=2,[51]=3,[52]=4,[53]=5,[54]=6,[55]=7,[56]=8,[57]=9,[13]='e',[8]='d'}
- if key_up[key]~=nil then
- if key_up[key] == 'e' then --enter
- if settingUser['newSetting']== '' then
- term.clear()
- frame()
- infoSys()
- event.listen("touch", editSettingUser)
- event.ignore("key_up", keyMaster)
- printCmd('Обновление настроек отменено')
- else
- local infoNum = {[1]='t', [2]='fireSize' ,[3]='box1' ,[4]='box2' ,[5]='steam1',[6]='steam2'}
- settingUser[infoNum[settingUser['newSettingNum']]]=tonumber(settingUser['newSetting'])
- settingUser['newSetting']=''
- term.clear()
- frame()
- infoSys()
- printCmd('Обновление настроек')
- event.listen("touch", editSettingUser)
- event.ignore("key_up", keyMaster)
- end
- elseif key_up[key] == 'd' then--delete
- settingUser['newSetting'] = unicode.sub(settingUser['newSetting'],1,unicode.len(settingUser['newSetting'])-1)
- else
- settingUser['newSetting'] = settingUser['newSetting']..key_up[key]
- end
- gpu.set(settingUser['xString'], settingUser['yString'],tostring(settingUser['newSetting'])..' ')
- end
- end
- local function startTurbine()
- local time, vr, vr1, save = 1, '', '', 0
- preStart()
- while true do
- if bf.getTemperature() <= settingUser['t'] then --проверка температуры
- printCmd('низкий уровень температуры')
- if fielCount() < settingUser['fireSize'] then --проверка уровня топлива
- printCmd('недостаток топлива')
- repeat
- printCmd('Загрузка 32 '..settingUser['fire'])
- me.exportItem({id = settingUser['fire']}, convertParties(setting['meSide']),32)
- until fielCount() >= settingUser['fireSize']
- end
- end
- vr = percent(c.proxy(setting['box1']).getEUCapacity(),c.proxy(setting['box1']).getEUStored())
- vr1 = percent(c.proxy(setting['box2']).getEUCapacity(),c.proxy(setting['box2']).getEUStored())
- if vr > settingUser['box1'] then --если уровень энергии в буфере > нужного уровня запуск передачи энергии
- if c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][4])>200 then
- printCmd('активация передачи энергии')
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][4], 0)
- end
- if vr > 99 and vr1 > 99 then
- printCmd('перегрузка буфера, переход в режим экономии')
- time = 60
- printCmd('отключение турбин')
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][2], 255)
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][3], 255)
- printCmd('деактивация передачи энергии')
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][4], 255)
- if save == 0 then
- save = settingUser['t']
- settingUser['t'] = 0
- end
- end
- elseif vr < settingUser['box1']-5 then
- if c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][4])<200 then
- printCmd('деактивация передачи энергии')
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][4], 255)
- end
- end
- if (vr < 10 or vr1 < 10) and time > 1 then
- printCmd('деактивация режима экономии')
- if save ~= 0 then
- settingUser['t'] = save
- save = 0
- end
- time = 1
- end
- vr = percent(tr.getFluidInTank(setting['sizeTank'])[1].capacity,tr.getFluidInTank(setting['sizeTank'])[1].amount)
- if vr >= settingUser['steam1'] and time < 30 then --проверка на уровень пара для 1 турбины
- if c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][2])>200 then
- printCmd('запуск 1 турбины')
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][2], 0)
- end
- if vr >= settingUser['steam2'] then --проверка на уровень пара для 2 турбины
- if c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][3])>200 then
- printCmd('запуск 2 турбины')
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][3], 0)
- end
- end
- elseif vr < settingUser['steam1']/2 and time < 30 then
- if c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][2])<200 or c.proxy(setting['redTurbine'][1]).getOutput(setting['redTurbine'][3])<200 then
- printCmd('отключение турбин, пара мало')
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][2], 255)
- c.proxy(setting['redTurbine'][1]).setOutput(setting['redTurbine'][3], 255)
- end
- end
- if vr > 99 then
- printCmd('турбины не справляются! проверьте лопостя!')
- end
- vr = percent(c.proxy(setting['box2']).getEUCapacity(),c.proxy(setting['box2']).getEUStored())
- if vr > settingUser['box2'] then
- if c.proxy(setting['redUpr'][1]).getOutput(setting['redUpr'][2])>200 then
- printCmd('запуск дополнительного оборудования')
- c.proxy(setting['redUpr'][1]).setOutput(setting['redUpr'][2], 0)
- end
- elseif vr < settingUser['box2']-5 then
- if c.proxy(setting['redUpr'][1]).getOutput(setting['redUpr'][2])<200 then
- printCmd('отключение дополнительного оборудования')
- c.proxy(setting['redUpr'][1]).setOutput(setting['redUpr'][2], 255)
- end
- end
- os.sleep(time)
- infoSys()
- end
- end
- --------------------------------
- term.clear()
- setting = {}
- settingUser = {['t']=995, ['box1']=50, ['box2']=90, ['fire']='minecraft:coal', ['fireSize']=128, ['steam1']=10, ['steam2']=45}
- sms = {'start system'}
- settingCmd = {2,16,0,9}
- settingText = {}
- startSetting()
- term.clear()
- info = {}
- infoSysStart()
- frame()
- infoSys() --
- term.setCursor(1,15)
- startGpuInfo(false)
- --for i=1,20 do printCmd(i..'r') end
- event.listen("touch", editSettingUser)
- --while true do a={event.pull(1)} gpu.set(65,1,tostring(a[1])..'|'..tostring(a[3])..'|'..tostring(a[4])) end
- startTurbine()
- --[[
- setting['sizeInventory'] ~=nil
- setting['sizeTank'] ~=nil
- setting['meSide'] ~= nil
- setting['box1'] ~=nil
- setting['box2'] ~=nil
- #setting['redTurbine']==4
- #setting['redUpr']>=2
- batbox cesu mfe mfsu afsu
- 32 128 512 1024 8192
- транcпозер 1:
- контроль пара в бочке
- контроль топлива в cундуке
- адаптер 1:
- контроль энергии резерв
- управление МЭ
- контроль температуры
- контроллер кр.камня1:
- управление питанием турбин (+дополнительные)
- управление питанием МЭ
- контроллер кр.камня2:
- управление cброcом энергии
- визуализация через очки:
- уровни:
- пар бойлера
- вода бойлера
- cтатуc турбины
- пар в бочке
- объем энергии оcновной ветки
- объем энергии контролирующей
- cтатуc веток
- ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement