mirror of
https://github.com/Kiritow/OpenComputerScripts.git
synced 2024-03-22 13:10:46 +08:00
Add giant storage
This commit is contained in:
parent
1f15b7529a
commit
d65cb87186
86
giant_storage.lua
Normal file
86
giant_storage.lua
Normal file
|
@ -0,0 +1,86 @@
|
|||
local component = require("component")
|
||||
local sides = require("sides")
|
||||
local serialization = require("serialization")
|
||||
|
||||
local function getSum(device)
|
||||
local unit=0
|
||||
local cnt=0
|
||||
local allunit=0
|
||||
|
||||
local sz=device.getInventorySize(sides.north)
|
||||
|
||||
-- faster enum
|
||||
local x=device.getAllStacks(sides.north)
|
||||
while true do
|
||||
local y=x()
|
||||
if(y==nil) then
|
||||
break
|
||||
end
|
||||
if(y.size~=nil) then
|
||||
cnt=cnt+y.size
|
||||
unit=unit+1
|
||||
end
|
||||
end
|
||||
|
||||
allunit=sz
|
||||
|
||||
sz=device.getInventorySize(sides.south)
|
||||
|
||||
-- faster enum
|
||||
x=device.getAllStacks(sides.south)
|
||||
while true do
|
||||
local y=x()
|
||||
if(y==nil) then
|
||||
break
|
||||
end
|
||||
if(y.size~=nil) then
|
||||
cnt=cnt+y.size
|
||||
unit=unit+1
|
||||
end
|
||||
end
|
||||
|
||||
allunit=allunit+sz
|
||||
|
||||
return cnt,unit,allunit
|
||||
end
|
||||
|
||||
while true do
|
||||
local lst=component.list("inventory_controller")
|
||||
|
||||
local sumunit=0
|
||||
local totalunit=0
|
||||
local sum=0
|
||||
local idx=1
|
||||
while true do
|
||||
local addr=lst()
|
||||
if(addr==nil) then
|
||||
break
|
||||
end
|
||||
print("Counting " .. idx)
|
||||
local val,unit,allunit=getSum(component.proxy(addr))
|
||||
print("ChestGroup " .. idx .. " has " .. val .. " items")
|
||||
sum=sum+val
|
||||
sumunit=sumunit+unit
|
||||
totalunit=totalunit+allunit
|
||||
idx=idx+1
|
||||
end
|
||||
|
||||
local str="Total " .. sum .. " items of " .. totalunit*64 .. " (" .. sum/totalunit/64*100 .. "%). " ..
|
||||
sumunit .. " of " .. totalunit .. " units used (" .. sumunit/totalunit*100 .. "%) "
|
||||
|
||||
print("Total " .. sum .. " items")
|
||||
|
||||
local tb={}
|
||||
tb.item=sum
|
||||
tb.maxitem=totalunit*64
|
||||
tb.unit=sumunit
|
||||
tb.maxunit=totalunit
|
||||
|
||||
print(str)
|
||||
|
||||
component.modem.broadcast(10010,str)
|
||||
component.modem.broadcast(10011,serialization.serialize(tb))
|
||||
|
||||
print("Waiting for next loop...")
|
||||
os.sleep(5)
|
||||
end
|
Loading…
Reference in New Issue
Block a user