Difference between revisions of "Variables and Properties"
→Notes
imported>Cipscis (→Warnings: Attempted to clarify warnings based on feedback from SmkViper) |
imported>Marth (→Notes) |
||
(9 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
==Description== | ==Description== | ||
Variables and Properties are similar things, they both "hold" values and objects. A variable is "private" meaning that only that script is aware of them, can set their contents, and get their contents. A Property is essentially a variable that other scripts can access, their contents can be set and get by a other scripts. | Variables and Properties are similar things, they both "hold" values and objects. A variable is "private" meaning that only that script is aware of them, can set their contents, and get their contents. A Property is essentially a variable that other scripts can access, their contents can be set and get by a other scripts. If a variable or property holds a numeric value, like an integer, get/set returns its value. If a variable or property holds an object, you can access that object's properties and functions. (This is analogous to a reference variable from the old scripting system.) | ||
==Declaring Variables== | ==Declaring Variables== | ||
Line 176: | Line 175: | ||
EndEvent | EndEvent | ||
</source> | </source> | ||
After this point, you will need to go to the properties window for whatever your script is attached to (in this case, the script properties windows of the script for mySpellEffectScript) and then set the property for myQuestRef to the Quest associated with the quest script. | |||
==Getting Properties From Any Other Script== | ==Getting Properties From Any Other Script== | ||
You can | You can access the properties of any script attached to any object not just those attached to quests. But you will be accessing a specific script attached to a specific object. | ||
'''Example:''' | |||
<source lang="papyrus"> | |||
ScriptName ScriptA extends ObjectReference | |||
int Property count Auto | |||
float Property weight Auto | |||
</source> | |||
If both scripts are attached to the same game object (Quest, Perk, ObjectReference, etc.) accessing the variables from the other script is simply a matter of casting self to the correct type. | |||
'''Example:''' | |||
<source lang="papyrus"> | |||
ScriptName ScriptB extends ObjectReference | |||
Event OnInit() | |||
ScriptA me = self as ScriptA | |||
me.count = 1 | |||
me.weight = 12.9 | |||
(self as ScriptA).count += 7 ; this in-line method works too | |||
EndEvent | |||
</source> | |||
If the other script is attached to some other object then you'll need a way to access that object. The most common way is a property but you might also get access through some Event argument instead. | |||
'''Example:''' | |||
<source lang="papyrus"> | |||
ScriptName ScriptB extends ObjectReference | |||
ScriptA Property remoteObject Auto | |||
Event OnInit() | |||
remoteObject.count = 1 | |||
remoteObject.weight = 12.9 | |||
EndEvent | |||
Event OnActivate(ObjectReference akActionRef) | |||
if (akActionRef as ScriptA) | |||
(akActionRef as ScriptA).count += 7 | |||
endif | |||
EndEvent | |||
</source> | |||
For a list of objects you can use as a type that are already within the game, visit the [[Script Objects]] page. | For a list of objects you can use as a type that are already within the game, visit the [[Script Objects]] page. | ||
'''See Also: [[Function_Reference#Accessing_Functions_From_Other_Scripts|Accessing Functions From Other Scripts]]''' | |||
==Warnings== | ==Warnings== | ||
Line 200: | Line 249: | ||
==Notes== | ==Notes== | ||
*The list of properties in properties dialog is only updated after adding a new property or after compiling the script with the build-in editor. | *The list of properties in properties dialog is only updated after adding a new property or after compiling the script with the build-in editor. | ||
*You should avoid adding or removing Properties to a base item's script if one or more of its child ObjectReference's is already baked into a current save game. | |||
==See Also== | ==See Also== | ||
*[[Variable Reference]] | |||
*[[Property Reference]] | *[[Property Reference]] | ||
*[[Default Value Reference]] | |||
*[[Cast Reference]] | |||
[[Category: Papyrus]] | [[Category: Papyrus]] | ||
[[Category: Papyrus Tutorials]] | [[Category: Papyrus Tutorials]] | ||
{{Languages}} |