Character Variables - GregHib/void GitHub Wiki
Both Players and NPCs have a Variables container for storing variables and information.
By default variables are only stored temporarily and will be lost/reset when the npc dies, player logs out, or the game restarts.
Variable names should use lower camel case. e.g. "in_combat"
not "inCombat"
Getters
Characters have extension functions to simplify accessing Variables
The following safe version will return false
if the value is unset.
val burrow = giantMole["burrow", false]
[!TIP] Providing a default is the recommended way of accessing values.
val burrow: Boolean = giantMole["burrow"]
[!WARNING] This is the unsafe version and will throw an exception is the value hasn't previously been set and doesn't have a default listed in the variables config file.
Setters
Setting a value is straight-forward, it's important to use descriptive names to make sure values don't conflict with other content.
giantMole["burrow"] = true
Player variables
Variables which a player has often need to be sent to the client to change something or display the value. Client variables are split into one of 4 categories:
- varp - Player Variable
- varbit - Variable Bit (part of a varp)
- varc - Client Variable
- varcstr - Client String Variable
Any variables which need storing but don't have a known id should be stored in *.vars.toml
For more details read Runelites page on the subject
These variables will need specifying in the relevant .vars.toml
config file in ./data/. Along with their id and type.
[cooks_assistant] # The string name of the variable
id = 29 # The variable id to send to the cleint
persist = true # Save the value on logout
format = "map" # The format the value is stored in (might differ from the format sent to the client)
default = "unstarted" # The default value if left unset
values = { unstarted = 0, started = 1, completed = 2 } # Map for converting values before sending to client