Tough spell question: Why isn't this timer working?

MintJulep

New Member
Reaction score
4
The two triggers:
Code:
test
    Events
        Player - Player 1 (Red) types a chat message containing 1 as An exact match
    Conditions
    Actions
        Set testint = 0
        Trigger - Turn on timer <gen>
        Wait 0.60 seconds
        Trigger - Turn off timer <gen>
        Quest - Display to (All players) the Quest Update message: (String(testint))

Code:
timer
    Events
        Time - Every 0.03 seconds of game time
    Conditions
    Actions
        Set testint = (testint + 1)


According to the code, the message displayed for "testint" should always be 20, because that's .6 seconds divided by the .03/s the timer runs on.

However, not only is testint not 20 when I activate this trigger, it produces different numbers each time - anything from 23 to 27, and all the numbers in between. Changing "Wait 0.60 seconds" to "Wait 0.60 seconds of game-time" produces numbers from 24 to 31.

All I want is a timer that will always run X times over a period of 0.60 seconds exactly (no faster or slower). So far it isn't consistently running X times for some very puzzling reason. But even if I put, "If testint = 20, Turn off (this trigger)" into the timer, it seems the timer then won't run over a period of exactly 0.60 seconds.

Why isn't the timer I made working?
 

ZiggyMcjoney

Data editor?! AAAHHHHH!
Reaction score
95
I believe the reason lies not in your timer, but in the wait. As far as I've heard waits are fairly inaccurate. Then again, I thought a wait of 0.6 seconds would be long enough to be accurate.

Why don't you try starting a timer instead of waiting, and then displaying testint when the timer has expired rather than using a wait?
 

Exide

I am amazingly focused right now!
Reaction score
448
I agree with ZiggyMcjoney.
Timers are more accurate than waits.

I tested these three triggers:

Code:
Blah 1
    Events
        Player - Player 1 (Red) types a chat message containing t as An exact match
    Conditions
    Actions
        Set testint = 0
        Trigger - Turn on Blah 2 <gen>
        Countdown Timer - Start Timer as a One-shot timer that will expire in 0.60 seconds

Code:
Blah 2
    Events
        Time - Every 0.03 seconds of game time
    Conditions
    Actions
        Set testint = (testint + 1)

Code:
Blah 3
    Events
        Time - Timer expires
    Conditions
    Actions
        Trigger - Turn off Blah 2 <gen>
        Quest - Display to (All players) the Quest Update message: (=  + (String(testint)))

And got '20' in 9 cases of 10, where the last case turned out to be '21'.
 

MintJulep

New Member
Reaction score
4
Hm, that's probably it then - thanks guys. I'm guessing the 20-21 difference in the timer Exide tested is because of the occassional instance when the periodic event activates at both 0.00 seconds and 0.60 seconds for an extra loop.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top