Писать программы для eeprom - то еще занятие. Попробуем облегчить этот процесс.
в \config\OpenComputers.cfg устанавливаем bufferChanges=false
Это отключит буферизацию, и все изменения файлов в каталогах сохранения будут немедленно отображены внутри игрыЗагружаем игру в сингл, строим себе базу, ставим там компьютер, и инсталлируем на него OpenOS.После этого, в каталоге \saves\%save_name%\opencomputers\ появится UID нашего виртуального "винчестера", со всем содержимымЗаписываем туда файл bibi
local gpu = component.proxy(component.list("gpu")())
gpu.bind(component.list("screen")())
local cy=1
prn=function(...)
local t={...}
for i=1,#t do t[i]=tostring(t[i]) end
gpu.set(1,cy,table.concat(t, ' '))
cy=cy+1
end
local readfile=function(f)
for addr in component.list("filesystem") do
local fs=component.proxy(addr)
local h=fs.open(f)
if h then
--костыль для init.lua
computer.getBootAddress=function() return addr end
local s,r='',''
while r do
r=fs.read(h,math.huge)
s=s..(r or "")
end
fs.close(h)
return s,f
end
end
end
prn('bibi: press a key to force init.lua') computer.beep(440)
local s,f=readfile('boot.lua')
if ({computer.pullSignal(1)})[1]=='key_down' or not s then
s,f=readfile('init.lua')
end
if s then
local r,e=load(s,f)
if r then r,e=pcall(r) end
prn('bibi:', r, e)
else
prn('bibi: no file')
end
prn('bibi: press a key to reboot')
repeat until ({computer.pullSignal()})[1]=='key_down'
computer.shutdown(true)
И файл boot.lua
prn('Hello world', nil~=false)
После чего в OpenOS делаем:
flash -q bibi bibi
reboot
Наблюдаем наш хелловорлд и убеждаемся, что nil и false - это две большие разницы:
Теперь открываем наш boot.lua в блокноте или в чем вам удобно писать код, разминаем мозги и пальцы и погружаемся в процесс творчества.
В одном окне блокнот с кодом, в другом - майнкрафт с нашим виртуальным компьютером. Написали-сохранили-проверили.
---
Ошибки компиляции нашего кода будут выглядеть так:
Ошибки выполнения так:
А если нам захочется в OpenOS то мы нажмем секретную кнопку "а кей" когда наш bibi пискнет при старте.Также в OpenOS мы попадем если bibi не найдет файла boot.lua. А если и init.lua не найдет, то скажет "no file" и будет ждать когда мы исправим ситуацию
ЗЫ
Не злоупотребляйте prn(), она очень служебная и не умеет scroll, конечно scroll это всего лишь условие и две строки, но зачем?!
Пишите свои prn-ы с преферансом и барышнями, предварительно поиграв ну хотя-бы с таким вот хелловорлдом: