This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
Shaso777's profile picture

[Question] A little help with rednet

Started by Shaso777, 20 June 2012 - 12:25 AM
Shaso777 #1
Posted 20 June 2012 - 02:25 AM
Hey i know there have been plenty of topics with rednet, none seem to answer my question though. I was wondering if it is possible to run a program (say a keycard security) on one computer and enabled it to receive signals from another computer. What im trying to do is computer A is running the keycard program, to open doors if the right keycard is presented, if it receives a command signal from computer B then it powers down or prevents(in some way) the keycard from working until another command is sent to enable it again. Is this possible in any way? if so could someone help me with it, im just a little confused on how to do it.
tfoote #2
Posted 20 June 2012 - 02:55 AM
ya.

while true do
local event param1, param2, param3 = os.pullEvent()
if event == "rednet_message" then
if param2 == "Shutdown" then
os.shutdown()
end
elseif event == "disk" then
x = disk.getLabel
if x == "name" then
-- do whatever
else
print("wrong key card")
sleep(2)
os.shutdown()
end
end
end
Shaso777 #3
Posted 20 June 2012 - 06:16 AM

while true do
local event param1, param2, param3 = os.pullEvent()
if event == "rednet_message" then
if param2 == "Shutdown" then
os.shutdown()
end
elseif event == "disk" then
x = disk.getLabel
if x == "name" then
redstone.setOutput("right", true)
disk.eject("left")
sleep(5)
restone.setOutput("right", false)
end
os.reboot()
end
else
disk.eject("left")
sleep(2)
os.reboot()
end
end
end

So would this code work? If i wanted to make this computer listen to commands only from one computer would i put a line in such as

if param1 == "11" then

correct?
kazagistar #4
Posted 20 June 2012 - 02:45 PM
Yes, that is right, and I recommend doing it every time.
tfoote #5
Posted 20 June 2012 - 03:55 PM
Now you do not have to use

local event param1, param2, param3 = os.pullEvent()

you can change "param1, param2, param3". These are the names of varriables that os.pullEvent() stores. You can make them param1, diskname, param3 =… I usually use a,b,c because it is easier but you can do whatever you want. Many people do not know that.
BigSHinyToys #6
Posted 20 June 2012 - 05:04 PM
there are bugs with your code tfoote here is a corrected ver.
Spoiler

rednet.open("back")
while true do
    local event, param1, param2, param3 = os.pullEvent() -- missed a ","
    if event == "rednet_message" then
	    if param2 == "shutdown" then
		    os.shutdown()
	    end
    elseif event == "disk" then
	    x = disk.getLabel(param1)
	    if x == "name" then
		    -- do whatever
		    print("user entered disk named name")
	    else
		    print("wrong key card")
		    sleep(2)
		    os.shutdown()
	    end
    end
end
tfoote #7
Posted 20 June 2012 - 05:07 PM
there are bugs with your code tfoote here is a corrected ver.
Spoiler

rednet.open("back")
while true do
	local event, param1, param2, param3 = os.pullEvent() -- missed a ","
	if event == "rednet_message" then
		if param2 == "shutdown" then
			os.shutdown()
		end
	elseif event == "disk" then
		x = disk.getLabel(param1)
		if x == "name" then
			-- do whatever
			print("user entered disk named name")
		else
			print("wrong key card")
			sleep(2)
			os.shutdown()
		end
	end
end

Hey thanks!
I didn't know if I needed a "," there… I havent been on minecraft in a while