SHOW:
|
|
- or go back to the newest paste.
1 | costante = 0.4 | |
2 | local maxw, maxh = term.getSize() | |
3 | m = peripheral.wrap("top") | |
4 | - | m.write(" KENI") |
4 | + | m.write(" IPDB") |
5 | m.setCursorPos(1,3) | |
6 | m.write("Diesel:") | |
7 | m.setCursorPos(1,4) | |
8 | m.write(costante) | |
9 | m.setCursorPos(1,5) | |
10 | m.write("IC/s.") | |
11 | ||
12 | ||
13 | function creditoInsufficiente() | |
14 | clearRed() | |
15 | print("Credito insufficiente.") | |
16 | print("") | |
17 | print("Premere un tasto per uscire") | |
18 | os.pullEvent("key") | |
19 | os.reboot() | |
20 | end | |
21 | ||
22 | function gasolioNonDisponibile() | |
23 | clearRed() | |
24 | print("Gasolio esaurito.") | |
25 | print("") | |
26 | print("Premere un tasto per uscire") | |
27 | os.pullEvent("key") | |
28 | os.reboot() | |
29 | end | |
30 | ||
31 | -- IMPLEMENTAZIONE DEL DRAWFILLEDBOX | |
32 | local function drawPixelInternal(xPos, yPos) | |
33 | term.setCursorPos(xPos, yPos) | |
34 | term.write(" ") | |
35 | end | |
36 | ||
37 | local tColourLookup = {} | |
38 | for n = 1, 16 do | |
39 | tColourLookup[string.byte("0123456789abcdef", n, n)] = 2 ^ (n - 1) | |
40 | end | |
41 | ||
42 | function drawFilledBox(startX, startY, endX, endY, nColour) | |
43 | if type(startX) ~= "number" or type(startX) ~= "number" or type(endX) ~= | |
44 | "number" or type(endY) ~= "number" or | |
45 | (nColour ~= nil and type(nColour) ~= "number") then | |
46 | error("Expected startX, startY, endX, endY, colour", 2) | |
47 | end | |
48 | ||
49 | startX = math.floor(startX) | |
50 | startY = math.floor(startY) | |
51 | endX = math.floor(endX) | |
52 | endY = math.floor(endY) | |
53 | ||
54 | if nColour then term.setBackgroundColor(nColour) end | |
55 | if startX == endX and startY == endY then | |
56 | drawPixelInternal(startX, startY) | |
57 | return | |
58 | end | |
59 | ||
60 | local minX = math.min(startX, endX) | |
61 | if minX == startX then | |
62 | minY = startY | |
63 | maxX = endX | |
64 | maxY = endY | |
65 | else | |
66 | minY = endY | |
67 | maxX = startX | |
68 | maxY = startY | |
69 | end | |
70 | ||
71 | for x = minX, maxX do for y = minY, maxY do drawPixelInternal(x, y) end end | |
72 | end | |
73 | ||
74 | function clear() | |
75 | sfondo(colors.blue) | |
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 colore(sfumatura) term.setTextColour(sfumatura) end | |
87 | ||
88 | function sfondo(sfumaturaSfondo) term.setBackgroundColour(sfumaturaSfondo) end | |
89 | ||
90 | function fineColore() term.setTextColour(colours.white) end | |
91 | ||
92 | function fineSfondo() term.setBackgroundColour(colours.black) end | |
93 | ||
94 | function titolo(testo) | |
95 | drawFilledBox(1, 1, maxw, 1, colors.yellow) | |
96 | term.setCursorPos((maxw - #testo) / 2, 1) | |
97 | colore(colors.black) | |
98 | term.write(testo) | |
99 | sfondo(colors.blue) | |
100 | end | |
101 | ||
102 | function errore(errore) | |
103 | sfondo(colors.red) | |
104 | colore(colors.white) | |
105 | term.clear() | |
106 | term.setCursorPos(1, 1) | |
107 | titolo("Errore irreversibile") | |
108 | term.setCursorPos(1, 3) | |
109 | sfondo(colors.red) | |
110 | colore(colors.white) | |
111 | print(errore) | |
112 | print("\n\n\nAttendere qualche secondo...") | |
113 | os.sleep(5) | |
114 | os.reboot() | |
115 | end | |
116 | ||
117 | clear() | |
118 | ||
119 | - | titolo("DISTRIBUTORE DI BluDiesel® Premium KENI®") |
119 | + | titolo("DISTRIBUTORE DI GASOLIO Premium IPDB") |
120 | -- startx, starty, endx, endy | |
121 | drawFilledBox(3, 4, 15, 6, colors.yellow) | |
122 | drawFilledBox(3, 8, 15, 10, colors.yellow) | |
123 | drawFilledBox(3, 12, 15, 14, colors.yellow) | |
124 | drawFilledBox(3, 16, 15, 18, colors.yellow) | |
125 | term.setCursorPos(4, 5) | |
126 | colore(colors.black) | |
127 | sfondo(colors.yellow) | |
128 | term.write("16 secchi") | |
129 | ||
130 | term.setCursorPos(4, 9) | |
131 | colore(colors.black) | |
132 | sfondo(colors.yellow) | |
133 | term.write("32 secchi") | |
134 | ||
135 | term.setCursorPos(4, 13) | |
136 | colore(colors.black) | |
137 | sfondo(colors.yellow) | |
138 | - | term.write("Pieno Loco") |
138 | + | term.write("64 secchi") |
139 | ||
140 | term.setCursorPos(4, 17) | |
141 | colore(colors.black) | |
142 | sfondo(colors.yellow) | |
143 | - | term.write("Pieno Vagone") |
143 | + | term.write("Pieno (160)") |
144 | ||
145 | while true do | |
146 | drawFilledBox(18, 5, 50, 17, colors.yellow) | |
147 | term.setCursorPos(19, 6) | |
148 | colore(colors.black) | |
149 | sfondo(colors.yellow) | |
150 | term.write("ISTRUZIONI - LEGGERE:") | |
151 | term.setCursorPos(19, 8) | |
152 | term.write("1. Posizionare il vagone/loco") | |
153 | term.setCursorPos(19, 9) | |
154 | term.write(" sotto l'erogatore appropriato") | |
155 | term.setCursorPos(19, 10) | |
156 | - | term.write("2. Controllare che il vagone") |
156 | + | term.write("2. Controllare che la spia") |
157 | term.setCursorPos(19, 11) | |
158 | - | term.write(" o loco siano vuoti.") |
158 | + | term.write(" «presenza vagone» sia accesa") |
159 | term.setCursorPos(19, 12) | |
160 | term.write("3. Selezionare su questo PC") | |
161 | term.setCursorPos(19, 13) | |
162 | - | term.write(" la quantità desiderata") |
162 | + | term.write(" la quantitåA0 desiderata") |
163 | term.setCursorPos(19, 14) | |
164 | term.write("4. Attendere l'erogazione") | |
165 | term.setCursorPos(19, 15) | |
166 | term.write("5. Non appena l'operazione sarà") | |
167 | term.setCursorPos(19, 16) | |
168 | term.write(" terminata liberare l'area") | |
169 | ||
170 | local event, par1, x, y = os.pullEvent("mouse_click") | |
171 | if event == "mouse_click" and x >= 3 and x <= 15 and y >= 4 and y <= 6 then | |
172 | qta = 16 | |
173 | materiale = "16 secchi" | |
174 | prezzo = qta * costante | |
175 | break | |
176 | elseif event == "mouse_click" and x >= 3 and x <= 15 and y >= 8 and y <= 10 then | |
177 | qta = 32 | |
178 | materiale = "32 secchi" | |
179 | prezzo = qta * costante | |
180 | break | |
181 | elseif event == "mouse_click" and x >= 3 and x <= 15 and y >= 12 and y <= 14 then | |
182 | qta = 64 | |
183 | - | materiale = "Pieno Loco" |
183 | + | materiale = "64 secchi" |
184 | prezzo = qta * costante | |
185 | break | |
186 | elseif event == "mouse_click" and x >= 3 and x <= 15 and y >= 16 and y <= 18 then | |
187 | - | qta = 208 |
187 | + | |
188 | prezzo = qta * costante | |
189 | - | materiale = "Pieno Vagone" |
189 | + | materiale = "Pieno (160)" |
190 | break | |
191 | end | |
192 | sleep(1) | |
193 | end | |
194 | clear() | |
195 | ||
196 | if redstone.getInput("back") == true then | |
197 | errore("Gasolio esaurito") | |
198 | end | |
199 | sfondo(colours.blue) | |
200 | term.clear() | |
201 | term.setCursorPos(1, 1) | |
202 | titolo("Paga con Nebraska Pay") | |
203 | sfondo(colours.blue) | |
204 | colore(colors.white) | |
205 | print( | |
206 | "\n\nInserire i propri dati. Premere Enter per confermare i dati inseriti. \nSe i dati sono corretti, il campo diventerà verde. Se sono errati, il programma chiederà di reinserirli nuovamente.") | |
207 | ||
208 | -- nomeutente | |
209 | term.setCursorPos(1, 9) | |
210 | term.write("Nome utente:") | |
211 | term.setCursorPos(15, 9) | |
212 | fineColore() | |
213 | utenteAccettato = false | |
214 | conteggioErrori = 0 | |
215 | while utenteAccettato == false do | |
216 | utente = read() | |
217 | checkuser = http.get( | |
218 | "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=no&richiesta=verifica&utente=" .. | |
219 | utente).readAll() | |
220 | tabcheckuser = textutils.unserialize(checkuser) | |
221 | if tabcheckuser.stato == "OK" then | |
222 | term.setCursorPos(15, 9) | |
223 | colore(colours.lime) | |
224 | term.write(utente) | |
225 | fineColore() | |
226 | utenteAccettato = true | |
227 | else | |
228 | term.setCursorPos(15, 9) | |
229 | colore(colours.red) | |
230 | term.write("Utente errato! ") | |
231 | sleep(2) | |
232 | term.setCursorPos(15, 9) | |
233 | fineColore() | |
234 | term.write(" ") | |
235 | term.setCursorPos(15, 9) | |
236 | conteggioErrori = conteggioErrori + 1 | |
237 | if conteggioErrori > 2 then | |
238 | term.setCursorPos(15, 9) | |
239 | colore(colours.red) | |
240 | errore("Troppi tentativi di immissione errati ") | |
241 | end | |
242 | end | |
243 | end | |
244 | colore(colours.white) | |
245 | term.setCursorPos(1, 11) | |
246 | term.write("Password:") | |
247 | term.setCursorPos(15, 11) | |
248 | conteggioErrori = 0 | |
249 | passAccettata = false | |
250 | while passAccettata == false do | |
251 | fineColore() | |
252 | password = read("#") | |
253 | colore(colours.black) | |
254 | checkuser = http.get( | |
255 | "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=" .. | |
256 | password .. "&richiesta=addebito&valore=0&utente=" .. | |
257 | utente).readAll() | |
258 | risposta = textutils.unserialize(checkuser) | |
259 | if risposta.stato == "OK" then | |
260 | term.setCursorPos(15, 11) | |
261 | colore(colours.lime) | |
262 | term.write("############## ") | |
263 | fineColore() | |
264 | passAccettata = true | |
265 | else | |
266 | term.setCursorPos(15, 11) | |
267 | colore(colours.red) | |
268 | term.write("Password errata! ") | |
269 | conteggioErrori = conteggioErrori + 1 | |
270 | sleep(2) | |
271 | term.setCursorPos(15, 11) | |
272 | term.write(" ") | |
273 | term.setCursorPos(15, 11) | |
274 | if conteggioErrori > 2 then | |
275 | term.setCursorPos(15, 11) | |
276 | colore(colours.red) | |
277 | errore("Troppi tentativi di immissione errati") | |
278 | end | |
279 | end | |
280 | end | |
281 | ||
282 | -- Mostra saldo | |
283 | term.clear() | |
284 | ||
285 | term.clear() | |
286 | term.setCursorPos(1, 1) | |
287 | titolo("Paga con Nebraska Pay") | |
288 | sfondo(colours.blue) | |
289 | colore(colors.white) | |
290 | print("\n\nSaldo disponibile: " .. risposta.saldo .. " IC") | |
291 | if tonumber(risposta.saldo) >= tonumber(prezzo) then | |
292 | prezzoAccettato = true | |
293 | else | |
294 | - | errore("Disponibilità insufficiente!") |
294 | + | errore("DisponibilitåA0 insufficiente!") |
295 | end | |
296 | term.setCursorPos(1, 3) | |
297 | term.write("Invio di ") | |
298 | term.write(prezzo) | |
299 | term.write(" IC a favore di ") | |
300 | - | term.write("KENI") |
300 | + | term.write("IPDB") |
301 | print("\n\nConfermare l'operazione?") | |
302 | colore(colors.yellow) | |
303 | print("\n\nInvia il denaro Annulla") | |
304 | while true do | |
305 | event, key, x, y = os.pullEvent() | |
306 | if event == "mouse_click" and x < 16 and y == 8 then | |
307 | inviaDenaro = http.get( | |
308 | "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=" .. | |
309 | password .. "&utente=" .. utente .. | |
310 | "&richiesta=trasferimento&valore=" .. prezzo .. | |
311 | - | "&beneficiario=KENI").readAll() |
311 | + | "&beneficiario=IPDB").readAll() |
312 | risultatoInvio = textutils.unserialize(inviaDenaro) | |
313 | if risultatoInvio.stato == "OK" then | |
314 | colore(colors.white) | |
315 | break | |
316 | else | |
317 | clear() | |
318 | errore("Errore durante il pagamento") | |
319 | end | |
320 | elseif event == "mouse_click" and x > 18 and y == 8 then | |
321 | errore("Pagamento annullato dall'utente.") | |
322 | end | |
323 | end | |
324 | clear() | |
325 | titolo("Erogazione in corso") | |
326 | ||
327 | print("\n\nErogazione di " .. materiale .. " di gasolio in corso...") | |
328 | ben = peripheral.wrap("back") | |
329 | ben.makeRequest(ben.getItemIdentifierIDFor(21258, 18), qta) | |
330 | sleep(10) | |
331 | - | term.setTextColor(colors.black) |
331 | + | |
332 | - | term.setBackgroundColor(colors.black) |
332 | + |