More actions
Heading capitalization Tag: 2017 source edit |
m nil checks |
||
Line 16: | Line 16: | ||
</syntaxhighlight>Run this script by selecting the avatar it's under. Once it's run, check the existence of the <code>variablePersistence.json</code> file at <code>figura/config</code>. If it's there, that code can be deleted. Next, make some code to read the data in that file when the script is loaded. <syntaxhighlight lang="lua"> | </syntaxhighlight>Run this script by selecting the avatar it's under. Once it's run, check the existence of the <code>variablePersistence.json</code> file at <code>figura/config</code>. If it's there, that code can be deleted. Next, make some code to read the data in that file when the script is loaded. <syntaxhighlight lang="lua"> | ||
config:setName("variablePersistence") | config:setName("variablePersistence") | ||
local hatVisible = config:load("hatVisible") | -- The "or (value)" syntax sets the default value if the config:load is nil | ||
local legLength = config:load("legLength") | local hatVisible = config:load("hatVisible") or true | ||
local pantsColor = config:load("pantsColor") | local legLength = config:load("legLength") or 1 | ||
local pantsColor = config:load("pantsColor") or vec(0.9, 0.1, 0.9) | |||
function pings.updateFromConfig(hat, leg, pants) | function pings.updateFromConfig(hat, leg, pants) |
Revision as of 21:16, 28 September 2024
For more information, see Pings.
The ConfigAPI
allows storing and loading data between reloads of your avatar.
ConfigAPI is available as the global config
variable.
Tutorial
To begin with, create a config file. This can be done with either a script or a /figura run command; it's safest to use a script in an IDE to have syntax highlighting and avoid errors.
config:setName("variablePersistence")
-- All keys must be strings!
config:save("pantsColor", vec(0.5, 0.8, 0.1))
config:save("hatVisible", true)
config:save("legLength", 5)
Run this script by selecting the avatar it's under. Once it's run, check the existence of the variablePersistence.json
file at figura/config
. If it's there, that code can be deleted. Next, make some code to read the data in that file when the script is loaded.
config:setName("variablePersistence")
-- The "or (value)" syntax sets the default value if the config:load is nil
local hatVisible = config:load("hatVisible") or true
local legLength = config:load("legLength") or 1
local pantsColor = config:load("pantsColor") or vec(0.9, 0.1, 0.9)
function pings.updateFromConfig(hat, leg, pants)
models.model.root.Head.Hat:setVisible(hat)
models.model.root.LeftLeg:setScale(1, leg, 1)
models.model.root.RightLeg:setScale(1, leg, 1)
models.model.root.LeftLeg["Left Pants"]:setColor(pants)
models.model.root.RightLeg["Right Pants"]:setColor(pants)
end
pings.updateFromConfig(hatVisible, legLength, pantsColor)
Finally, make some code that updates the config when you change values.
-- Check if host:isHost() to ensure that the config:save only runs for the host
function pings.toggleHat(state)
models.model.root.Head.Hat:setVisible(state)
if host:isHost() then
config:save("hatVisible", state)
end
end
function pings.scaleLegs(scale)
models.model.root.LeftLeg:setScale(1, scale, 1)
models.model.root.RightLeg:setScale(1, scale, 1)
if host:isHost() then
config:save("legLength", scale)
end
end
function pings.colorPants(rgb)
models.model.root.LeftLeg["Left Pants"]:setColor(rgb)
models.model.root.RightLeg["Right Pants"]:setColor(rgb)
if host:isHost() then
config:save("pantsColor", rgb)
end
end
Data types
Only some data types are supported by ConfigAPI. All other data types will be converted to nil. The supported data types are:
ConfigAPI methods
Configuration switching
setName
Also available as ConfigAPI:name
.
Sets the name of the configuration file to read and write data to. By default, the name of the configuration file is the same as the name of the currently loaded avatar.
Arguments | Return Type |
---|---|
setName(name string)
|
self ConfigAPI |
config:setName("my_config_file_name")
getName
Returns the name of the active configuration file.
Arguments | Return Type |
---|---|
getName()
|
string |
-- Print the active configuration file's name.
print(config:getName())
Reading and writing data
load
Read a saved value from the active configuration file (see setName) by key and return it. If no key is given, return all of the saved keys and values in a table.
Arguments | Return Type |
---|---|
load(key string)
|
any | nil |
load()
|
table |
-- Print all saved values.
printTable(config:load())
-- Print one specific value.
print(config:load("my_value"))
save
Associate a key with a value in the active configuration file (see setName.) Only some types of values are allowed; see Data Types for details.
If nil is provided as the value, then the key is removed from the file.
Arguments | Return Type |
---|---|
save(key string, value any | nil)
|
self ConfigAPI |
-- Save a value to be used later.
config:save("my_value", "Figura Wiki")
Documentation | |||||
---|---|---|---|---|---|
Globals | |||||
APIs (Types) | |||||
Visuals (Types) | |||||
Other Types | |||||
Enums |