Difference between revisions of "OnTrigger"

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search
imported>Aellis
imported>QQuix
(Clarified the text related to TriggerZones)
 
(4 intermediate revisions by 3 users not shown)
Line 7: Line 7:
This block will be run when something triggers the scripted object by colliding with it. If you specify a TriggeringRefID, the block will only run when that specific reference triggers the object; otherwise, the block will run when anything triggers the scripted object.
This block will be run when something triggers the scripted object by colliding with it. If you specify a TriggeringRefID, the block will only run when that specific reference triggers the object; otherwise, the block will run when anything triggers the scripted object.


However, with a Triggerzone, if you are triggering a recurring effect or shader and  you do not specify a variable to keep track of if the zone is triggered, the block will continue running (looping) until the triggering ref leaves the zone.  Once the ref leaves the zone, the zone will not reset until a reswpawn occurs unless you include a reset block.  The reset block can either be timed or reset when the cell respawns.
However, with a TriggerZone, the block will continue running every frame until all triggering refs leave the zone.  


'''TriggerZone Examples:'''
If you want the code to run only once when triggered, you should specify a variable to register when the zone is triggered and a reset block to turn it off and allow the code to run again later on.  The reset block can either be timed or reset when the cell respawns.
 
 
'''Examples:'''


'''Timed Reset'''
'''Timed Reset'''
Line 24: Line 27:
   
   
  begin gameMode
  begin gameMode
   if triggered == 1 && timer <= 0
   if triggered == 1
  set triggered to 0
    if  timer <= 0
  endif
      set triggered to 0
  if timer >= 0
    else
  set timer to timer - getSecondsPassed
      set timer to timer - getSecondsPassed
    endif
   endif
   endif
  end
  end


'''Cell Respawn'''
'''Reset on Cell Respawn'''
  short triggered
  short triggered
   
   
Line 45: Line 49:
   set triggered to 0
   set triggered to 0
  end
  end
==Notes==
*This delay is particularly needed when the TriggerZone is used to move the player. If a [[MoveTo]] is used on the player within the OnTrigger block, the code runs one extra time next frame and, without the delay, will move the player again, and again, ... , causing the game to (pratically) freeze.


==See Also==
==See Also==

Latest revision as of 18:35, 30 July 2009

Syntax:

 begin OnTrigger TriggeringRefID

Example:

 begin OnTrigger
 begin OnTrigger player 

This block will be run when something triggers the scripted object by colliding with it. If you specify a TriggeringRefID, the block will only run when that specific reference triggers the object; otherwise, the block will run when anything triggers the scripted object.

However, with a TriggerZone, the block will continue running every frame until all triggering refs leave the zone.

If you want the code to run only once when triggered, you should specify a variable to register when the zone is triggered and a reset block to turn it off and allow the code to run again later on. The reset block can either be timed or reset when the cell respawns.


Examples:

Timed Reset

short triggered
float timer

begin onTrigger
 if triggered == 0
  'do something
  set triggered to 1
  set timer to 2 ;2 delay before reset
 endif
end

begin gameMode
 if triggered == 1
   if  timer <= 0
     set triggered to 0
   else
     set timer to timer - getSecondsPassed
   endif
 endif
end

Reset on Cell Respawn

short triggered

begin onTrigger
 if triggered == 0
  'do something
  set triggered to 1
 endif
end

begin onReset
  set triggered to 0
end

Notes[edit | edit source]

  • This delay is particularly needed when the TriggerZone is used to move the player. If a MoveTo is used on the player within the OnTrigger block, the code runs one extra time next frame and, without the delay, will move the player again, and again, ... , causing the game to (pratically) freeze.


See Also[edit | edit source]

GetActionRef
OnTriggerActor