Guest User

kdhud.lua

a guest
Oct 31st, 2021
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.14 KB | None | 0 0
  1. os.loadAPI("glass.lua")
  2. os.loadAPI("kdhudconfig.lua")
  3.  
  4. local r = peripheral.find("rsBridge")
  5. local c = peripheral.find("colonyIntegrator")
  6.  
  7. local text = {}
  8.  
  9. function add(str)
  10.     table.insert(text,str)
  11. end
  12.  
  13. function truncate(number)
  14.     if (number == nil or tostring(number) == "nan") then number = "0" end
  15.     number = tostring(number)
  16.     local decimalStart = string.find(number,"[\.]")
  17.     if (decimalStart ~= nil) then
  18.         local tmp = string.sub(number,decimalStart+1,decimalStart+3)
  19.         local tmp2 = string.sub(number,1,decimalStart-1)
  20.         return tonumber(tmp2.."."..tmp)
  21.     end
  22.     return tonumber(number)
  23. end
  24.  
  25. function getRSData()
  26.     local data = {}
  27.     local items = r.listItems()
  28.     local fluids = r.listFluids()
  29.     data["itemMax"] = r.getMaxItemDiskStorage()+r.getMaxItemExternalStorage()
  30.     data["fluidMax"] = r.getMaxFluidDiskStorage()+r.getMaxFluidExternalStorage()
  31.     data["totalItems"] = 0
  32.     data["totalFluids"] = 0
  33.     data["craftJobs"] = 0
  34.     for k,v in ipairs(items) do
  35.         data["totalItems"] = data["totalItems"]+v.amount
  36.         if (r.isItemCraftable(v) and r.isItemCrafting(v)) then
  37.             data["craftJobs"] = data["craftJobs"] + 1
  38.         end
  39.     end
  40.     for k,v in ipairs(fluids) do
  41.         data["totalFluids"] = data["totalFluids"]+v.amount
  42.     end
  43.     data["itemFullness"] = truncate((data["totalItems"]/data["itemMax"])*100)
  44.     data["fluidFullness"] = truncate((data["totalFluids"]/data["fluidMax"])*100)
  45.     return data
  46. end
  47.  
  48. function getColonyData()
  49.     local data = {}
  50.     data["underAttack"] = c.isUnderAttack()
  51.     data["population"] = c.amountOfCitizens()
  52.     data["housing"] = c.maxOfCitizens()
  53.     data["visitors"] = c.getVisitors()
  54.     return data
  55. end
  56.  
  57. function main()
  58.     local rsData = getRSData()
  59.     text = {}
  60.     add("-----[ KD HUD ]-----")
  61.     if ((c == nil or (not c.isInColony())) and r == nil) then
  62.         add("")
  63.         add("No supported peripherals installed, or they are invalid!")
  64.         add("Add some to get data here!")
  65.     end
  66.     if (c ~= nil and c.isInColony()) then
  67.         local cData = getColonyData()
  68.         add("")
  69.         add("--------------------")
  70.         add("   [COLONY  DATA]  ")
  71.         add("--------------------")
  72.         add(cData.name)
  73.         if (cData.underAttack) then
  74.             add("Under attack!!!")
  75.         end
  76.         add("Population: "..cData.population.."/"..cData.housing)
  77.         add("Average Happiness: "..math.floor(cData.happiness))
  78.         add("Visitor Count: "..tostring(#cData.visitors))
  79.     end
  80.     if (r ~= nil) then
  81.         add("")
  82.         add("-----------------")
  83.         add(".[STORAGE SYSTEM]")
  84.         add("-----------------")
  85.         add("")
  86.         add("Fluid Fullness: "..rsData.fluidFullness.."%")
  87.         add("Item Fullness: "..rsData.itemFullness.."%")
  88.         add("Craft Jobs: "..rsData.craftJobs)
  89.     end
  90.    
  91.     local h = glass.text.height(text)
  92.     local w = glass.text.width(text)
  93.    
  94.     glass.shapes.stroke.box(3,3,w+10,h+11,0xBB77EE)
  95.     glass.text.multiline(text,8,8,0xCC88FF)
  96.     glass.render()
  97. end
  98.  
  99. while true do
  100.     main()
  101.     sleep(kdhudconfig.updateFrequency)
  102. end
Advertisement
Add Comment
Please, Sign In to add comment