View difference between Paste ID: jgYm165u and Gi3Gbrr0
SHOW: | | - or go back to the newest paste.
1
--VARIABILI DA POPOLARE
2
3-
apiVersion = "NaN"
3+
apiVersion = "1.0"
4
progVersion = "v1.0"
5-
defconLvl = "DEFCON 5"
5+
defconLvl = "Defcon 5"
6-
isEndorOn = true
6+
isEndorOn = false
7-
message = "Questo รจ un messaggio generico"
7+
lockTrain = false
8
sleep = 60
9
10-
    apiVersion = "NaN"
10+
shell.run("pastebin get ADaQ4War json")
11-
    progVersion = "v1.0"
11+
os.loadAPI("json")
12-
    defconLvl = "DEFCON 5"
12+
13-
    isEndorOn = false
13+
14-
    message = "Questo รจ un messaggio generico"
14+
    rest = http.get("http://rgbvm.fabrimat.me/~fabrimat/tds.php")
15
    s = rest.readAll()
16
    t = json.decode(s)
17
    
18
    defconLvl = t.defcon
19
    isEndorOn = t.endor
20
    lockTrain = t.lock_train
21
    sleep = t.next_sleep
22
end
23
24
maxw, maxh = term.getSize()
25
halfw = math.floor(maxw/2)
26
halfh = math.floor(maxh/2)
27
28
-- IMPLEMENTAZIONE DEL DRAWFILLEDBOX
29
local function drawPixelInternal(xPos, yPos)
30
    term.setCursorPos(xPos, yPos)
31
    term.write(" ")
32
end
33
 
34
local tColourLookup = {}
35
for n = 1, 16 do
36
    tColourLookup[string.byte("0123456789abcdef", n, n)] = 2 ^ (n - 1)
37
end
38
 
39
function drawFilledBox(startX, startY, endX, endY, nColour)
40
    if type(startX) ~= "number" or type(startX) ~= "number" or type(endX) ~=
41
        "number" or type(endY) ~= "number" or
42
        (nColour ~= nil and type(nColour) ~= "number") then
43
        error("Expected startX, startY, endX, endY, colour", 2)
44
    end
45
 
46
    startX = math.floor(startX)
47
    startY = math.floor(startY)
48
    endX = math.floor(endX)
49
    endY = math.floor(endY)
50
 
51
    if nColour then term.setBackgroundColor(nColour) end
52
    if startX == endX and startY == endY then
53
        drawPixelInternal(startX, startY)
54
        return
55
    end
56
 
57
    local minX = math.min(startX, endX)
58
    if minX == startX then
59
        minY = startY
60
        maxw = endX
61
        maxh = endY
62
    else
63
        minY = endY
64
        maxw = startX
65
        maxh = startY
66
    end
67
 
68
    for x = minX, maxw do for y = minY, maxh do drawPixelInternal(x, y) end end
69
end
70
71
function colore(sfumatura) term.setTextColour(sfumatura) end
72
 
73
function sfondo(sfumaturaSfondo) term.setBackgroundColour(sfumaturaSfondo) end
74
 
75
function fineColore() term.setTextColour(colours.white) end
76
 
77
function fineSfondo() term.setBackgroundColour(colours.black) end
78
79
function titolo(testo)
80
	maxw, maxh = term.getSize()
81
    drawFilledBox(1, 1, maxw, 1, colors.yellow)
