Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sleep(2)
- os.loadAPI("ocs/apis/sensor")
- s = sensor.wrap("top")
- m = peripheral.wrap("right")
- function contains(key)
- return itemTable[key] ~= nil
- end
- function addToTable(key, var)
- itemTable[key] = var
- end
- function addToTable1(key, var)
- solarTable[key] = var
- end
- function getMax(t)
- local maxVar = 0
- for k,v in pairs(t) do
- if v > maxVar then
- maxVar = v
- end
- end
- return maxVar
- end
- function getMin(t)
- local minVar = 0
- for k,v in pairs(t) do
- if v < minVar then
- minVar = v
- end
- end
- return minVar
- end
- function getMin(t)
- local minVar
- for k,v in pairs(t) do
- if minVar == nil then
- minVar = v
- end
- if v < minVar then
- minVar = v
- end
- end
- return minVar
- end
- itemTable = {}
- itemTable["Copper"] = 0
- itemTable["Iron Ingot"] = 0
- itemTable["Refined Iron"] = 0
- itemTable["Tin"] = 0
- itemTable["Coal Dust"] = 0
- itemTable["Redstone"] = 0
- itemTable["Cobblestone"] = 0
- itemTable["Glass"] = 0
- itemTable["Rubber"] = 0
- itemTable["Diamond"] = 0
- itemTable["Gold Ingot"] = 0
- itemTable["Oak Wood Planks"] = 0
- itemTableSolar = {}
- itemTableSolar["Copper"] = 3587
- itemTableSolar["Iron Ingot"] = 2560
- itemTableSolar["Refined Iron"] = 2633.5
- itemTableSolar["Tin"] = 2048
- itemTableSolar["Coal Dust"] = 1536
- itemTableSolar["Redstone"] = 3082
- itemTableSolar["Cobblestone"] = 4096
- itemTableSolar["Glass"] = 1536
- itemTableSolar["Rubber"] = 6832
- itemTableSolar["Diamond"] = 1
- itemTableSolar["Gold Ingot"] = 4.5
- itemTableSolar["Oak Wood Planks"] = 256
- costper = {}
- costper["Copper"] = 0.3
- costper["Iron Ingot"] = 1.25
- costper["Refined Iron"] = 1.25
- costper["Tin"] = 0.3
- costper["Coal Dust"] = 0.15
- costper["Redstone"] = 4/24
- costper["Cobblestone"] = 1
- costper["Glass"] = 0.125
- costper["Rubber"] = 4/63
- costper["Diamond"] = 9
- costper["Gold Ingot"] = 1.25
- costper["Oak Wood Planks"] = 0.03125
- details = s.getTargetDetails("-3,-2,2")
- types = details.UsedTypes
- UU = 0
- for i = 1,tonumber(types) do
- local item = details.Items[i].Name
- local amount = details.Items[i].Size
- if contains(item) then
- addToTable(item, amount)
- end
- if item == "UU-Matter" then
- UU = amount
- end
- end
- solarTable = {}
- m.clear()
- y = 1
- m.setCursorPos(1,y)
- for k,v in pairs(itemTable) do
- n = v/itemTableSolar[k]
- addToTable1(k, n)
- if z == nil or z > n then
- z = n
- end
- m.write(k .. ": " .. v)
- m.setCursorPos(30,y)
- m.write(n)
- y=y+1
- m.setCursorPos(1,y)
- end
- m.setCursorPos(1,25)
- m.write(getMax(solarTable))
- var = getMax(solarTable)
- y = 1
- for k,v in pairs(itemTableSolar) do
- dif = var-solarTable[k]
- dif = dif*itemTableSolar[k]
- m.setCursorPos(55,y)
- m.write(dif)
- y=y+1
- end
- function spairs(t, order)
- -- collect the keys
- local keys = {}
- for k in pairs(t) do keys[#keys+1] = k end
- -- if order function given, sort by it by passing the table and keys a, b,
- -- otherwise just sort the keys
- if order then
- table.sort(keys, function(a,b) return order(t, a, b) end)
- else
- table.sort(keys)
- end
- -- return the iterator function
- local i = 0
- return function()
- i = i + 1
- if keys[i] then
- return keys[i], t[keys[i]]
- end
- end
- end
- -- this uses an custom sorting function ordering by score descending
- --secmin = getMax(uuTable)
- secmin = var
- newTable = {}
- mini = getMin(solarTable)
- function addToTable10(key, var)
- newTable[key] = var
- end
- for k,v in spairs(solarTable, function(t,a,b) return t[b] > t[a] end) do
- --print(k .. " " .. v)
- if v ~= 0 then
- if v < secmin and v > mini then
- secmin = v
- end
- end
- end
- print(secmin)
- print(UU)
- print("")
- local uuges = 0
- function rechner(k,y,v)
- local d = y-v
- local e = (d*itemTableSolar[k])*costper[k]
- --print(k .. " " .. e)
- local uu = UU - e
- if uu > 0 then
- uuges = uuges + e
- UU = UU - e
- else
- return 0
- end
- end
- for k,v in spairs(solarTable, function(t,a,b) return t[b] > t[a] end) do
- --print(k .. " " .. v)
- local y = secmin
- if v < y or v == y then
- if rechner(k,y,v) == 0 then
- break
- end
- addToTable10(k,y)
- elseif v > y then
- y = v
- if rechner(k,y,v) == 0 then
- break
- end
- addToTable10(k,y)
- for k,v in pairs(newTable) do
- if rechner(k,y,v) == 0 then
- break
- end
- addToTable10(k,y)
- end
- end
- end
- for k,v in pairs(newTable) do
- print(k .. " " .. v)
- end
- print(uuges)
- print(UU)
- print(UU/9830.8)
- print(getMin(newTable)+(UU/9830.8))
- --minimum res
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement