View difference between Paste ID: s45vw8Nr and x1nqW58s
SHOW: | | - or go back to the newest paste.
1
--[[
2
	This is a Computercraft Security System, made by
3
	FiMa_Coders. You are free to use the code wherever
4
	you want in your builds, but you are not allowed
5
	change the code in any way, except for the things 
6
	that are marked "CHANGABLE".
7-
	
7+
8-
	If you want to share this program, you can by routing
8+
9-
	people to:
9+
10-
	http://turtlescripts.com/project/gjdi5q-Security-Code-Lock
10+
11
-- Determine where the modem is.   peripheral.wrap ("monitor_2")
12
monitorSide = nil
13
print("Looking for monitor,")
14
if peripheral.isPresent("left") and peripheral.getType("left")=="monitor"  then
15
  monitorSide = "left"
16
elseif peripheral.isPresent("right") and peripheral.getType("right")=="monitor" then
17
  monitorSide = "right"
18
elseif peripheral.isPresent("top") and peripheral.getType("top")=="monitor" then
19-
m = peripheral.wrap("back")
19+
  monitorSide = "top"
20
elseif peripheral.isPresent("back") and peripheral.getType("back")=="monitor" then
21
  monitorSide = "back"
22
elseif peripheral.isPresent("bottom") and peripheral.getType("bottom")=="monitor" then
23
  monitorSide = "bottom"
24
 elseif peripheral.isPresent("front") and peripheral.getType("front")=="monitor" then
25
  monitorSide = "front"
26
else
27
	print("No Monitor Found!")
28
	monitorSide = false
29
    end 
30
31
while monitorSide == false do
32
	print("No Monitor Found!")
33
	print("ERROR: "..math.random(1,300))
34
	sleep(5)
35-
		[[  FiMa_Coders  ]],
35+
	shell.run("lock")
36
end
37
38
39
os.pullEvent = os.pullEventRaw
40
term.clear()
41
term.setCursorPos(1,1)
42
shell.openTab("lock2")
43-
		[[ | X | 0 | > | ]],
43+
44
shell.switchTab(2)
45-
		}
45+
bundleErrorColor = colors.red
46
bundleSuccessColor = colors.lime
47
48
49
m = peripheral.wrap( tostring(monitorSide) )
50
m.clear()
51
m.setTextScale(0.5)
52
m.setBackgroundColor(colors.black)
53
m.setTextColor(colors.white)
54
55
56-
	m.write(" X ")
56+
57
load = fs.open("Config", "r")
58
code,autoReset,waitTime,redstoneSide = unpack(textutils.unserialize(load.readAll()))
59-
	m.write(" > ")
59+
60
			    
61-
	m.setBackgroundColor(colors.lightGray)
61+
62
sPos = 4
63
64
65
function mGUI()
66
	gui = {
67
		[[  ?John Dowe   ]],
68
		[[ Security INC. ]],
69-
		rs.setOutput(redstoneSide,false)
69+
70
		[[ |           | ]],
71
		[[ +---+---+---+ ]],
72
		[[ | 1 | 2 | 3 | ]],
73
		[[ | 4 | 5 | 6 | ]],
74
		[[ | 7 | 8 | 9 | ]],
75
		[[ | ?? | 0 | > | ]],
76
		[[ +---+---+---+ ]],
77
	}
78-
		rs.setOutput(redstoneSide,false)
78+
79
	for i = 1,10 do
80
		m.setCursorPos(1,i)
81
		if i == 3 then
82
			m.setTextColor(colors.white)
83
		end
84
		m.write(gui[i])
85
	end
86
	m.setCursorPos(3,9)
87
	m.setBackgroundColor(colors.red)
88
	m.write(" >< ")
89
	m.setCursorPos(11,9)
90-
					m.write(" CORRECT!  ")
90+
91-
					rs.setOutput(redstoneSide,true)
91+
	m.write(" <> ")
92
	m.setCursorPos(3,4)
93
	m.setBackgroundColor(colors.blue)
94
	m.write("           ")
95
end
96
97
function open()
98-
				sleep(3)
98+
99
		if waitTime == 0 then waitTime = 2 end
100
		sleep(waitTime)
101
		rs.setBundledOutput(redstoneSide,0)
102
		os.reboot()
103
	else
104
		m.setBackgroundColor(colors.black)
105
		m.clear()
106-
		sleep(3)
106+
107
		m.setCursorPos(1,1)
108
		m.write("<")
109
		ev, side, xPos, yPos = os.pullEvent("monitor_touch")
110
		rs.setBundledOutput(redstoneSide,0)
111
		os.reboot()
112
	end
113
end
114
115
function checkInp()
116
	if #inp == #code then
117
		for f = 1,#code do
118
			if inp[f] == code[f] then
119
				if f == #code then
120
					m.setCursorPos(3,4)
121
					m.setBackgroundColor(colors.lime)
122
					m.write(" WELCOME!  ")
123
					rs.setBundledOutput(redstoneSide,bundleSuccessColor)
124
					open()
125
				end
126
			else
127
				m.setCursorPos(3,4)
128
				m.setBackgroundColor(colors.red)
129
				m.write("WRONG CODE!")
130
				rs.setBundledOutput(redstoneSide,bundleErrorColor)
131
				sleep(10)
132
				os.reboot()
133
			end
134
		end
135
	else
136
		m.setCursorPos(3,4)
137
		m.setBackgroundColor(colors.red)
138
		m.write("WRONG CODE!")
139
		rs.setBundledOutput(redstoneSide, bundleErrorColor)
140
		sleep(10)
141
		os.reboot()
142
	end
143
end
144
145
function input()
146
	mGUI()
147
	while true do
148
		ev, side, xPos, yPos = os.pullEvent("monitor_touch")
149
		print(xPos..":"..yPos)
150
		if ev == "monitor_touch" then
151
			if xPos > 2 and xPos < 6 and yPos == 6 then
152
				table.insert(inp,1)
153
				m.setCursorPos(sPos,4)
154
				m.write("*")
155
				sPos = sPos+1
156
			elseif xPos > 6 and xPos < 10 and yPos == 6 then
157
				table.insert(inp,2)
158
				m.setCursorPos(sPos,4)
159
				m.write("*")
160
				sPos = sPos+1
161
			elseif xPos > 10 and xPos < 14 and yPos == 6 then
162
				table.insert(inp,3)
163
				m.setCursorPos(sPos,4)
164
				m.write("*")
165
				sPos = sPos+1
166
			elseif xPos > 3 and xPos < 5 and yPos == 7 then
167
				table.insert(inp,4)
168
				m.setCursorPos(sPos,4)
169
				m.write("*")
170
				sPos = sPos+1
171
			elseif xPos > 7 and xPos < 9 and yPos == 7 then
172
				table.insert(inp,5)
173
				m.setCursorPos(sPos,4)
174
				m.write("*")
175
				sPos = sPos+1
176
			elseif xPos > 11 and xPos < 13 and yPos == 7 then
177
				table.insert(inp,6)
178
				m.setCursorPos(sPos,4)
179
				m.write("*")
180
				sPos = sPos+1
181
			elseif xPos > 3 and xPos < 5 and yPos == 8 then
182
				table.insert(inp,7)
183
				m.setCursorPos(sPos,4)
184
				m.write("*")
185
				sPos = sPos+1
186
			elseif xPos > 7 and xPos < 9 and yPos == 8 then
187
				table.insert(inp,8)
188
				m.setCursorPos(sPos,4)
189
				m.write("*")
190
				sPos = sPos+1
191
			elseif xPos > 11 and xPos < 13 and yPos == 8 then
192
				table.insert(inp,9)
193
				m.setCursorPos(sPos,4)
194
				m.write("*")
195
				sPos = sPos+1
196
			elseif xPos > 3 and xPos < 5 and yPos == 9 then
197
				inp = {}
198
				m.setCursorPos(3,4)
199
				m.write("           ")
200
				sPos = 4
201
			elseif xPos > 7 and xPos < 9 and yPos == 9 then
202
				table.insert(inp,0)
203
				m.setCursorPos(sPos,4)
204
				m.write("*")
205
				sPos = sPos+1
206
			elseif xPos > 11 and xPos < 13 and yPos == 9 then
207
				checkInp()
208
			end
209
		end
210
	end
211
end
212
213
input()