Lua Tutorials: Difference between revisions

 
m (1 revision)
 
(No difference)

Latest revision as of 01:13, 25 December 2012

  Password Door Lock script only! with alarm lock and pass to turn off

  • print("Enter Password")
  •  pass = read("*")
  •  if pass = "Your pass here" then
  •  rs.setOutput("right", true)
  •   print("Password Accept")
  •   sleep(2)
  •    rs.setOutput("right", false)
  •   os.reboot()
  • else
  •   print("password Inccorect!")
  •   rs.setOutput("top", true) -- only if you have an alarm at the top!
  •   sleep(5) -- only if you have alarm at the top!
  • else
  •  print("Pass To Turn Alarm Off")  -- only if you have alarm at the top!
  •   alarm = read("*")  -- only if you have alarm at the top!
  •  if alarm = "Other pass here" then  -- only if you have alarm at the top!
  •  rs.setOutput("top", false)  -- only if you have alarm at the top!
  • os.reboot()  -- only if you have alarm at the top!
  • end
  • end








______________________________

Please add new tutorials in form of new pages to the

Category Lua Tutorials instead!

______________________________

Password Door

Creation

If you place a computer on the right hand side of a door (Iron, Wooden or Reinforced), then input the following text.

edit startup

This opens up the page to edit what happens on the start up of the computer.


Now type:

print("Enter Password") -- Look DbrugsGames at Youtube


In this code, you can change the text in the quotes to any text you want when the computer starts up


Now press "Ctrl" then "Enter" to save it, then "Ctrl", "Right Arrow" then "Enter" to close the screen.


Then type:

edit bananas

The word bananas can be substituted for any password but beware, it is case sensitive (e.g. "bananas" would not work with "Bananas"). Now type the following text into this menu. ​print("Password Accepted")

print("Password Accepted")
redstone.setOutput("left", true)
sleep(3)
redstone.setOutput("left", false)
​os.reboot()

The previous script executes the following task

Line of Script Script Action
1 print("Password Accepted")

This shows the text in the quotes on the screen

2 redstone.setOutput("left", true) This turns a redstone signal to the left side of the computer on
3 sleep(3) This tells the computer to wait 3 seconds before performing the next action
4 redstone.setOutput("left", false) This turns a redstone signal to the left side of the computer off
5 os.reboot()

This reboots the computer to delete the text. This is useful for stopping unsavory people accessing your computer.

After you have input this, press "Ctrl" then "Enter" to save it, then "Ctrl", "Right Arrow" then "Enter" to close the screen.

Thief Proofing

On a multiplayer server, you may want to do this if you want no one accessing your door.

To thief proof a computer you need to edit the file

edit list

Then input a print command of your choice. E.g.

print("No Hacking!!!")

After you have input this, press "Ctrl" then "Enter" to save it, then "Ctrl", "Right Arrow" then "Enter" to close the screen.


You also need to do the same for the program "Programs". E.g.


edit programs

Then input a print command of your choice. E.g.

print("No Hacking!!!")

After you have input this, press "Ctrl" then "Enter" to save it, then "Ctrl", "Right Arrow" then "Enter" to close the screen.

Additions

This is the basic password door code. This section will teach you how to add on to that for any better reason.

Aesthetics

print("Password Accepted")
sleep(1)
print("Door Open. Please Proceed!")
redstone.setOutput("left", true)
sleep(3)
redstone.setOutput("left", false)
​os.reboot()

Adding the extra

sleep(1)
print("Door Open. Please Proceed!")

Makes the operation look a lot better.

Manual Override

Adding a second password to keep the door open for as long as you like can help with boring tasks like building a second house and gathering the resources.

To add the override, you have to input the text

​edit USA

With "USA" being the example that you can change.


Then input the text

print("Override Accepted. Reboot To Reset!")
redstone.setInput("left", true)

To reset the computer, simply press "Ctrl + R"

Hacking

This program is not very safe and easy to hack.

First type this into the console:

lua

This will allow you to execute all codes, you can usually use in programs.

Now remember the code to turn on redstone and type it in:

redstone.setOutput("left", true)

And there the door is opened without knowing any password.


Preventing this hack

This hack is easy to prevent with the method we used before, just type this in:

edit lua

Now you can add the print text of your choice like already described above:

print("Smart, but you failed!")

And to prevent users typing "cd rom" which has all the edit, lua etc already there, type this:

edit cd

And you can do the same with "edit lua" and make it:

print("Nice try, hacker!")

All in all this way of making a door lock isn't very safe, because everyone could just start all of the not-denied programs, edit startup or use one of the other methods to bypass this lock.

Some people have keycards and will try to "Bump key" the door open. However, using this code we can stop them. First, edit your startup file named "startup". This is the file that is loaded when the computer starts up every time with a restart or when it is first placed. Now type this code:

if fs.exists("disk/startup") then
fs.delete("disk/startup")
print("XD Check your card at your house")

