Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Author: Enn3DevPlayer
- -- Updater
- local version = 1.0
- local function check_update()
- local check_version = http.get("http://enn3.it/n_finance/version")
- if version ~= check_version then
- -- TODO
- end
- end
- -- Header
- local function clear()
- term.clear()
- term.setCursorPos(0, 0)
- term.setBackgroundColour(colours.black)
- term.setTextColor(colors.white)
- end
- local function color(text_color)
- term.setTextColour(text_color)
- end
- local function end_color()
- term.setTextColour(colours.white)
- end
- local function background(background_color)
- term.setBackgroundColour(background_color)
- end
- local function end_background()
- term.setBackgroundColour(colours.black)
- end
- local function button(background_color, text_color, text)
- background(background_color)
- color(text_color)
- print(text)
- end_color()
- end_background()
- end
- local function link(text)
- color(colours.yellow)
- print(text)
- end_color()
- end
- local function errore()
- while true do
- clear()
- color(colours.red)
- background(colours.yellow)
- print("Errore!")
- end_background()
- print("")
- print("Errore: Impossibile caricare la pagina!")
- end_color()
- print("")
- print("Cause comuni:")
- print("")
- print("- Nessuna connessione a LeNet")
- print("- Pagina inesistente")
- print("- Errore di digitazione dell'indirizzo")
- print("- Link errato o obsoleto.")
- print("")
- print("Premere G per navigare ad un'altra pagina")
- print("Premere Q per uscire da LeNet")
- event, key = os.pullEvent("key")
- if key == keys.g then
- vai_a()
- elseif key == keys.q then
- os.reboot()
- end
- end
- end
- local function vai_a()
- sleep(0.2)
- term.setCursorPos(1, 2)
- background(colours.lightGrey)
- print("|-----------------------------------|")
- print("| VAI A INDIRIZZO.... |")
- print("| |")
- print("| ln:// |")
- print("| |")
- print("| |")
- print("|Premere Enter per navigare |")
- print("|-----------------------------------|")
- end_background()
- term.setCursorPos(8, 5)
- url = read()
- vai_a_url(url)
- term.setCursorPos(1, 19)
- term.write("Premere G per andare ad un indirizzo, Q per uscire")
- while true do
- event, key = os.pullEvent("key")
- if key == keys.g then vai_a() end
- end
- end
- -- inizio pagina
- -- IMPLEMENTAZIONE DEL DRAWFILLEDBOX
- local function drawPixelInternal(xPos, yPos)
- term.setCursorPos(xPos, yPos)
- term.write(" ")
- end
- local tColourLookup = {}
- for n = 1, 16 do
- tColourLookup[string.byte("0123456789abcdef", n, n)] = 2 ^ (n - 1)
- end
- local function drawFilledBox(startX, startY, endX, endY, nColour)
- if type(startX) ~= "number" or type(startX) ~= "number" or type(endX) ~=
- "number" or type(endY) ~= "number" or
- (nColour ~= nil and type(nColour) ~= "number") then
- error("Expected startX, startY, endX, endY, colour", 2)
- end
- startX = math.floor(startX)
- startY = math.floor(startY)
- endX = math.floor(endX)
- endY = math.floor(endY)
- if nColour then term.setBackgroundColor(nColour) end
- if startX == endX and startY == endY then
- drawPixelInternal(startX, startY)
- return
- end
- local minX = math.min(startX, endX)
- if minX == startX then
- minY = startY
- maxX = endX
- maxY = endY
- else
- minY = endY
- maxX = startX
- maxY = startY
- end
- for x = minX, maxX do for y = minY, maxY do drawPixelInternal(x, y) end end
- end
- -- FUNZIONE PER L'ARROTONDAMENTO
- local function round(num, numDecimalPlaces)
- local mult = 10 ^ (numDecimalPlaces or 0)
- return math.floor(num * mult + 0.5) / mult
- end
- term.clear()
- button(colours.yellow, colours.black, "Area Riservata Borsa (Modalità sicura di LeNet) ")
- print(
- "\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.")
- -- nomeutente
- term.setCursorPos(1, 9)
- term.write("Nome utente:")
- term.setCursorPos(15, 9)
- end_color()
- utenteAccettato = false
- conteggioErrori = 0
- while utenteAccettato == false do
- utente = read()
- checkuser = http.get(
- "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=no&richiesta=verifica&utente=" ..
- utente).readAll()
- tabcheckuser = textutils.unserialize(checkuser)
- if tabcheckuser.stato == "OK" then
- term.setCursorPos(15, 9)
- color(colours.lime)
- term.write(utente)
- end_color()
- utenteAccettato = true
- else
- term.setCursorPos(15, 9)
- color(colours.red)
- term.write("Utente errato! ")
- sleep(2)
- term.setCursorPos(15, 9)
- end_color()
- term.write(" ")
- term.setCursorPos(15, 9)
- conteggioErrori = conteggioErrori + 1
- if conteggioErrori > 2 then
- term.setCursorPos(15, 9)
- color(colours.red)
- term.write("Troppi tentativi di immissione errati ")
- sleep(2)
- term.setCursorPos(15, 9)
- end_color()
- term.write(" ")
- term.setCursorPos(15, 9)
- clear()
- vai_a_url("borsanr")
- end
- end
- end
- -- password
- term.setCursorPos(1, 11)
- term.write("Password:")
- term.setCursorPos(15, 11)
- conteggioErrori = 0
- passAccettata = false
- while passAccettata == false do
- end_color()
- password = read("#")
- checkuser = http.get(
- "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=" ..
- password .. "&richiesta=addebito&valore=0&utente=" ..
- utente).readAll()
- risposta = textutils.unserialize(checkuser)
- if risposta.stato == "OK" then
- term.setCursorPos(15, 11)
- color(colours.lime)
- term.write("############## ")
- end_color()
- passAccettata = true
- else
- term.setCursorPos(15, 11)
- color(colours.red)
- term.write("Password errata! ")
- conteggioErrori = conteggioErrori + 1
- sleep(2)
- term.setCursorPos(15, 11)
- term.write(" ")
- term.setCursorPos(15, 11)
- if conteggioErrori > 2 then
- term.setCursorPos(15, 11)
- color(colours.red)
- term.write("Troppi tentativi di immissione errati")
- sleep(2)
- term.setCursorPos(15, 11)
- term.write(" ")
- term.setCursorPos(15, 11)
- clear()
- vai_a_url("borsanr")
- end
- end
- end
- aggiornamento = true
- -- Pagina principale
- while true do
- clear()
- conteggioErrori = 0
- -- Pagina in cui scegli le operazioni da fare
- -- Ricontrolla il saldo per gestire l'aggiornamento di più operazioni
- if aggiornamento == true then
- checkuser = http.get(
- "http://172.16.20.220/luanet/servlets/nebraskapay.php?auth=" ..
- password .. "&richiesta=addebito&valore=0&utente=" ..
- utente).readAll()
- risposta = textutils.unserialize(checkuser)
- saldo = tonumber(risposta.saldo)
- test_prendi_borsa = http.get(
- "http://172.16.20.220/luanet/servlets/borsa.php?auth=" ..
- password .. "&richiesta=login&utente=" .. utente)
- .readAll()
- prendi_borsa = http.get(
- "http://172.16.20.220/luanet/servlets/borsa.php?auth=" ..
- password .. "&richiesta=login&utente=" .. utente)
- .readAll()
- risposta_borsa = textutils.unserialize(prendi_borsa)
- prendi_quotaz = http.get(
- "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
- .readAll()
- risposta_qtz = textutils.unserialize(prendi_quotaz)
- end
- tot_azioni = 0
- controvalore = 0
- scarto = 0
- for k, v in pairs(risposta_borsa.portfolio) do
- tot_azioni = tot_azioni + tonumber(v)
- print(k)
- controvalore = risposta_qtz[k]["quotazione"] * tonumber(v) +
- controvalore
- scarto = risposta_qtz[k]["closing"] * tonumber(v) + scarto
- end
- scarto = (controvalore - scarto) / scarto * 100
- if scarto < 0 then
- scarto = round(scarto, 2)
- scarto_pos = false
- elseif tostring(scarto) == "nan" then
- scarto = "Non disp."
- scarto_pos = false
- else
- scarto = "+" .. round(scarto, 2)
- scarto_pos = true
- end
- -- Disegna la finestra del pannello utente
- clear()
- button(colours.yellow, colours.black, "Area riservata (Modalità sicura di LeNet) ")
- button(colours.black, colours.white, "\nBenvenuto, " .. utente .. "!\nOperazioni disponibili:\n")
- button(colours.purple, colours.white, "Visualizza le quotazioni \n")
- button(colours.purple, colours.white, "Analisi dell'Indice NRI \n")
- button(colours.purple, colours.white, "Visualizza portfolio \n")
- button(colours.purple, colours.white, "Acquista azioni \n")
- button(colours.purple, colours.white, "Vendi azioni \n")
- button(colours.purple, colours.white, "Imposta Stop Loss Order \n")
- button(colours.purple, colours.white, "Disconnettiti dalla Borsa \n")
- term.setCursorPos(30, 5)
- write("Dati account")
- term.setCursorPos(30, 7)
- write("Saldo: " .. saldo .. " IC")
- term.setCursorPos(30, 8)
- write("Azioni: " .. tot_azioni)
- term.setCursorPos(30, 9)
- write("Valore: " .. round(controvalore, 2) .. " IC")
- term.setCursorPos(30, 10)
- write("Scarto: ")
- if scarto_pos == false then
- color(colors.red)
- else
- color(colors.lime)
- end
- term.setCursorPos(38, 10)
- write(scarto .. " %")
- end_color()
- print(k)
- event, key, x, y = os.pullEvent("mouse_click")
- if event == "mouse_click" then
- if y == 5 then -- Visualizza le quotazioni
- aggiornamento = true
- clear()
- button(colours.yellow, colours.black, "Quotazioni (Modalità sicura di LeNet) ")
- quotazioni = textutils.unserialize(
- http.get(
- "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
- .readAll())
- color(colors.purple)
- print("\nSimb Nome società Quotaz. Scost.")
- end_color()
- ypos = 4
- for k, v in pairs(quotazioni) do
- term.setCursorPos(1, ypos)
- term.write(k)
- term.setCursorPos(6, ypos)
- term.write(v["nome"])
- term.setCursorPos(36, ypos)
- term.write(v["quotazione"])
- term.setCursorPos(46, ypos)
- if v["segno"] == "+" then
- color(colors.lime)
- else
- color(colors.red)
- end
- term.write(v["scarto"])
- end_color()
- ypos = ypos + 1
- end
- term.setCursorPos(1, 18)
- button(colours.purple, colours.white, " Indietro ")
- -- Fine pagina
- term.setCursorPos(1, 19)
- -- Eventi per i link
- sleep(0.5)
- while true do
- event, key, x, y = os.pullEvent()
- if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
- break
- end
- end
- elseif y == 7 then -- Analisi dell'Indice NRI
- aggiornamento = true
- clear()
- button(colours.yellow, colours.black, "Analisi tecnica (Modalità sicura di LeNet) ")
- quotazioni = http.get(
- "http://rest.rgbcraft.com/borsa/analisi-tecnica.php")
- .readAll()
- color(colors.purple)
- print("\nAnalisi tecnica dell'Indice di New Radeon")
- end_color()
- print("\n")
- print(quotazioni)
- term.setCursorPos(1, 18)
- button(colours.purple, colours.white, " Indietro ")
- -- Fine pagina
- term.setCursorPos(1, 19)
- -- Eventi per i link
- sleep(0.5)
- while true do
- event, key, x, y = os.pullEvent()
- if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
- break
- end
- end
- elseif y == 9 then -- Visualizza portfolio
- aggiornamento = true
- clear()
- button(colours.yellow, colours.black, "Portfolio (Modalità sicura di LeNet) ")
- quotazioni = textutils.unserialize(
- http.get(
- "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
- .readAll())
- color(colors.purple)
- print("\nSimbolo Quantità Quotazione Totale Scost.")
- end_color()
- ypos = 4
- for k, v in pairs(risposta_borsa.portfolio) do
- term.setCursorPos(1, ypos)
- term.write(k)
- term.setCursorPos(10, ypos)
- term.write(v)
- term.setCursorPos(20, ypos)
- term.write(round(risposta_qtz[k]["quotazione"], 2))
- term.setCursorPos(32, ypos)
- term.write(round(risposta_qtz[k]["quotazione"] * tonumber(v), 2))
- term.setCursorPos(45, ypos)
- if quotazioni[k]["segno"] == "+" then
- color(colors.lime)
- else
- color(colors.red)
- end
- term.write(quotazioni[k]["scarto"])
- end_color()
- ypos = ypos + 1
- end
- term.setCursorPos(1, 18)
- button(colours.purple, colours.white, " Indietro ")
- -- Fine pagina
- term.setCursorPos(1, 19)
- -- Eventi per i link
- sleep(0.5)
- while true do
- event, key, x, y = os.pullEvent()
- if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
- break
- end
- end
- elseif y == 11 then -- Acquista azioni
- aggiornamento = true
- clear()
- button(colours.yellow, colours.black, "Acquista azioni (Modalità sicura di LeNet) ")
- quotazioni = textutils.unserialize(
- http.get(
- "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
- .readAll())
- color(colors.purple)
- print("\nSimb Nome società Num.")
- end_color()
- ypos = 4
- alt = false
- pos_simboli = {}
- for k, v in pairs(quotazioni) do
- term.setCursorPos(1, ypos)
- term.write(k)
- term.setCursorPos(6, ypos)
- term.write(v["nome"])
- term.setCursorPos(36, ypos)
- term.write(risposta_borsa["portfolio"][k])
- term.setCursorPos(42, ypos)
- if alt == false then
- button(colors.purple, colors.white, " Compra ")
- alt = true
- else
- button(colors.purple, colors.white, " Compra ")
- alt = false
- end
- pos_simboli[ypos] = k
- ypos = ypos + 1
- end
- term.setCursorPos(1, 18)
- button(colours.purple, colours.white, " Indietro ")
- -- Fine pagina
- term.setCursorPos(1, 19)
- -- Eventi per i link
- sleep(0.5)
- finito = false
- while finito == false do
- event, key, x, y = os.pullEvent("mouse_click")
- if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
- break
- else
- clear()
- button(colours.yellow, colours.black, "Acquista azioni (Modalità sicura di LeNet) ")
- print("\nSi stanno per acquistare azioni di questa società:\n")
- simbolo_acquisto = pos_simboli[y]
- print(pos_simboli[y] .. " - " ..
- quotazioni[pos_simboli[y]]["nome"])
- print("\nIl costo di ciascuna azione è " ..
- quotazioni[pos_simboli[y]]["quotazione"] .. "IC")
- print("Si possiedono " .. saldo ..
- " IC sul conto Nebraska Pay.\n\nQuante azioni si desidera acquistare?\n")
- term.setCursorPos(1, 12)
- term.write("Quantità:")
- term.setCursorPos(11, 12)
- importoAccettato = false
- conteggioErrori = 0
- while importoAccettato == false do
- importo = tonumber(read())
- if conteggioErrori > 2 then
- term.setCursorPos(11, 12)
- color(colours.red)
- term.write("Troppi tentativi di immissione errati")
- sleep(2)
- term.setCursorPos(11, 12)
- end_color()
- term.write(" ")
- term.setCursorPos(11, 12)
- clear()
- vai_a_url("borsanr")
- elseif importo == "" or importo == nil or importo <= 0 or
- importo > 1000000 then
- conteggioErrori = conteggioErrori + 1
- term.setCursorPos(11, 12)
- color(colours.red)
- term.write("Quantità errata! " ..
- conteggioErrori)
- sleep(2)
- term.setCursorPos(10, 12)
- end_color()
- term.write(" ")
- term.setCursorPos(11, 12)
- elseif quotazioni[pos_simboli[y]]["quotazione"] * importo <=
- saldo and importo > 0 then
- term.setCursorPos(11, 12)
- color(colours.lime)
- term.write(importo .. " - " ..
- quotazioni[pos_simboli[y]]["quotazione"] *
- importo .. " IC")
- end_color()
- importoAccettato = true
- elseif quotazioni[pos_simboli[y]]["quotazione"] * importo >
- saldo then
- conteggioErrori = conteggioErrori + 1
- term.setCursorPos(11, 12)
- color(colours.red)
- term.write("Disponibilità insufficiente! ")
- sleep(2)
- term.setCursorPos(11, 12)
- end_color()
- term.write(" ")
- term.setCursorPos(11, 12)
- end
- end
- if importoAccettato == true then
- drawFilledBox(3, 15, 22, 17, colors.red)
- term.setCursorPos(7, 16)
- button(colours.red, colours.white, " Annulla ")
- drawFilledBox(30, 15, 49, 17, colors.lime)
- term.setCursorPos(35, 16)
- button(colours.lime, colours.white, " Conferma ")
- finito = true
- end
- while true do
- event, key, x, y = os.pullEvent("mouse_click")
- if event == "mouse_click" and x >= 3 and x <= 22 and y >= 15 and
- y <= 17 then
- break
- elseif event == "mouse_click" and x >= 30 and x <= 49 and y >=
- 15 and y <= 17 then
- clear()
- button(colours.yellow, colours.black, "Acquista azioni (Modalità sicura di LeNet) ")
- rest = http.get(
- "http://172.16.20.220/luanet/servlets/borsa.php?richiesta=acquista&auth=" ..
- password .. "&utente=" .. utente ..
- "&simbolo=" .. simbolo_acquisto ..
- "&qta=" .. importo).readAll()
- rest_t = textutils.unserialize(rest)
- if rest_t["stato"] ~= "OK" then
- color(colors.red)
- if rest_t["stato"] == "DI" then
- print("\n\nERRORE: Credito insufficiente")
- else
- print("\n\nERRORE: Errore interno")
- end
- else
- print("\n\nAcquisto avvenuto con successo!\n")
- print("Si posseggono " .. rest_t["azioni"] ..
- " azioni di " .. simbolo_acquisto)
- end
- print("\n\nAttendere qualche istante...")
- sleep(3)
- break
- end
- end
- end
- end
- elseif y == 13 then -- Vendi azioni
- aggiornamento = true
- clear()
- button(colours.yellow, colours.black, "Vendi azioni (Modalità sicura di LeNet) ")
- quotazioni = textutils.unserialize(
- http.get(
- "http://rest.rgbcraft.com/borsa/?richiesta=lua_totale")
- .readAll())
- color(colors.purple)
- print("\nSimb Nome società Num.")
- end_color()
- ypos = 4
- alt = false
- pos_simboli = {}
- for k, v in pairs(risposta_borsa["portfolio"]) do
- term.setCursorPos(1, ypos)
- term.write(k)
- term.setCursorPos(6, ypos)
- term.write(quotazioni[k]["nome"])
- term.setCursorPos(36, ypos)
- term.write(v)
- term.setCursorPos(42, ypos)
- if alt == false then
- button(colors.purple, colors.white, " Vendi ")
- alt = true
- else
- button(colors.purple, colors.white, " Vendi ")
- alt = false
- end
- pos_simboli[ypos] = k
- ypos = ypos + 1
- end
- term.setCursorPos(1, 18)
- button(colours.purple, colours.white, " Indietro ")
- -- Fine pagina
- term.setCursorPos(1, 19)
- -- Eventi per i link
- sleep(0.5)
- finito = false
- while finito == false do
- event, key, x, y = os.pullEvent("mouse_click")
- if event == "mouse_click" and x >= 1 and x <= 20 and y == 18 then
- break
- else
- clear()
- button(colours.yellow, colours.black, "Vendi azioni (Modalità sicura di LeNet) ")
- print("\nSi stanno per vendere azioni di questa società:\n")
- simbolo_vendita = pos_simboli[y]
- print(pos_simboli[y] .. " - " ..
- quotazioni[pos_simboli[y]]["nome"])
- print("\nIl valore di ciascuna azione è " ..
- quotazioni[pos_simboli[y]]["quotazione"] .. "IC")
- qta_azioni = tonumber(
- risposta_borsa["portfolio"][simbolo_vendita])
- print("Si possiedono " .. qta_azioni ..
- " azioni.\n\nQuante azioni si desidera vendere?\n")
- term.setCursorPos(1, 12)
- term.write("Quantità:")
- term.setCursorPos(11, 12)
- end_color()
- importoAccettato = false
- conteggioErrori = 0
- while importoAccettato == false do
- importo = tonumber(read())
- if conteggioErrori > 2 then
- term.setCursorPos(11, 12)
- color(colours.red)
- term.write("Troppi tentativi di immissione errati")
- sleep(2)
- term.setCursorPos(11, 12)
- end_color()
- term.write(" ")
- term.setCursorPos(11, 12)
- clear()
- vai_a_url("borsanr")
- elseif importo == "" or importo == nil or importo <= 0 or
- importo > qta_azioni then
- conteggioErrori = conteggioErrori + 1
- term.setCursorPos(11, 12)
- color(colours.red)
- term.write("Quantità errata! ")
- sleep(2)
- term.setCursorPos(10, 12)
- end_color()
- term.write(" ")
- term.setCursorPos(11, 12)
- elseif importo <= qta_azioni and importo > 0 then
- term.setCursorPos(11, 12)
- color(colours.lime)
- term.write(importo .. " - " ..
- quotazioni[pos_simboli[y]]["quotazione"] *
- importo .. " IC")
- end_color()
- importoAccettato = true
- end
- end
- if importoAccettato == true then
- drawFilledBox(3, 15, 22, 17, colors.red)
- term.setCursorPos(7, 16)
- button(colours.red, colours.white, " Annulla ")
- drawFilledBox(30, 15, 49, 17, colors.lime)
- term.setCursorPos(35, 16)
- button(colours.lime, colours.white, " Conferma ")
- finito = true
- end
- while true do
- event, key, x, y = os.pullEvent("mouse_click")
- if event == "mouse_click" and x >= 3 and x <= 22 and y >= 15 and
- y <= 17 then
- break
- elseif event == "mouse_click" and x >= 30 and x <= 49 and y >=
- 15 and y <= 17 then
- clear()
- button(colours.yellow, colours.black, "Acquista azioni (Modalità sicura di LeNet) ")
- rest = http.get(
- "http://172.16.20.220/luanet/servlets/borsa.php?richiesta=vendi&auth=" ..
- password .. "&utente=" .. utente ..
- "&simbolo=" .. simbolo_vendita .. "&qta=" ..
- importo).readAll()
- rest_t = textutils.unserialize(rest)
- if rest_t["stato"] ~= "OK" then
- color(colors.red)
- if rest_t["stato"] == "DI" then
- print("\n\nERRORE: " .. rest_t["errore"])
- else
- print("\n\nERRORE: Errore interno")
- end
- else
- print("\n\nAcquisto avvenuto con successo!\n")
- if rest_t["azioni"] ~= "" or rest_t["azoni"] ~= nil then
- print("Si posseggono " .. rest_t["azioni"] ..
- " azioni di " .. simbolo_vendita)
- else
- print(
- "Tutte le azioni di " .. simbolo_vendita ..
- " sono state vendute")
- end
- end
- print("\n\nAttendere qualche istante...")
- sleep(3)
- break
- end
- end
- end
- end
- elseif y == 15 then -- Imposta Stop Loss Order
- -- TODO
- elseif y == 17 then
- vai_a_url("borsanr")
- else
- aggiornamento = false
- end
- else
- aggiornamento = false
- end
- end
Add Comment
Please, Sign In to add comment