CharlyZM

Untitled

Nov 2nd, 2022
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.24 KB | None | 0 0
  1. local component = require("component")
  2. local computer=require("computer")
  3. local event = require("event")
  4. local term = require("term")
  5. local shell = require("shell")
  6. local fs = require("filesystem")
  7. local unicode=require("unicode")
  8. local serial = require("serialization")
  9.  
  10.  
  11. if not fs.exists("/lib/sky.lua") then
  12. shell.execute("wget https://www.dropbox.com/s/m2n66dfo67909op/sky.lua?dl=1 /lib/sky.lua")
  13. end
  14. local sky = require("sky")
  15. local g = component.gpu
  16. event.shouldInterrupt = function () return false end
  17. --------------------Настройки--------------------
  18. local WIDTH, HEIGHT = 146, 42 --Разрешение моника 146/112 x 42
  19. local PASS = "1311" --Пасс
  20. local COLOR1 = 0x00ffff --Рамка
  21. local COLOR2 = 0x0000ff --Цвет кнопок
  22. local COLOR3 = 0x333333 --Таблица
  23. local COLOR_SHELL = 0xff00ff --Цвет шелла
  24. -------------------------------------------------
  25. if not (fs.exists(shell.getWorkingDirectory() .. "/Programms.lua")) then
  26. shell.execute("wget https://www.dropbox.com/s/goctvwc0p3tpf6t/Programms.lua?dl=1")
  27. end
  28. if not (fs.exists("/autorun.lua")) then
  29. print("\nНастройка автозапуска...")
  30. file = io.open("/autorun.lua", "w")
  31. file:write("local shell = require('shell')\nlocal term = require('term')\nos.sleep(0.5)\nterm.clear()\nlocal dir = '" .. shell.getWorkingDirectory() .. "'\nif dir ~= '/' then shell.setWorkingDirectory(dir) end\nshell.execute('SkyPad')")
  32. file:close()
  33. os.sleep(1)
  34. end
  35. print("\nИнициализация...")
  36. os.sleep(2)
  37. print("Запуск программы...")
  38. os.sleep(2)
  39.  
  40. local mid = (WIDTH-32)/2+32
  41. local login, prog, tech = false, false, false
  42. local sel = 0
  43.  
  44. g.setResolution(WIDTH, HEIGHT)
  45. sky.logo("Sostav", COLOR1, COLOR2, WIDTH, HEIGHT)
  46. g.setForeground(COLOR2)
  47. for i = 1, HEIGHT do
  48. g.set(29, i, "||")
  49. end
  50.  
  51. file = io.open(shell.getWorkingDirectory() .. "/Programms.lua", "r")
  52. local progs = serial.unserialize("{" .. file:read(9999999) .. "}")
  53. file:close()
  54.  
  55. function Login()
  56. login = false
  57. prog = false
  58. tech = false
  59. sky.clearL(HEIGHT)
  60. sky.clearR(WIDTH,HEIGHT)
  61. Rules()
  62. g.setForeground(COLOR1)
  63. sky.word(mid - 28,7, "mcskill", 0x222222)
  64. --users={computer.users()}
  65. --for i=1, #users do
  66. -- computer.removeUser(users[i])
  67. --end
  68. sky.midR(WIDTH,32,"Введите пароль:")
  69. term.setCursor(mid-2,33)
  70. local p, nick = sky.read({mask = "*", max = 8, accept = "0-9a-f", blink = true, center = true, nick = true})
  71. if p == PASS then
  72. if (sky.checkOP(nick)) then
  73. login = true
  74. sky.midR(WIDTH,33,"Приветствую, " .. nick)
  75. computer.addUser(nick)
  76. os.sleep(2)
  77. sky.clearL(HEIGHT)
  78. sky.clearR(WIDTH,HEIGHT)
  79. Rules(nick)
  80. Table()
  81. else
  82. sky.midR(WIDTH,34,"Даже, зная пароль, просто так")
  83. sky.midR(WIDTH,35,"ты сюда не войдёшь")
  84. os.sleep(2)
  85. sky.midR(WIDTH,37,"Петушинная морда")
  86. os.sleep(3)
  87. Login()
  88. end
  89. else
  90. sky.midR(WIDTH,33,"Неверный пароль")
  91.  
  92. os.sleep(2)
  93. Login()
  94. end
  95. end
  96.  
  97. function Rules(nick)
  98. if (login) then
  99. g.setForeground(COLOR2)
  100. sky.midL(WIDTH,5,"==========================")
  101. sky.midL(WIDTH,11,"==========================")
  102. sky.midL(WIDTH,15,"==========================")
  103. sky.midL(WIDTH,31,"Добро пожаловать")
  104. g.setForeground(COLOR1)
  105. sky.midL(WIDTH,3, "Общая инфа:")
  106. sky.midL(WIDTH,6, "Монитор в идеале 5х3")
  107. sky.midL(WIDTH,7, "блока, чтоб не париться.")
  108. sky.midL(WIDTH,8, "Но если над другой, то")
  109. sky.midL(WIDTH,9, "в настройках каждой проги")
  110. sky.midL(WIDTH,10, "меняйте параметр WIDTH")
  111. sky.midL(WIDTH,12, "Autorun ставится свой,")
  112. sky.midL(WIDTH,13, "но его можно")
  113. sky.midL(WIDTH,14, "редачить под себя")
  114. sky.midL(WIDTH,32,nick)
  115. sky.button(7,34,18,3,COLOR1,COLOR2,"Обновить")
  116. sky.button(7,37,18,3,COLOR1,COLOR2,"Выйти")
  117. end
  118. end
  119.  
  120. function TechPanel()
  121. prog = false
  122. g.fill(mid - 43, 13, 83, 23, " ")
  123. sky.midR(WIDTH, 20, "&bВаще хз, чё тут запилить,")
  124. sky.midR(WIDTH, 21, "&bесли есть идеи, напишите :)")
  125. tech = true
  126. end
  127.  
  128. function ProgrammPanel()
  129. g.fill(mid - 43, 13, 83, 23, " ")
  130. tech = false
  131. sky.midR(WIDTH,13,"&bСписок программ для OpenComputers&r")
  132. g.setForeground(COLOR3)
  133. sky.midR(WIDTH,14, "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓")
  134. sky.midR(WIDTH,15, "┃ &bНазвание&r ┃ &bСтатус&r ┃ &bРазмер&r ┃")
  135. sky.midR(WIDTH,16, "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━╋━━━━━━━━━━┫")
  136. for i = 1, 9 do
  137. sky.midR(WIDTH,i+16, "┃ ┃ ┃ ┃")
  138. end
  139. sky.midR(WIDTH,26, "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━┻━━━━━━━━━━┛")
  140. DrawProgs(0)
  141. prog = true
  142. end
  143.  
  144. function DrawProgs(s)
  145. sel = s
  146. for i = 1, #progs do
  147. g.setForeground(COLOR1)
  148. g.set(mid-42, i+16, " ")
  149. g.set(mid+29, i+16, " ")
  150. local name_progs = tostring(progs[i][1][1]) .. tostring(progs[i][1][2])
  151. if sel ~= i then
  152. g.set(mid-15-unicode.len(name_progs)/2, i+16, name_progs)
  153. else
  154. g.set(mid-19-unicode.len(name_progs)/2, i+16, ">>> " .. name_progs .. " <<<")
  155. end
  156. if (fs.exists(shell.getWorkingDirectory() .. "/" .. progs[i][1][1] .. ".lua")) then
  157. sky.text(mid + 12, i+16, "&2 Установлено &r")
  158. local size = fs.size(shell.getWorkingDirectory() .. "/" .. progs[i][1][1] .. ".lua")
  159. sky.text(mid + 33 - unicode.len(size)/2, i+16, size .. "B")
  160. else
  161. sky.text(mid + 12, i+16, "&8Не установлено&r")
  162. end
  163. end
  164. g.fill(mid - 42, 27, 84, 10, " ")
  165. if sel ~= 0 then
  166. if (fs.exists(shell.getWorkingDirectory() .. "/" .. progs[sel][1][1] .. ".lua")) then
  167. sky.button(mid-21,33,20,3,COLOR1,COLOR2,"Запустить")
  168. sky.button(mid+1,33,20,3,COLOR1,COLOR2," Обновить ")
  169. else
  170. sky.button(mid-10,33,20,3,COLOR1,COLOR2,"Установить")
  171. end
  172. g.setForeground(COLOR1)
  173. sky.midR(WIDTH,28,"Требуемые компоненты:")
  174. local comp = ""
  175. for i = 1, #progs[sel][3] do
  176. comp = comp .. progs[sel][3][i] .. " &0|&r "
  177. end
  178. sky.midR(WIDTH,29, "&0|&r " .. comp)
  179. end
  180. end
  181.  
  182. function Click(w,h)
  183. g.setForeground(COLOR1)
  184. if sel ~= 0 then
  185. if (fs.exists(shell.getWorkingDirectory() .. "/" .. progs[sel][1][1] .. ".lua")) then
  186. if w>=mid-21 and w<=mid-2 and h>=33 and h<=35 then
  187. for i = 1, #progs[sel][3] do
  188. if not (component.isAvailable(progs[sel][3][i])) then
  189. sky.midR(WIDTH,31,"&6Отсутствует компонент: &4" .. progs[sel][3][i])
  190. os.sleep(3)
  191. DrawProgs(sel)
  192. return
  193. end
  194. end
  195. term.clear()
  196. shell.execute(progs[sel][1][1])
  197. g.setForeground(COLOR1)
  198. print("\nКликни на монитор для перезагрузки")
  199. local e = event.pull("touch")
  200. print("\nРестарт...")
  201. os.sleep(2)
  202. shell.execute("reboot")
  203. elseif w>=mid+1 and w<=mid+20 and h>=33 and h<=35 then
  204. fs.remove(shell.getWorkingDirectory() .. "/" .. progs[sel][1][1] .. ".lua")
  205. sky.get(progs[sel][2],progs[sel][1][1] .. ".lua",mid-19,31)
  206. sky.midR(WIDTH,31," ")
  207. DrawProgs(sel)
  208. return
  209. end
  210. else
  211. if w>=mid-10 and w<=mid+9 and h>=33 and h<=35 then
  212. sky.get(progs[sel][2],progs[sel][1][1] .. ".lua",mid-19,31)
  213. sky.midR(WIDTH,31," ")
  214. DrawProgs(sel)
  215. return
  216. end
  217. end
  218. end
  219. for i = 1, #progs do
  220. if w>=mid-42 and w<=mid+38 and h == i + 16 then
  221. DrawProgs(i)
  222. return
  223. end
  224. end
  225. DrawProgs(0)
  226. end
  227.  
  228. function Table()
  229. sky.drawImage(mid - 28,7, shell.getWorkingDirectory() .. "/LogoSkill.lua")
  230. sky.button(mid - 32,37,20,3,COLOR1,COLOR2,"Проги")
  231. sky.button(mid - 10,37,20,3,COLOR1,COLOR2,"Войти в шелл")
  232. sky.button(mid + 12,37,20,3,COLOR1,COLOR2,"Тех.панель")
  233. sky.button(WIDTH-11,3,7,4,COLOR1,COLOR2,"")
  234. sky.text(WIDTH-10,4,"&b┌│┐&r")
  235. sky.text(WIDTH-10,5,"&b└─┘&r")
  236. end
  237.  
  238. function getButtons(w,h)
  239. if w>=7 and w<= 25 and h>=34 and h<=36 then --Кнопка обновить
  240. term.clear()
  241. fs.remove(shell.getWorkingDirectory() .. "/SkyPad.lua")
  242. fs.remove(shell.getWorkingDirectory() .. "/Programms.lua")
  243. fs.remove("/lib/sky.lua")
  244. g.setForeground(COLOR1)
  245. shell.execute("wget https://www.dropbox.com/s/3bdr406pk8admf1/SkyPad.lua?dl=1 SkyPad.lua")
  246. shell.execute("wget https://www.dropbox.com/s/vumy87kf8zs6td6/Programms.lua?dl=1")
  247. shell.execute("wget https://www.dropbox.com/s/8ak2iakw4r4y7td/sky.lua?dl=1 /lib/sky.lua")
  248. print("\nРестарт...")
  249. os.sleep(2)
  250. shell.execute("reboot")
  251. elseif w>=7 and w<= 25 and h>=37 and h<=39 then --Кнопка Логин
  252. Login()
  253. elseif w>=mid-32 and w<= mid-13 and h>=37 and h<=39 then --Кнопка Проги
  254. ProgrammPanel()
  255. elseif w>=mid-10 and w<= mid+9 and h>=37 and h<=39 then --Кнопка Войти в шелл
  256. term.clear()
  257. g.setForeground(COLOR_SHELL)
  258. shell.execute("sh")
  259. elseif w>=mid+12 and w<= mid+31 and h>=37 and h<=39 then --Кнопка Тех.Панель
  260. TechPanel()
  261. elseif w>=WIDTH-11 and w<= WIDTH-6 and h>=3 and h<=6 then --Кнопка Офф
  262. computer.shutdown()
  263. end
  264. end
  265.  
  266. Login()
  267.  
  268. if fs.exists("/bin/pastebin.lua") then
  269. shell.execute("rm /bin/pastebin.lua")
  270. end
  271.  
  272. while true do
  273. local e,_,w,h,_,nick = event.pull("touch")
  274. if (login) then
  275. getButtons(w,h)
  276. if (prog) then
  277. Click(w,h)
  278. end
  279. end
  280. end
Advertisement
Add Comment
Please, Sign In to add comment