SHOW:
|
|
- or go back to the newest paste.
| 1 | os.pullEvent = os.pullEventRaw | |
| 2 | term.setCursorPos(1, 1) | |
| 3 | term.setBackgroundColor(colors.white) | |
| 4 | term.clear() | |
| 5 | ||
| 6 | -- Hack OS - v0.19 | |
| 7 | -- By FoxWorn3365 | |
| 8 | ||
| 9 | ||
| 10 | -- APPUNTI | |
| 11 | -- Configurazioni sistema: .localConf | |
| 12 | -- Configurazioni pubbliche: .publicConf | |
| 13 | -- Immagini: /Hack/images/ | |
| 14 | -- APP: /Hack/programmi/ | |
| 15 | -- App di esempio: | |
| 16 | -- Directory: /Hack/programmi/fileManager/ | |
| 17 | -- Icona: /Hack/programmi/fileManager/app.ico | |
| 18 | -- File da eseguire: /Hack/programmi/fileManager/exec.luaDir | |
| 19 | -- Configurazioni (facoltativo) (OBBLIGO AUTOGENERAZIONE): /Hack/programmi/fileManager/conf.public | |
| 20 | -- Nome dell'APP (massimo 4 caratteri): /Hack/programmi/fileManager/app.name | |
| 21 | -- API: https://fcosma.it/hackos/api | |
| 22 | ||
| 23 | maxw, maxh = term.getSize() | |
| 24 | local function drawPixelInternal(xPos, yPos) | |
| 25 | term.setCursorPos(xPos, yPos) | |
| 26 | term.write(" ")
| |
| 27 | end | |
| 28 | ||
| 29 | local tColourLookup = {}
| |
| 30 | for n = 1, 16 do | |
| 31 | tColourLookup[string.byte("0123456789abcdef", n, n)] = 2 ^ (n - 1)
| |
| 32 | end | |
| 33 | ||
| 34 | function drawFilledBox(startX, startY, endX, endY, nColour) | |
| 35 | if type(startX) ~= "number" or type(startX) ~= "number" or type(endX) ~= | |
| 36 | "number" or type(endY) ~= "number" or | |
| 37 | (nColour ~= nil and type(nColour) ~= "number") then | |
| 38 | error("Expected startX, startY, endX, endY, colour", 2)
| |
| 39 | end | |
| 40 | ||
| 41 | startX = math.floor(startX) | |
| 42 | startY = math.floor(startY) | |
| 43 | endX = math.floor(endX) | |
| 44 | endY = math.floor(endY) | |
| 45 | ||
| 46 | if nColour then term.setBackgroundColor(nColour) end | |
| 47 | if startX == endX and startY == endY then | |
| 48 | drawPixelInternal(startX, startY) | |
| 49 | return | |
| 50 | end | |
| 51 | ||
| 52 | local minX = math.min(startX, endX) | |
| 53 | if minX == startX then | |
| 54 | minY = startY | |
| 55 | maxX = endX | |
| 56 | maxY = endY | |
| 57 | else | |
| 58 | minY = endY | |
| 59 | maxX = startX | |
| 60 | maxY = startY | |
| 61 | end | |
| 62 | ||
| 63 | for x = minX, maxX do for y = minY, maxY do drawPixelInternal(x, y) end end | |
| 64 | end | |
| 65 | ||
| 66 | function giremu(inputstr, sep) | |
| 67 | local t={}
| |
| 68 | for str in string.gmatch(inputstr, "([^"..sep.."]+)") do | |
| 69 | table.insert(t, str) | |
| 70 | end | |
| 71 | return t | |
| 72 | end | |
| 73 | ||
| 74 | function clear() | |
| 75 | sfondo(colors.black) | |
| 76 | term.clear() | |
| 77 | term.setCursorPos(1, 1) | |
| 78 | end | |
| 79 | ||
| 80 | function clearRed() | |
| 81 | sfondo(colors.red) | |
| 82 | term.clear() | |
| 83 | term.setCursorPos(1, 1) | |
| 84 | end | |
| 85 | ||
| 86 | - | function no() |
| 86 | + | |
| 87 | drawFilledBox(1, 1, maxw, 1, colors.orange) | |
| 88 | term.setCursorPos((maxw - #testo) / 2, 1) | |
| 89 | term.setTextColor(colors.white) | |
| 90 | term.write(testo) | |
| 91 | end | |
| 92 | ||
| 93 | function alarm(testo, colore, y) | |
| 94 | drawFilledBox(1, y, maxw, y, colors[colore]) | |
| 95 | term.setCursorPos((maxw - #testo) / 2, y) | |
| 96 | term.setTextColor(colors.white) | |
| 97 | - | print("\nInserisci la cartella di HackOS:")
|
| 97 | + | |
| 98 | - | dir = read() |
| 98 | + | |
| 99 | end | |
| 100 | ||
| 101 | ||
| 102 | function bottone(color, text, x, y) | |
| 103 | term.setBackgroundColor(colors[color]) | |
| 104 | term.setTextColor(colors.white) | |
| 105 | term.setCursorPos(x, y) | |
| 106 | print(text) | |
| 107 | end | |
| 108 | ||
| 109 | function drawA() | |
| 110 | term.setBackgroundColor(colors.white) | |
| 111 | term.setTextColor(colors.black) | |
| 112 | end | |
| 113 | ||
| 114 | function programExec(programDir, type) | |
| 115 | if type == "default_program_app" then | |
| 116 | -- Apro il programma in modo default, eseguendolo | |
| 117 | -- Consigliato solo con le app ufficiali | |
| 118 | don = "execProgram" | |
| 119 | program = programDir | |
| 120 | elseif type == "external_program_app" then | |
| 121 | shell.run(programDir.."/exec.luaDir") | |
| 122 | end | |
| 123 | end | |
| 124 | ||
| 125 | function loadDesktopBackground() | |
| 126 | if fs.exists("/.bkgConf") == true then
| |
| 127 | local h = fs.open("/.bkgConf", "r")
| |
| 128 | local backImage = h.readAll() | |
| 129 | h.close() | |
| 130 | drawA() | |
| 131 | term.clear() | |
| 132 | local image = paintutils.loadImage("/Hack/files/"..backImage)
| |
| 133 | paintutils.drawImage(image, 1, 2) | |
| 134 | elseif fs.exists("/.bkgColor") == true then
| |
| 135 | local h = fs.open("/.bkgColor", "r")
| |
| 136 | local backColor = h.readAll() | |
| 137 | h.close() | |
| 138 | term.setBackgroundColor(colors[backColor]) | |
| 139 | term.setTextColor(colors.black) | |
| 140 | term.clear() | |
| 141 | else | |
| 142 | term.setBackgroundColor(colors.white) | |
| 143 | term.setTextColor(colors.black) | |
| 144 | term.clear() | |
| 145 | end | |
| 146 | end | |
| 147 | ||
| 148 | if fs.exists(".localConf") == false then
| |
| 149 | titolo("Hack OS - Installazione")
| |
| 150 | term.setBackgroundColor(colors.white) | |
| 151 | term.setTextColor(colors.black) | |
| 152 | print("\n\nInserisci il tuo nome:")
| |
| 153 | name = read() | |
| 154 | dir = "hackPC_VERIFIED" | |
| 155 | print("\nInserisci la password (vuoto per non usarla)")
| |
| 156 | pass = read() | |
| 157 | term.setTextColor(colors.green) | |
| 158 | local h = fs.open(".localConf", "w")
| |
| 159 | if pass == nil or pass == '' then | |
| 160 | h.writeLine(name.."$"..dir) | |
| 161 | shell.run("label set hack_osPC-"..name)
| |
| 162 | elseif pass ~= nil and pass ~= '' and name ~= nil and name ~= '' then | |
| 163 | h.writeLine(name.."$"..dir.."$"..pass) | |
| 164 | shell.run("label set hack_osPC-"..name)
| |
| 165 | elseif pass == nil or pass == '' and name == nil or name == '' then | |
| 166 | h.writeLine("HackPC$"..dir.."$"..pass)
| |
| 167 | shell.run("label set hack_osPC-defaultName")
| |
| 168 | end | |
| 169 | h.flush() | |
| 170 | h.close() | |
| 171 | print("\nFatto! Premi un tasto qualsiasi")
| |
| 172 | os.pullEvent("key")
| |
| 173 | shell.run("reboot")
| |
| 174 | else | |
| 175 | local h = fs.open(".localConf", "r")
| |
| 176 | confInit = h.readAll() | |
| 177 | h.close() | |
| 178 | conf = giremu(confInit, "$") | |
| 179 | end | |
| 180 | ||
| 181 | don = 0 | |
| 182 | ||
| 183 | while true do | |
| 184 | if don == 0 then | |
| 185 | -- Login | |
| 186 | if conf[3] == nil then | |
| 187 | shell.run("desktop")
| |
| 188 | else | |
| 189 | drawA() | |
| 190 | term.clear() | |
| 191 | local image = paintutils.loadImage('Hack/sfondo.png')
| |
| 192 | paintutils.drawImage(image, 1, 2) | |
| 193 | titolo("Accedi al computer di "..conf[1].."!")
| |
| 194 | drawA() | |
| 195 | print("\n\nInserisci la password:")
| |
| 196 | local pass = read() | |
| 197 | if pass ~= conf[3] then | |
| 198 | term.setTextColor(colors.red) | |
| 199 | print("\nPassword errata! Potrai riprovare tra 3 secondi..")
| |
| 200 | sleep(3) | |
| 201 | drawA() | |
| 202 | term.clear() | |
| 203 | term.setTextColor(colors.black) | |
| 204 | local image = paintutils.loadImage('Hack/sfondo.png')
| |
| 205 | paintutils.drawImage(image, 1, 2) | |
| 206 | titolo("Accedi al computer di "..conf[1])
| |
| 207 | drawA() | |
| 208 | print("\n\nInserisci la password:")
| |
| 209 | local pass = read() | |
| 210 | if pass ~= conf[3] then | |
| 211 | term.setTextColor(colors.red) | |
| 212 | print("Password errata!\nProcedo con il riavvio.\nHo salvato nel LOG l'errore di accesso!")
| |
| 213 | sleep(4) | |
| 214 | shell.run("reboot")
| |
| 215 | else | |
| 216 | don = 1 | |
| 217 | end | |
| 218 | else | |
| 219 | don = 1 | |
| 220 | end | |
| 221 | end | |
| 222 | elseif don == 1 then | |
| 223 | loadDesktopBackground() | |
| 224 | appList = {}
| |
| 225 | app = 1 | |
| 226 | titolo("Computer di "..conf[1].." - /Hack/Desktop")
| |
| 227 | term.setCursorPos(1, 3) | |
| 228 | oldX = 0 | |
| 229 | oldY = 0 | |
| 230 | y = 3 | |
| 231 | for i, k in pairs(fs.list("/Hack/programmi/")) do
| |
| 232 | if fs.isDir("/Hack/programmi/"..k) == true then
| |
| 233 | x = 2 + oldX | |
| 234 | term.setCursorPos(x, y) | |
| 235 | ico = paintutils.loadImage("/Hack/programmi/"..k.."/app.ico")
| |
| 236 | local h = fs.open("/Hack/programmi/"..k.."/app.name", "r")
| |
| 237 | aName = h.readAll() | |
| 238 | h.close() | |
| 239 | paintutils.drawImage(ico, x, y) | |
| 240 | oldX, oldY = term.getCursorPos() | |
| 241 | term.setCursorPos(oldX-4, y+3) | |
| 242 | drawA() | |
| 243 | term.write(aName) | |
| 244 | term.setCursorPos(oldX, oldY) | |
| 245 | for i=x, x+3 do | |
| 246 | for b=y, y+3 do | |
| 247 | appList[tostring(i).." "..tostring(b)] = k | |
| 248 | end | |
| 249 | end | |
| 250 | x = x + 4 | |
| 251 | if x >= 47 then | |
| 252 | x = 0 | |
| 253 | oldX = 0 | |
| 254 | y = y+5 | |
| 255 | end | |
| 256 | end | |
| 257 | end | |
| 258 | local event, key, x, y = os.pullEvent("mouse_click")
| |
| 259 | if appList[tostring(x).." "..tostring(y)] ~= nil and appList[tostring(x).." "..tostring(y)] ~= '' then | |
| 260 | shell.run("/Hack/programmi/"..appList[tostring(x).." "..tostring(y)].."/exec.luaDir")
| |
| 261 | end | |
| 262 | end | |
| 263 | sleep(1) | |
| 264 | end | |
| 265 | ||
| 266 | ||
| 267 | ||
| 268 |