This code will check to see if someone has a card in the disk drive(If you didn't add one, remember that they can always add one) and if it does, it checks to see if there is a startup file. If there is, it deletes that file because it is probably a hacker.

But you can however, after finishing everything FIRST type in this:

edit edit

Now, this is very sneaky. You prevent them from editing any files, and you might want to tell them they failed.

print("Access Denied. You fail.")

Now if you type edit it will print the above text to the screen. Smart huh? The only problem with this password door is a hacker could just place a lever next to the door, or any source of redstone(torch, button) and it will open the door.

Simple Arithmetic Calculator

Now that you have made a doorlock, time to make the next step. A calculator!

First type into the computer:

edit calc

Now, type in this code, line by line. Exactly.

os.pullEvent = os.pullEventRaw                                                
term.clear()
term.setCursorPos(1,1)
write("Welcome! Please choose a math function (*,/,+,-) ")
x = io.read()
if x == "*" then
 write("First number?")
 fnum = io.read()
 write("Second Number?")
 snum = io.read()
 print("Calculating...")
 term.clear()
 term.setCursorPos(1,1)
 answer = fnum * snum
 print("Your answer is "..answer)
 sleep(5)
elseif x == "+" then
 write("First number?")
 fnum = io.read()
 write("Second Number?")
 snum = io.read()
 print("Calculating...")
 term.clear()
 term.setCursorPos(1,1)
 answer = fnum + snum
 print("Your answer is "..answer)
 sleep(5)
elseif x == "-" then
 write("First Number? ")
 fnum = io.read()
 write("Second number? ")
 snum = io.read()
 answer = fnum - snum
 print("Your answer is"..answer)
 sleep(5)
elseif x == "/" then
 write("First Number? ")
 fnum = io.read()
 write("Second Number? ")
 snum = io.read()
 answer = fnum / snum
 print("Your answer is"..answer)
 sleep(5)
else
 print("That isn't a valid operation!")
 sleep(2)
 os.reboot()
end



That's it! Just input that into a computer, save it, and run it, you will have a fully working Calculator!


-Imran, the Lua Engineer!

Digital Clock

I know people would like to know what time it is, without going into terminal, so I developed a program to display the time on a monitor. Since the only way to stop the program is to break the computer or the monitor attached (IDK why ctrl+t doesn't work) you should use a disk drive to save the program. Make sure the drive is next to the computer, and has a disk in it.

Once that is done type:

edit disk/clock

Now type this in as the program's code (type it in as is for now, you will edit a few things later):

local mon = peripheral.wrap("top")
function round(num, idp)
 local mult = 10^ (idp or 0)
 return math.floor(num * mult +0.5) / mult
end
function loop()
 while true do
 mon.clear()
 mon.setCursorPos(1,1)
 mon.setTextScale(3)
 z = os.time()
 if z < 12 thel
  y = z
  a = y%1
  h = y - a
  b = a * 60
  m = round(b)
  if m >= 10 then
   min = m
  elseif m < 10 then
   min = "0"..m
  end
  if h <  1 then
   hour = 12
  elseif h >= 1 then
   hour = h
  end
  x = hour..":"..min.." AM"
  elseif z > 12 then
  y = z - 12
  a = y%1
  h = y - a
  b = a * 60
  m = round(b)
  if m >= 10 then
   min = m
  elseif m < 10 then
   min = "0"..m
  end
  if h <  1 then
   hour = 12
  elseif h >= 1 then
   hour = h
  end
  x = hour..":"..min.." PM"
 end
 mon.write(x)
 sleep(1)
end
end
loop()

The things you can edit to your liking are (depends on screen size aka amount of monitors you have):

mon.setCursorPos(#,#) --changes where the time will be printed on the screen
mon.setTextScale(#) --changes size font of the time on the screen

What you need to change depending on which side your monitors are on:

local mon = peripheral.wrap("SIDE") 
--"SIDE" can be changed to "top", "bottom", "left", "right", "front", or "back"
--as far as this code goes, it only outputs to a single side

Now when you have that all done, you can go ahead and run the program:

disk/clock

NOTE: While you know shutting off the program is annoying, you also cannot use the computer while the program is running.

Now you have a continuously running clock, without any LED's or redstone wiring! If your wondering, the way I set mine up uses 3 monitors, horizontally on top of the computer, hence the:

local mon = peripheral.wrap("top") --monitors on top of computer
mon.setCursorPos(1,1) --time display starts wher left-most monitor starts
mon.setTextScale(3) --makes the time fit nicely across the 3 monitors


-Jim, Multi-Language Programmer


Simpler Clock

ymon = peripheral.wrap ("side")

ymon.setTextScale(1)

while true do

sleep(0)

term.setCursorPos(1,1)

write(textutils.formatTime(os.time(),true))

end

term.restore()

Cookies help us deliver our services. By using our services, you agree to our use of cookies.

Need wiki hosting?

Do you need a wiki for your Minecraft mod/gaming wiki? We'll host it for free! Contact us.

Other wikis

Indie-game wikis
Powered by Indie Wikis