pepejik

Untitled

Oct 31st, 2024
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.72 KB | None | 0 0
  1. local component = require("component")
  2. local event = require("event")
  3. local fs = require("filesystem")
  4. local computer = require("computer")
  5. local gpu = component.gpu
  6. local items = {
  7. {"dwcity:Materia", 0},
  8. {"minecraft:iron_ingot", 0},
  9. {"IC2:itemIngot", 0},
  10. {"IC2:itemIngot", 1},
  11. {"IC2:itemRubber", 0},
  12. {"minecraft:gold_ingot", 0},
  13. {"minecraft:redstone", 0},
  14. {"minecraft:coal", 0},
  15. }
  16. --------------------------------------------------------------
  17. local colors= {
  18. blue = 0x05F5F0,
  19. black = 0x000000,
  20. bred = 0xFF2400,
  21. green = 0x99FF33,
  22. sun = 0xFFFF00,
  23. red = 0x0052A3,
  24. orange = 0xFFA500,
  25. mem = 0xFFFFFF, -- память
  26. gray = 0x939393,
  27. hex = 0xC522A9,
  28. pur = 0x00FF00,
  29. red1 = 0xFF2400,
  30. }
  31. -----------------------------------------------------------------------
  32. local friendList = { "punak" }
  33.  
  34. local players = {
  35. {"punak",false}
  36. }
  37. local blackList = {
  38. "krissss",
  39. "combomaster",
  40. "AliceWay",
  41. "sima21",
  42. "SkyDrive_",
  43. "Phenomenoon",
  44. "jewiven",
  45. "_Desert_Eagle_",
  46. "Samaya",
  47. }
  48. --------------------------------------------------------------------
  49. local chat_box, me, sensor, counter, bridge
  50. local euWorking, average, cb, me_a, s, bridgeCom, allow_mem = true, false, false, false, false,
  51. false, false
  52. -------------{OPTIONS}------------------
  53. local TIME_ZONE = 3
  54. local widthBox = 90
  55. local transBox = 0.3
  56. local timeConstant = 1
  57. local getY = 24
  58. ---------------------------------------------
  59. local TC, RO, RN, RD, TPS = 2, 0, 0, 0, 0
  60. local strTPS = ""
  61. ---------------------------------------------
  62. local t_correction = TIME_ZONE * 3600
  63. local chat_box_name = "§8[§4Малышка§8]"
  64. local adm = "punak" -- Ник админа компа
  65. local allow_mem = false -- Отображать на экране кол-во памяти или нет
  66. --------------------------------------------------ENERGY-PROXY-----------------------------------------------------
  67. ---------------------------------------------------------------------------------------------------------------------------------
  68. local localize = {
  69. join_in_game = " §7вошел в игру!",
  70. left_from_game = " §7покинул игру!",
  71. }
  72.  
  73. ---------------------VISUAL----------------------------------------VISUAL-------------------------------------------------------------
  74. local function addBox(x, y, w, h, color, tran)
  75. return bridge.addBox(x, y, w, h, color, tran)
  76. end
  77.  
  78. local function addText(x, y, text, color)
  79. return bridge.addText(x, y, text, color)
  80. end
  81.  
  82. local function addIcon(x, y, name, meta)
  83. return bridge.addIcon(x, y, name, meta)
  84. end
  85.  
  86. function gui()
  87. w, h = gpu.maxResolution()
  88. gpu.fill(1, 1, w, h, " ")
  89. end
  90. ------------------------------------------------------------CHECK-COM---------------------------------------------------
  91. local function digital(n)
  92. local text=''
  93. for f in string.gmatch(n,'%d') do text=text..f end
  94. return text
  95. end
  96.  
  97. function check()
  98. if component.isAvailable("average_counter") then
  99. average = true
  100. counter = component.average_counter
  101. end
  102. if component.isAvailable("chat_box") then
  103. cb = true
  104. chat_box = component.chat_box
  105. chat_box.setName(chat_box_name)
  106. end
  107. if component.isAvailable("me_interface") then
  108. me_a = true
  109. me = component.me_interface
  110. end
  111. if component.isAvailable("openperipheral_sensor") then
  112. s = true
  113. sensor = component.openperipheral_sensor
  114. end
  115. if component.isAvailable("openperipheral_bridge") then
  116. bridgeCom = true
  117. bridge = component.openperipheral_bridge
  118. end
  119. componentsOnScreen()
  120. return false
  121. end
  122. ------------------------------------------------------------TIME----------------------------------------------------------
  123. local function getTime()
  124. local f = io.open("/tmp/TF", "w")
  125. f:write("test")
  126. f:close()
  127. return (fs.lastModified("/tmp/TF"))
  128. end
  129.  
  130. local function drawTime()
  131. local time = getTime()
  132. local lastmod = tonumber(string.sub(time, 1, -4)) + TIME_ZONE * 3600
  133. local dt = os.date('%H:%M', lastmod)
  134.  
  135. local x = 1
  136. local y = getY + 16
  137. local width = widthBox
  138. local height = 17
  139. local backgroundColor = colors.black
  140. local transparency = transBox
  141.  
  142. addBox(x, y, width, height, backgroundColor, transparency)
  143.  
  144. local textX = x + 10
  145. local textY = y + 5
  146.  
  147. local textColor = colors.sun
  148.  
  149. addText(textX, textY, "Время " .. dt, textColor)
  150. end
  151. --------------------------------------------
  152.  
  153. --------------------------------------------
  154. function componentsOnScreen()
  155. gpu.set(1, 1, "Chat-box: " .. tostring(cb))
  156. gpu.set(1, 2, "ME: " .. tostring(me_a))
  157. gpu.set(1, 3, "radar: " .. tostring(s))
  158. gpu.set(1, 4, "Counter: " .. tostring(average))
  159. end
  160.  
  161. function getSize(name,dmg)
  162. for _, item in ipairs(me.getItemsInNetwork()) do
  163. if item.name == name and item.damage == dmg then
  164. return item.size
  165. end
  166. end
  167. return 0
  168. end
  169.  
  170. local function string_number(num)
  171. local answer = ""
  172. local reverse_num = {}
  173. local num = tostring(num):gsub(".", function(c)
  174. table.insert(reverse_num, c)
  175. end)
  176. for index, _ in pairs(reverse_num) do
  177. answer = answer .. reverse_num[#reverse_num - index + 1]
  178. if index % 3 == 0 and index ~= #reverse_num then
  179. answer = answer .. " "
  180. end
  181. end
  182. return answer:reverse()
  183. end
  184. -------------------------------------------------------------------ITEMS-------------------------------------------------------
  185. local function formatNumber(num)
  186. if num >= 1000000 then
  187. return string.format("%.1fM", num / 1000000)
  188. elseif num >= 1000 then
  189. return string.format("%.fK", num / 1000)
  190. else
  191. return tostring(num)
  192. end
  193. end
  194.  
  195. local function drawItems()
  196. if me_a then
  197. local y = getY + 100
  198. local columnWidth = widthBox / 2 -- Ширина каждого столбца
  199. local itemsPerColumn = math.ceil(#items / 2) -- Количество элементов в каждом столбце
  200.  
  201. addBox(1, y - 5, columnWidth, itemsPerColumn * 19, colors.black, transBox) -- Первый столбец
  202. addBox(columnWidth + 1, y - 5, columnWidth, itemsPerColumn * 19, colors.black, transBox) -- Второй столбец
  203.  
  204. for i = 1, #items do
  205. local column = math.ceil(i / itemsPerColumn) -- Определение текущего столбца
  206. local offsetX = (column - 1) * columnWidth -- Смещение по горизонтали в зависимости от текущего столбца
  207.  
  208. local itemIndex = i % itemsPerColumn -- Индекс элемента в текущем столбце
  209. if itemIndex == 0 then
  210. itemIndex = itemsPerColumn
  211. end
  212.  
  213. local itemY = y + (itemIndex - 1) * 18 -- Рассчитываем позицию Y для текущего элемента
  214. addIcon(offsetX + 3, itemY - 4, items[i][1], items[i][2])
  215. local formattedNumber = formatNumber(getSize(items[i][1], items[i][2]))
  216. addText(offsetX + 21, itemY, formattedNumber, colors.blue)
  217. end
  218. end
  219. end
  220. ----------------------------------------------------------------TICK-PER-SECOND-------------------------------------------------------
  221. local function drawTPS()
  222. local TPS = {}
  223. local avgTPS = 0
  224.  
  225.  
  226. for tSlot=1, 3 do
  227. TPS[tSlot] = 0
  228. end
  229.  
  230.  
  231. for tSlot = 1, 3 do
  232. local realTimeOld = getTime()
  233. os.sleep(timeConstant)
  234. local realTimeNew = getTime()
  235. local realTimeDiff = realTimeNew - realTimeOld
  236. TPS[tSlot] = 20000 * timeConstant / realTimeDiff
  237. avgTPS = (TPS[1] + TPS[2] + TPS[3]) / 3
  238. end
  239.  
  240.  
  241. local color
  242. if avgTPS > 18 then
  243. color = 0x00FF00
  244. elseif avgTPS > 16 then
  245. color = 0xAAFF00
  246. elseif avgTPS > 14 then
  247. color = 0xFFFF00
  248. elseif avgTPS > 12 then
  249. color = 0xFFAA00
  250. else
  251. color = 0xFF4400
  252. end
  253.  
  254.  
  255. local x = 1
  256. local y = getY -3
  257. local width = widthBox
  258. local height = 17
  259.  
  260.  
  261. addBox(x, y, width, height, colors.black, transBox)
  262.  
  263.  
  264. local textOffsetX = 15
  265. local textX = x + textOffsetX
  266. local textY = y + 5
  267.  
  268. addText(textX, textY, string.format("TPS: %.1f", avgTPS), color)
  269.  
  270. return avgTPS
  271. end
  272.  
  273. -----------------------------------------------------------------------
  274. check()
  275. bridge.clear()
  276. addText(10, 150, "Инициализация", colors.blue)
  277. bridge.sync()
  278. gui()
  279.  
  280. while true do
  281. check()
  282. computer.addUser(adm)
  283. bridge.clear()
  284. drawItems()
  285. drawTPS()
  286. drawTime()
  287. os.sleep(0.1)
  288. bridge.sync()
  289. end
Advertisement
Add Comment
Please, Sign In to add comment