Editing Variables and Properties

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
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. 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.)
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 179: Line 180:


==Getting Properties From Any Other Script==
==Getting Properties From Any Other Script==
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.
You can use the above example regarding the Magic Effect script as a basis for your script. You must define a property in your script, with the "Type" of your object you are wishing to access. If your object has a custom script, define the type as your object's script name. Be careful not to declare it as the object's name. All objects can have multiple scripts, so you must specify the ''script name'' you want to access.
 
'''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 249: Line 202:
==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}}
{{Languages}}

Please note that all contributions to the CreationKit Wiki are considered to be released under the Creative Commons Attribution-ShareAlike (see CreationKit:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Cancel Editing help (opens in new window)