82
    term.setCursorPos((maxw - #testo) / 2, 1)
83
    colore(colors.black)
84
    term.write(testo)
85
end
86
87
function clear()
88
    term.clear()
89
    term.setCursorPos(1,1)
90
end
91
92
function printCentered(text)
93
    local curx, cury = term.getCursorPos()
94
    local maxw, maxh = term.getSize()
95
    term.setCursorPos((maxw - #text) / 2, cury)
96-
    drawFilledBox(halfw - 9, halfh, halfw + 9, halfh + 2, colors.lime)
96+
97-
    term.setCursorPos(1, halfh+1)
97+
98-
    printCentered("Richiesta accesso")
98+
99
100
101
function drawMain()
102
    titolo("Tyrian Defense System")
103
    if(lockTrain) then
104
        drawFilledBox(halfw - 9, halfh, halfw + 9, halfh + 2, colors.lime)
105-
    defconLvls["DEFCON 1"] = colors.red
105+
        term.setCursorPos(1, halfh+1)
106-
    defconLvls["DEFCON 2"] = colors.yellow
106+
        printCentered("Richiesta accesso")
107-
    defconLvls["DEFCON 3"] = colors.lime
107+
108-
    defconLvls["DEFCON 4"] = colors.cyan
108+
109-
    defconLvls["DEFCON 5"] = colors.purple
109+
110
111
    term.setCursorPos(1, halfh/2)
112
113
    local defconLvls = {}
114
    defconLvls["Defcon 1"] = colors.red
115
    defconLvls["Defcon 2"] = colors.yellow
116
    defconLvls["Defcon 3"] = colors.lime
117
    defconLvls["Defcon 4"] = colors.cyan
118
    defconLvls["Defcon 5"] = colors.purple
119
    colore(defconLvls[defconLvl])
120
    printCentered(defconLvl)
121
122
    term.setCursorPos(1, halfh/2 + 2)
123
    colore(colors.white)
124
    if isEndorOn == false then 
125
        printCentered("ENDOR non attivo")
126
    else
127-
function drawMessage()
127+
128
    end
129
130
    maxw, maxh = term.getSize()
131
    local versionString = "(C) Proclus & Albannach 2021 - " .. progVersion .. " - API " .. apiVersion .. " "
132
    term.setCursorPos(1, maxh)
133
    printCentered(versionString)
134
end
135
136
function drawMessage(message, background, text)
137
    clear()
138
    titolo("Tyrian Defense System")
139
    term.setBackgroundColor(background)
140
    term.setTextColor(text)
141
    
142
    term.setCursorPos(1, halfh)
143
    
144-
function func_484192a()
144+
145-
    drawMessage()
145+
146-
    os.pullEvent()
146+
147
    term.setBackgroundColor(colors.black)
148
    term.setTextColor(colors.white)
149
    local versionString = "(C) Proclus & Albannach 2021 - " .. progVersion .. " - API " .. apiVersion .. " "
150
    term.setCursorPos(1, maxh)
151
    printCentered(versionString)
152-
    updateVars()
152+
153
154-
    event, button, x, y = os.pullEvent("mouse_click")
154+
155
function requestAuthorization()
156-
    if x >= (halfw - 9) and x <= (halfw + 9) and y <= (halfh + 2) and y >= (halfh) then
156+
    drawMessage("Richiesta accesso in corso", colors.black, colors.white)
157-
        func_484192a()
157+
    os.sleep(0.5)
158-
        break
158+
    drawMessage("Richiesta accesso in corso.", colors.black, colors.white)
159
    os.sleep(0.5)
160
    drawMessage("Richiesta accesso in corso..", colors.black, colors.white)
161
    os.sleep(0.5)
162
    drawMessage("Richiesta accesso in corso...", colors.black, colors.white)
163
    os.sleep(0.5)
164
    if(isEndorOn) then
165
        denyAuth()
166
    else
167
        allowAuth()
168
    end
169
end
170
171
function denyAuth()
172
    drawMessage("Accesso negato", colors.black, colors.red)
173
    os.sleep(10)
174
end
175
176
function allowAuth()
177
    drawMessage("Accesso consentito", colors.black, colors.lime)
178
    rs.setOutput("back", false)
179
    os.sleep(30)
180
end
181
182
clear()
183
updateVars()
184
185
while true do
186
    if(lockTrain) then
187
        rs.setOutput("top", true)
188
        rs.setOutput("back", true)
189
    else
190
        rs.setOutput("top", false)
191
        rs.setOutput("back", false)
192
    end
193
    
194
    os.startTimer(sleep)
195
    
196
    clear()
197
    drawMain()
198
    event, button, x, y = os.pullEvent()
199
    term.setCursorPos(1, 17)
200
    if(event == 'mouse_click' and lockTrain) then
201
        if x >= (halfw - 9) and x <= (halfw + 9) and y <= (halfh + 2) and y >= (halfh) then
202
            requestAuthorization()
203
        end
204
    elseif(event == 'timer') then
205
        updateVars()
206
    end
207
end
208
209