lego11

Chiosco Dogana Borealis

May 12th, 2026 (edited)
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- funzioni helper di base
  2. local maxw, maxh = term.getSize()
  3.  
  4. pl = peripheral.wrap("right")
  5. sim = peripheral.wrap("left")
  6. if fs.exists("json") == false then
  7.     shell.run("pastebin get RPUyCMjG json")
  8. end
  9.  
  10. os.loadAPI("json")
  11.  
  12.  
  13.  
  14. function checkCredentials(player)
  15.     if fs.exists("credentials") then
  16.         local credList = fs.open("credentials", "r")
  17.         if type(credList) == "table" then
  18.             result = string.find(credList.readAll(), player)
  19.             credList.close()
  20.             if result == nil then
  21.                 return false
  22.             else
  23.                 return true
  24.             end
  25.         else
  26.             return false
  27.         end
  28.     else
  29.         return false
  30.     end
  31.     return false
  32. end
  33.  
  34. function addToCredentials(player)
  35.     local credList = fs.open("credentials", "a")
  36.     credList.writeLine(player)
  37.     credList.close()
  38. end
  39.  
  40. function tablelength(T)
  41.     local count = 0
  42.     for _ in pairs(T) do
  43.         count = count + 1
  44.     end
  45.     return count
  46. end
  47.  
  48. function clear()
  49.     term.clear()
  50.     term.setCursorPos(1, 1)
  51. end
  52.  
  53. function clearRed()
  54.     sfondo(colors.red)
  55.     term.clear()
  56.     term.setCursorPos(1, 1)
  57. end
  58.  
  59. function colore(sfumatura)
  60.     term.setTextColour(sfumatura)
  61. end
  62.  
  63. function sfondo(sfumaturaSfondo)
  64.     term.setBackgroundColour(sfumaturaSfondo)
  65. end
  66.  
  67. function fineColore()
  68.     term.setTextColour(colours.white)
  69. end
  70.  
  71. function fineSfondo()
  72.     term.setBackgroundColour(colours.black)
  73. end
  74.  
  75. -- IMPLEMENTAZIONE DEL DRAWFILLEDBOX
  76. local function drawPixelInternal(xPos, yPos)
  77.     term.setCursorPos(xPos, yPos)
  78.     term.write(" ")
  79. end
  80.  
  81. local tColourLookup = {}
  82. for n = 1, 16 do
  83.     tColourLookup[string.byte("0123456789abcdef", n, n)] = 2 ^ (n - 1)
  84. end
  85.  
  86. function drawFilledBox(startX, startY, endX, endY, nColour)
  87.     if type(startX) ~= "number" or type(startX) ~= "number" or type(endX) ~= "number" or type(endY) ~= "number" or
  88.         (nColour ~= nil and type(nColour) ~= "number") then
  89.         error("Expected startX, startY, endX, endY, colour", 2)
  90.     end
  91.  
  92.     startX = math.floor(startX)
  93.     startY = math.floor(startY)
  94.     endX = math.floor(endX)
  95.     endY = math.floor(endY)
  96.  
  97.     if nColour then
  98.         term.setBackgroundColor(nColour)
  99.     end
  100.     if startX == endX and startY == endY then
  101.         drawPixelInternal(startX, startY)
  102.         return
  103.     end
  104.  
  105.     local minX = math.min(startX, endX)
  106.     if minX == startX then
  107.         minY = startY
  108.         maxX = endX
  109.         maxY = endY
  110.     else
  111.         minY = endY
  112.         maxX = startX
  113.         maxY = startY
  114.     end
  115.  
  116.     for x = minX, maxX do
  117.         for y = minY, maxY do
  118.             drawPixelInternal(x, y)
  119.         end
  120.     end
  121. end
  122.  
  123. function titolo(testo, bk, cl)
  124.     drawFilledBox(1, 1, maxw, 1, colors.orange)
  125.     term.setCursorPos((maxw - #testo) / 2, 1)
  126.     colore(colors.black)
  127.     term.write(testo)
  128.     colore(colors.white)
  129. end
  130.  
  131. function printCentered(text)
  132.     curX, curY = term.getCursorPos()
  133.     term.setCursorPos((maxw - #text) / 2, curY)
  134.     term.write(text)
  135. end
  136.  
  137. function errore(errore)
  138.     sfondo(colors.red)
  139.     colore(colors.white)
  140.     term.clear()
  141.     term.setCursorPos(1, 1)
  142.     titolo("Errore irreversibile")
  143.     term.setCursorPos(1, 3)
  144.     sfondo(colors.red)
  145.     colore(colors.white)
  146.     print(errore)
  147.     print("\n\n\nAttendere qualche secondo...")
  148.     os.sleep(5)
  149.     os.reboot()
  150. end
  151.  
  152. function concludi(conclusione)
  153.     sfondo(colors.lime)
  154.     colore(colors.black)
  155.     term.clear()
  156.     term.setCursorPos(1, 1)
  157.     titolo("OPERAZIONE CONCLUSA")
  158.     term.setCursorPos(1, 3)
  159.     sfondo(colors.lime)
  160.     colore(colors.black)
  161.     print(conclusione)
  162.     print("\n\n\nAttendere qualche secondo...")
  163. end
  164.  
  165. -- Variabili d'ambiente
  166. page = 0
  167. player = nil
  168.  
  169. -- Programma
  170. while true do
  171.     sfondo(colors.blue)
  172.     colore(colors.white)
  173.     clear()
  174.     if page == 0 then
  175.         titolo("POLIZIA DI FRONTIERA - POSTO DI NR PORTO", colors.orange, colors.white)
  176.         sfondo(colors.blue)
  177.         term.setCursorPos(1, 3)
  178.         printCentered("Benvenuti a Zorya e nella Città di New Radeon.")
  179.         term.setCursorPos(1, 5)
  180.         print("Per incominciare la procedura di verifica, fare clic destro sul blocco a destra del PC.\n")
  181.         print("Se si è già passati da questo Posto Frontiera e le credenziali sono valide, il cancello si aprirà.\n")
  182.         print("Se non si è mai passati da questo Posto Frontiera, si dovrà seguire la procedura di immigrazione.\n")
  183.         print("Per assistenza contattare il Ministero dell'INTERNO eseguendo il comando /discord")
  184.     elseif page == 1 then
  185.         titolo("POLIZIA DI FRONTIERA - IMMIGRAZIONE", colors.orange, colors.white)
  186.         sfondo(colors.blue)
  187.         term.setCursorPos(1, 3)
  188.         print("Per concludere la procedura di immigrazione, leggere attentamente quanto segue.\n")
  189.         print("1) Si certifica che si ha letto e compreso nella loro interezza le Regole? /regole\n")
  190.         print("2) Si certifica che non si hanno reati pendenti al momento dell'immigrazione?\n")
  191.         drawFilledBox(8, 16, 20, 18, colors.red)
  192.         drawFilledBox(31, 16, 43, 18, colors.lime)
  193.         term.setCursorPos(36, 17)
  194.         term.write("SI")
  195.         term.setCursorPos(13, 17)
  196.         sfondo(colors.red)
  197.         term.write("NO")
  198.     elseif page == 2 then
  199.         if player == nil then
  200.             errore()
  201.         end
  202.         titolo("POLIZIA DI FRONTIERA - STAMPA DOCUMENTI", colors.orange, colors.white)
  203.         sfondo(colors.blue)
  204.         term.setCursorPos(1, 3)
  205.         print("Creazione della SIM Card personale in corso.\n")
  206.         print("ATTENZIONE: La SIM Card è già dotata di Piano Tariffario di base e credito telefonico di cittadinanza.\n")
  207.         print("Invio richiesta aut. da server g.c. in corso...")
  208.         local h = http.get("https://gsm.rgbcraft.com/?request=registerNewNumber&mnc=1&player="..player)
  209.         data = h.readAll()
  210.         h.close()
  211.         data = json.json.decode(data)
  212.         number = data.response
  213.         number = "0"..number
  214.  
  215.         print("Creazione della SIM...")
  216.  
  217.         iccid = sim.registerSim(false, number, "Highland Mobile Prepaid")
  218.  
  219.         print("Conferma della registrazione...")
  220.  
  221.         local h = http.get("https://gsm.rgbcraft.com/?request=registerICCID&iccid="..iccid.."&phone_number="..number)
  222.         data = h.readAll()
  223.         h.close()
  224.  
  225.         data2 = json.json.decode(data)
  226.  
  227.         if data2.status == 200 then
  228.             print("SIM Registrata con successo!")
  229.             print("La SIM Card verrà erogata a breve...")
  230.             print("Inserire la SIM Card nel telefono cellulare per utilizzarla.")
  231.             sleep(1)
  232.             sim.ejectSim()
  233.             sleep(3)
  234.             concludi("CANCELLO APERTO - BUONA GIORNATA")
  235.             rs.setOutput("bottom", true)
  236.             sleep(10)
  237.             rs.setOutput("bottom", false)
  238.             os.reboot()
  239.         else
  240.             errore("Errore gateway HighlandMobile")
  241.         end
  242.     end
  243.    
  244.     local ev, a, b, c = os.pullEvent()
  245.     if page == 0 and ev == "player" then
  246.         if (checkCredentials(a) == false) then
  247.             player = a
  248.             page = 1
  249.         else
  250.             concludi("CANCELLO APERTO - BUONA GIORNATA!")
  251.             rs.setOutput("bottom", true)
  252.             sleep(10)
  253.             rs.setOutput("bottom", false)
  254.             os.reboot()
  255.         end
  256.     elseif page == 1 and ev == "mouse_click" then
  257.         --drawFilledBox(8, 16, 20, 18, colors.red)
  258.         if b >= 8 and b <= 20 and c >= 16 and c <= 18 then
  259.             errore("Procedura di immigrazione fallita. Rifiuto del candidato.")
  260.         --drawFilledBox(31, 16, 43, 18, colors.lime)
  261.         elseif b >= 31 and b <= 43 and c >= 16 and c <= 18 then
  262.             sfondo(colors.blue)
  263.             term.clear()
  264.             titolo("POLIZIA DI FRONTIERA - IMMIGRAZIONE", colors.orange, colors.white)
  265.             sfondo(colors.blue)
  266.             term.setCursorPos(1, 3)
  267.             print("Attesa risposta server identità digitale...\n")
  268.             rest = http.get("http://172.16.20.220/luanet/servlets/activator/?nome=" .. player)
  269.             if rest == nil then
  270.                 errore("Server identità digitale irraggiungibili")
  271.             end
  272.             restTable = textutils.unserialize(rest.readAll())
  273.             if type(restTable) ~= "table" then
  274.                 errore("Risposta errata server identità digitale")
  275.             end
  276.             if restTable.stato == "EA" then
  277.                 errore("Errore server identità digitale: " .. restTable.errore)
  278.             end
  279.             if restTable.stato == "OK" then
  280.                 addToCredentials(player)
  281.                 print("Risposta accettata.")
  282.                 sleep(1)
  283.                 page = 2
  284.             else
  285.                 errore("Errore non specificato")
  286.             end
  287.         end        
  288.     end
  289. end
Advertisement
Add Comment
Please, Sign In to add comment