Difference between revisions of "GetSelf"

From the Fallout3 GECK Wiki
Jump to navigation Jump to search
imported>Cipscis
(Changed syntax to show implicit reference syntax, as GetSelf should only ever be called implicitly; Added note about inventory items and GECK warning message, not too sure about how clear it is though)
imported>Tgspy
 
(2 intermediate revisions by 2 users not shown)
Line 11: Line 11:
==Notes==
==Notes==
<ul>
<ul>
<li>Because reference functions can be called on the scripted reference implicitly by omitting explicit reference syntax, the following code structure should never be used:
<li>While functions that take an implied reference can be cast without needing a variable or call to getself, like so:
<pre>ref rSelf
<pre>CIOS someSpell</pre>
Doing so may not be clear, and makes the code less portable if moved to a different script that does not support the implied reference.  For this reason, modders should prefer the more expressive syntax:
<pre>
ref rSelf
set rSelf to GetSelf
set rSelf to GetSelf
rSelf.ReferenceFunction</pre>
rSelf.CIOS someSpell</pre>
Instead, just use code like this:
Not only for CIOS, but for all "reference methods" that require a reference, like CIOS.
<pre>ReferenceFunction</pre>
</li>
</li>
<li>If [[GetSelf]] is called in a script that is attached to an inventory item, the GECK will show a warning message when the data file is loaded.  This warning can only be ignored if you can guarantee that the return value of [[GetSelf]] will not be used if it is called while the scripted item is in an inventory.  This is due to the fact that inventory items do not have regular RefIDs.  Rather, they are assigned RefIDs for the duration of a script execution so that reference functions may be called on them from their script, but these RefIDs are not permanent so attempting to use one of them will likely result in a script halt or other unintended behavior.
<li>[[GetSelf]] will return 0 if called on a reference that has been created dynamically (for example, created via [[PlaceAtMe]], or dropped from an inventory into the game world).
</li>
</li>
</ul>
</ul>
*Using GetSelf in scripts rather than  this will result in GECKPU throwing errors.


[[Category:Functions]]
[[Category:Functions]]

Latest revision as of 07:47, 13 January 2017

< [[::Category:Functions|Category:Functions]]

Link to TES4 Construction Set Wiki: GetSelf.

A function included in the GECK version 1.1.0.36.

Description

Returns the RefID of the calling reference. GetSelf is only useful when this information is accessed externally, or when the scripted reference's RefID needs to be passed as a parameter to a function like PushActorAway

Syntax

[help]
GetSelf 

Or:

this

Example

ref rSelf
set rSelf to GetSelf
player.PushActorAway rSelf 5

Notes

  • While functions that take an implied reference can be cast without needing a variable or call to getself, like so:
    CIOS someSpell

    Doing so may not be clear, and makes the code less portable if moved to a different script that does not support the implied reference. For this reason, modders should prefer the more expressive syntax:

    ref rSelf
    set rSelf to GetSelf
    rSelf.CIOS someSpell

    Not only for CIOS, but for all "reference methods" that require a reference, like CIOS.

  • GetSelf will return 0 if called on a reference that has been created dynamically (for example, created via PlaceAtMe, or dropped from an inventory into the game world).
  • Using GetSelf in scripts rather than this will result in GECKPU throwing errors.