View difference between Paste ID: AQX6gG3e and n8jRrXrk
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