119 lines
3.7 KiB
Lua
119 lines
3.7 KiB
Lua
rednet.open("back")
|
|
|
|
state = {}
|
|
ores = {}
|
|
|
|
thelog = {"", "", "", "", "", ""}
|
|
logsize = 6
|
|
logpos = 1
|
|
|
|
curjob = 69
|
|
firstjob = nil
|
|
totalfuel = 0
|
|
|
|
|
|
function getNextJob()
|
|
curjob = curjob + 1
|
|
return curjob - 1
|
|
end
|
|
|
|
function getOres(ore)
|
|
return ores[ore] or 0
|
|
end
|
|
|
|
function drawState()
|
|
-- server has 19x50 terminal
|
|
print(" [ Server Control Panel ]")
|
|
print()
|
|
print(" First Job: "..tostring(firstjob))
|
|
print(" Current Job: "..tostring(curjob))
|
|
print(" Fuel consumed: "..tostring(totalfuel).." ("..tostring(math.ceil(totalfuel/80))..")")
|
|
print()
|
|
n1 = tostring(getOres("minecraft:coal_ore"))
|
|
n2 = tostring(getOres("minecraft:iron_ore"))
|
|
n3 = tostring(getOres("minecraft:gold_ore"))
|
|
n4 = tostring(getOres("minecraft:lapis_ore"))
|
|
n5 = tostring(getOres("minecraft:redstone_ore"))
|
|
n6 = tostring(getOres("minecraft:emerald_ore"))
|
|
n7 = tostring(getOres("minecraft:diamond_ore"))
|
|
n8 = tostring(getOres("mekanism:tin_ore"))
|
|
n9 = tostring(getOres("mekanism:copper_ore"))
|
|
n10 = tostring(getOres("mekanism:osmium_ore"))
|
|
n11 = tostring(getOres("create:zinc_ore"))
|
|
n12 = tostring(getOres("create:copper_ore"))
|
|
print(" C I G "..n1.." "..n2.." "..n3)
|
|
print(" L R E D "..n4.." "..n5.." "..n6.." "..n7)
|
|
print(" T C O "..n8.." "..n9.." "..n10)
|
|
print(" Z C "..n11.." "..n12)
|
|
print()
|
|
print("--------------------------------------------------")
|
|
for i = logpos, (logpos + logsize - 1) do
|
|
print(thelog[((i-1) % logsize)+1]) -- map from 0..n-1 to 1..n
|
|
end
|
|
end
|
|
|
|
function log(s)
|
|
thelog[logpos] = s
|
|
logpos = (logpos + 1) % logsize
|
|
logpos = ((logpos - 1) % logsize ) + 1
|
|
drawState()
|
|
end
|
|
|
|
while true do
|
|
log("From what index do you want to resume jobs?")
|
|
x = read()
|
|
if tonumber(x) then
|
|
curjob = tonumber(x)
|
|
firstjob = tonumber(x)
|
|
break
|
|
end
|
|
log("That's not a number.")
|
|
end
|
|
|
|
while true do
|
|
sender, message, proto = rednet.receive()
|
|
if not message then
|
|
sleep(0.6)
|
|
else
|
|
if message == "syn" then
|
|
receiver = sender
|
|
rednet.send(receiver, "ack")
|
|
_, message, _ = rednet.receive()
|
|
if message then
|
|
if message == "gibjob" then
|
|
if rs.getInput("top") then
|
|
job = getNextJob()
|
|
rednet.send(receiver, tostring(job))
|
|
log("Found job request. Offering "..tostring(job))
|
|
else
|
|
rednet.send(receiver, "nojobs")
|
|
end
|
|
drawState()
|
|
elseif message == "report" then
|
|
_, job, _ = rednet.receive()
|
|
thejob = tonumber(job)
|
|
_, fuel, _ = rednet.receive()
|
|
thefuel = tonumber(fuel)
|
|
totalfuel = totalfuel + thefuel
|
|
while true do
|
|
_, ore, _ = rednet.receive()
|
|
if ore == "done" then
|
|
break
|
|
end
|
|
_, number, _ = rednet.receive()
|
|
--thenumber = tonumber(thenumber)
|
|
if ores[ore] then
|
|
ores[ore] = ores[ore] + tonumber(number)
|
|
else
|
|
ores[ore] = tonumber(number)
|
|
end
|
|
end
|
|
log("Job "..thejob.." has been completed")
|
|
drawState()
|
|
rednet.send(receiver, "thanks")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|