Difference between revisions of "GetNextRef"

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search
imported>Shademe
(→‎Article Update: Note on the apple bug)
imported>Scruggs
(Remove apple bug note as 1) it's not specific to GetNextRef and 2) it's fixed; Make example code use While loop)
Line 4: Line 4:
  (reference:ref) GetNextRef
  (reference:ref) GetNextRef


Returns the next reference in the curent cell. [[GetFirstRef]] must be called first; this function uses the cell depth and type passed to [[GetFirstRef]] and returns the next reference matching that type, or zero after the last reference has been returned. This function should only be used within a Label/Goto loop
Returns the next reference in the curent cell. [[GetFirstRef]] must be called first; this function uses the cell depth and type passed to [[GetFirstRef]] and returns the next reference matching that type, or zero after the last reference has been returned. This function should only be used within a loop.


'''Example'''
'''Example'''
<pre>ref pDoor
<pre>ref pDoor
...
...
set pDoor to Apple
set pDoor to GetFirstRef 24 1
set pDoor to (GetFirstRef 24 1)
while (pDoor)
Label 1
   ; do something with pDoor
if pDoor
   set pDoor to Apple
   set pDoor to GetNextRef
   set pDoor to GetNextRef
  Goto 1
loop</pre>
endif</pre>
Scans the list of doors in the player's current cell and the surrounding 8 cells.
Scans the list of doors in the player's current cell and the surrounding 8 cells.


==Notes==
==Notes==
*The first reference can change (deleted or moved) by the next frame so [[GetFirstRef]] should always be used first with a Label/Goto loop.
*References can be added to or removed from a cell between frames; for this reason GetFirst/NextRef should be used within a loop that executes within a single frame.
** The order of references as returned by GetFirst/NextRef is essentially undefined. It is not guaranteed that it will remain the same from one frame to the next. As stated above, a loop should be used each time. ''Usually'', however, the first ref is the most recently placed one. It is altogether unwise to rely on this, however.
* The order of references as returned by GetFirst/NextRef is essentially undefined. It is not guaranteed that it will remain the same from one frame to the next. As stated above, a loop should be used each time. ''Usually'', however, the first ref is the most recently placed one. It is altogether unwise to rely on this, however.
* pDoor is set to an Apple before using GetNextRef because Oblivion doesn't expect the reference of a door, and won't change the variable. So far doors, containers, and magic effects have been found to cause this odd reference variable behaviour, but to be safe always set your reference variable to Apple before using GetNextRef.
** This bug has been eliminated as of v17.


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

Revision as of 10:41, 16 June 2009

A command for Oblivion Script Extender

Syntax:

(reference:ref) GetNextRef

Returns the next reference in the curent cell. GetFirstRef must be called first; this function uses the cell depth and type passed to GetFirstRef and returns the next reference matching that type, or zero after the last reference has been returned. This function should only be used within a loop.

Example

ref pDoor
...
set pDoor to GetFirstRef 24 1
while (pDoor)
  ; do something with pDoor
  set pDoor to GetNextRef
loop

Scans the list of doors in the player's current cell and the surrounding 8 cells.

Notes

  • References can be added to or removed from a cell between frames; for this reason GetFirst/NextRef should be used within a loop that executes within a single frame.
  • The order of references as returned by GetFirst/NextRef is essentially undefined. It is not guaranteed that it will remain the same from one frame to the next. As stated above, a loop should be used each time. Usually, however, the first ref is the most recently placed one. It is altogether unwise to rely on this, however.

See Also