Doing things at given intervals in a timer

Started by MrAbu, Sat 02/12/2017 22:42:49

Previous topic - Next topic

MrAbu

So with some help I made a timer a little bit ago and it worked great, so now  im experimenting with it. I set the timer to 10 seconds and had it countdown. This works fine. My issue now comes from two parts. First, I wanted to add in something to happen when the timer was halfway done (timerValue == 5). This does what it's meant to, but then instead of continuing the countdown it's skipping straight to when the timerValue is 0 and repeating that. Secondly, I tried taking out the halfway event. The timer counts down to 0 but it won't reset like how I want it to. I put the whole thing in the Repeatedly Execute function for a room. Basically I'm asking how to reset the timer, and how to make something happen in the middle of the timer.

Code: ags

if (timerActive)
 {
   if (timerValue == 0)                   // when time expires
    {
      // timer expired
      timerActive = false;                // pause timer now by calling timerActive = false
      Display("Check");                   // so i know when the timer expires
      FadeOut(30);
      StartCutscene(eSkipESCOnly); 
      CharacterReset();                  // reset the day
      timerValue = 10;
      timerActive = true;
      EndCutscene();
      FadeIn(30);
      
      
      if (iChar[17] == 1)
      {
        dGabiVaca.Start();
      }
    }
   else if (timerValue == 5)              // do something when timer hits a certain time, then keep counting
    {
      cAlyssa.ChangeRoom(1,  733, 216);   // change room at certian time    
      timerValue--;                       // continue counting down
        
    }
    else timerValue--;                    // countdown... might make it a count up
 }
 

Mandle

Is cAlyssa the player character?

If so then I believe this script will stop at the moment the player character moves to another room.

MrAbu

No. cAlyssa is an NPC, should have made that clear, sorry

dayowlron

I just have one comment to make. You are setting TimerValue to 10 but then if this code is in RepExec function then it is happening something like 30 times a second. When you reset the timer and check for the halfway point multiply the values times the game speed.
Pro is the opposite of Con                       Kids of today are so much different
This fact can clearly be seen,                  Don't you know?
If progress means to move forward         Just ask them where they are from
Then what does congress mean?             And they tell you where you can go.  --Nipsey Russell

MrAbu

That fixed it! I didn't notice that the 5 second interval wasn't actually 5 seconds, thanks dayowIron!

SMF spam blocked by CleanTalk