Settings system: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
m (Added settings example, removed useless section)
Line 21: Line 21:
The ''settingName'' can be anything you want.
The ''settingName'' can be anything you want.


==Manager==
==Examples==
You can manage your settings with the default [[Resource:admin|admin]] manager resource. In addition you can add some attributes in a setting, which will be useful in the settings manager:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml"><settings>
<meta>
    <setting name="*settingname" value="defValue" friendlyname="" group="" accept="" examples="" desc="" />
    <settings>
</settings></syntaxhighlight>
        <setting name="@PrivateEntry" value="MyPrivateValue" myCustomKey="myCustomValue"/>
*'''Explanation:''' <small>TODO</small>
        <setting name="#ProtectedEntry" value="MyProtectedValue" myCustomKey="myCustomValue"/>
:*'''friendlyname:''' A friendly name to the setting.
        <setting name="*PublicEntry" value="MyPublicValue" myCustomKey="myCustomValue"/>
<!-- :*'''group:''' Explain this! -->
    </settings>
:*'''accept:''' The values the setting could accept.
</meta>
:*'''examples:''' An Example of a value.
</syntaxhighlight>
:*'''desc:''' A description of the setting.
<syntaxhighlight lang="lua">
-- Get current resource name;
-- resource is a predefined global variable holding handle to current resource
local resName = getResourceName(resource)
 
-- You don't need to provide resource name before the entry name
-- HOWEVER resource name is NECESSARY in order to get other values than "value" entry
local privateEntry = get(resName..'.PrivateEntry')
local protectedEntry = get(resName..'ProtectedEntry')
local publicEntry = get(resName..'PublicEntry)
 
iprint(privateEntry)    -- MyPrivateValue
iprint(protectedEntry)  -- MyProtectedValue
iprint(publicEntry)    -- MyPublicValue
 
iprint(get(resName..'.PublicEntry.myCustomKey'))    -- myCustomValue
</syntaxhighlight>


==Scripting functions==
==Scripting functions==

Revision as of 19:04, 1 March 2023

The settings system allows you to store and retrieve settings for future use, or provide server administrators with an easy way to configure your resource without modifying any files.

Settings can be modified in two ways - either by scripts or by the server administrator using the console.

Setting names

Settings have a fairly simple naming system that allows you to specify the scope and access they provide.

Names are in the format:

[access][resourceName].settingName

Access modifiers:

  • *: public and can be read and written by any resource.
  • #: protected and can be read by any resource but only written by the resource they belong to.
  • @: private and can only be read and written to by the resource they belong to.
  • None specified: private if it is a local setting, public if it's a global setting.

The resourceName is optional. If it isn't specified, then the setting is global.

The settingName can be anything you want.

Examples

<meta>
    <settings>
        <setting name="@PrivateEntry" value="MyPrivateValue" myCustomKey="myCustomValue"/>
        <setting name="#ProtectedEntry" value="MyProtectedValue" myCustomKey="myCustomValue"/>
        <setting name="*PublicEntry" value="MyPublicValue" myCustomKey="myCustomValue"/>
    </settings>
</meta>
-- Get current resource name;
-- resource is a predefined global variable holding handle to current resource
local resName = getResourceName(resource)

-- You don't need to provide resource name before the entry name
-- HOWEVER resource name is NECESSARY in order to get other values than "value" entry
local privateEntry = get(resName..'.PrivateEntry')
local protectedEntry = get(resName..'ProtectedEntry')
local publicEntry = get(resName..'PublicEntry)

iprint(privateEntry)    -- MyPrivateValue
iprint(protectedEntry)  -- MyProtectedValue
iprint(publicEntry)     -- MyPublicValue

iprint(get(resName..'.PublicEntry.myCustomKey'))    -- myCustomValue

Scripting functions

There are two scripting functions in the setting system: set and get.

Console functions

There are two console functions in the settings system: