Can someone help me with os.setAlarm() ?
I dont know how to run a command (eg print("TEST")) to run at the specified time.
6 replies to this topic
#1
Posted 31 October 2012 - 12:30 PM
#2
Posted 31 October 2012 - 01:27 PM
If you want to just print something after a delay:
If you want to do something on a specific time:
If you want to have a delay and don't want to pause the entire program:
Now if you already got a event system then you can take use of that:
sleep(seconds) -- Everyone knows this one, but just to be clear
If you want to do something on a specific time:
-- Between 18.00 to 20.00 while true do if os.clock() > 18 and os.clock() < 20 then do something end sleep(.5) end
If you want to have a delay and don't want to pause the entire program:
local curTime = os.time() local delay = 5 -- minutes I think while true do -- Your fancy program stuff if curTime == os.time() + delay then do something end -- More fancy stuff end
Now if you already got a event system then you can take use of that:
-- Press enter to start clock
-- Press space to exit
local ev,p1,p2,p3
while true do
ev,p1,p2,p3 = os.pullEvent()
if ev == "key" then
if p1 == 28 then
os.startTimer(5) -- 5 seconds I think
print("Timer set!")
elseif p1 == 57 then
print("Canceling!")
break
end
elseif ev == "timer" then
print("Timer has reached it's timeout!")
end
ev,p1,p2,p3 = nil
end
#3
Posted 31 October 2012 - 01:50 PM
The setAlarm() returns an ID value, I believe you use it with pullEvent(<alarmID>).
Removed bad code example! as below posts confirms this line...
/>
Removed bad code example! as below posts confirms this line...
Edited by Harcole, 31 October 2012 - 02:22 PM.
#4
Posted 31 October 2012 - 01:58 PM
If you want to use the alarm (wich in this case is better than the above options), you can do it like this:
local alarm = os.startAlarm(5)
while true do
local evt, arg = os.pullEvent("alarm")
if arg == alarm then
print("It's 5:00, wake up!")
end
end
#5
Posted 31 October 2012 - 02:00 PM
And if you just want clear help with os.setAlarm() then the wiki is a great place.
Otherwise, this is how it basically works:
The difference between os.setAlarm() and os.startTimer() is just that os.setAlarm() fires on a specific time but os.startTimer() uses the relative time.
EDIT: Oh snap! I think I've been ninja'd
Otherwise, this is how it basically works:
--(( Basic format ))--
os.setAlarm(time)
--(( Will timeout when it's 18 o'clock in the world ))--
os.setAlarm(18.00)
--(( Will timeout 2 (in-game) hours later ))--
os.setAlarm(os.clock()+2)
--(( Basic event layout ))--
local ev,p1 = os.pullEvent("alarm")
--(( Event output ))--
Name: alarm
Parameter 1: A table that acts like it's unique ID
The difference between os.setAlarm() and os.startTimer() is just that os.setAlarm() fires on a specific time but os.startTimer() uses the relative time.
EDIT: Oh snap! I think I've been ninja'd
#6
Posted 31 October 2012 - 02:03 PM
MysticT, on 31 October 2012 - 01:58 PM, said:
If you want to use the alarm (wich in this case is better than the above options), you can do it like this:
local alarm = os.startAlarm(5)
while true do
local evt, arg = os.pullEvent("alarm")
if arg == alarm then
print("It's 5:00, wake up!")
end
end
It's os.setAlarm() not os.startAlarm(). Just a small typo
#7
Posted 31 October 2012 - 04:27 PM
jag_e_nummer_ett, on 31 October 2012 - 02:03 PM, said:
Just a quick note:
It's os.setAlarm() not os.startAlarm(). Just a small typo
It's os.setAlarm() not os.startAlarm(). Just a small typo
jag_e_nummer_ett, on 31 October 2012 - 02:00 PM, said:
--(( Will timeout 2 (in-game) hours later ))-- os.setAlarm(os.clock()+2)
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users











