How do I script a wait that the player can skip by pressing a key?

From OHRRPGCE-Wiki
Jump to: navigation, search

Sometimes you may want a script to wait for a certain amount of time, maybe for a dramatic pause, or to allow a musical flourish to finish, but you also want to allow the impatient player to skip that pause by pressing a key. Here is an example script that implements an interruptible wait.

If you want to skip a whole series of actions, such as a cutscene, an extended article is at Scripts:Skippable cutscene

script, skippable wait, ticks, begin
  # Returns true if the wait was cancelled by a keypress.
  variable(i)
  for(i, 1, ticks) do, begin
    wait(1)
    if(key is pressed(key:ENTER)) then(exit returning(true))
    if(key is pressed(key:SPACE)) then(exit returning(true))
    if(key is pressed(key:CTRL)) then(exit returning(true))
    if(key is pressed(key:ALT)) then(exit returning(true))
    if(key is pressed(key:ESC)) then(exit returning(true))
    if(key is pressed(joy:button 1)) then(exit returning(true))
    if(key is pressed(joy:button 2)) then(exit returning(true))
  end
  exit returning(false)
end

And below is a simple wrapper script that allows you to specify the delay in (approximate) seconds rather than in ticks.

script, skippable wait seconds, seconds, begin
  # Returns true if the wait was cancelled by a keypress.
  exit returning(key wait(18 * seconds))
end