[1.8.95] Plugin settings

The Lua scripting language allows you to give your plugin more advanced features.
Previous topicNext topic
User avatar
Lobby
Inhabitant of a Supercluster
Reactions:
Posts: 3759
Joined: 26 Oct 2008, 10:34
Plugins: Showcase Store

[1.8.95] Plugin settings

Post by Lobby »

Version 1.8.95 will allow your plugin to add own settings to the game's settings window by providing a script:settings() function in a Lua script that is used in your plugin.
:img
image.png

Code: Select all    Reset

-- We define the local variable for our settings table here so that our functions can see it local settings function script:init() -- Let's get a storage table and initialize values that are nil settings = Util.optStorage(TheoTown.getStorage(), self:getDraft():getId()..':settings') settings.someBool = settings.someBool == nil and true or settings.someBool settings.someInt = settings.someInt or 1 settings.someNamedInt = settings.someNamedInt or 3 settings.someString = settings.someString or 'Xyz' settings.someGenericText = settings.someGenericText or 'Hello World' end -- This function will be called whenever the game enters or refreshes the settings view. -- The result is expected to be a table of tables that contain settings. function script:settings() -- Return a table of tables return { -- Let's define a boolean setting { -- The name of the setting name = 'Bool setting', -- The current value of this setting value = settings.someBool, -- onChange is a function that will be called when the values has changed onChange = function(newState) settings.someBool = newState end }, -- Let's define an integer setting { name = 'Integer setting', value = settings.someInt, -- We provide a list of possible values values = {1, 2, 3}, onChange = function(newState) settings.someInt = newState end }, -- Let's define an integer setting with custom names for the values { name = 'Named integer setting', value = settings.someNamedInt, values = {1, 2, 3}, -- We provide a list names for the of possible values that we've specified valueNames = {'A', 'B', 'C'}, onChange = function(newState) settings.someNamedInt = newState end }, -- Let's define a setting with multiple string options { name = 'Some strings', value = settings.someString, values = {'Abc', 'Xyz', '123'}, onChange = function(newState) settings.someString = newState end }, -- Let's define a setting for generic text that can be edited { name = 'Generic text', -- This description will be shown when user enters a new text desc = 'Here you can enter a text:', value = settings.someGenericText, onChange = function(newState) settings.someGenericText = newState end, -- onReset is a function that will be called when users presses the settings reset button onReset = function() settings.someGenericText = 'Reset was called' end } } end
Lua editor
Run
The label that is shown in front of the settings indicates what plugin/file provides these settings. For plugins from Plugin Store it shows the plugin's name.
You do not have the required permissions to view the files attached to this post.
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: [1.8.95] Plugin settings

Post by ian` »

What is the Generic Text have same functions with command (console)? :bt
Show
Screenshot_20200709-072150_60.png
Screenshot_20200709-072203_60.png
You do not have the required permissions to view the files attached to this post.
:bc
User avatar
Lobby
Inhabitant of a Supercluster
Reactions:
Posts: 3759
Joined: 26 Oct 2008, 10:34
Plugins: Showcase Store

Re: [1.8.95] Plugin settings

Post by Lobby »

It's like the input dialog for rules in online mode. You use it to edit some sort of text.
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: [1.8.95] Plugin settings

Post by ian` »

I see. Because it looks strange in the settings tab.
:bc
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: [1.8.95] Plugin settings

Post by ian` »

What is it code correct to set the default boolean value settings to be false? Because when i'm use that code, bad argument issue occurs.

Code: Select all

settings.someBool = settings.someBool == nil and false or settings.someBool
Show
Screenshot_20200710-063904.png
Edit---
I think the problem is solved. but i have one question, what for is '== nil and true'?
You do not have the required permissions to view the files attached to this post.
:bc
User avatar
Lobby
Inhabitant of a Supercluster
Reactions:
Posts: 3759
Joined: 26 Oct 2008, 10:34
Plugins: Showcase Store

Re: [1.8.95] Plugin settings

Post by Lobby »

Since nil is also considered false in Lua I have to check if it is actually nil before applying a default value. I have to ensure that the variable contains true or false because the game expects a boolean value in order to show the checkbox.

Although nil is considered as false, it is not the same as false, meaning that nil == false is false.

Code: Select all    Reset

local function foo(var) print(var == nil and true or var) end foo(nil) -- Should evaluate to the "default value" true foo(false) -- Should be false foo(true) -- Should be true
Lua editor
Run
User avatar
erksmit
Villager
Reactions:
Posts: 24
Joined: 02 Mar 2018, 10:39
Plugins: Showcase Store
Version: Beta

Plugin Creator

Re: [1.8.95] Plugin settings

Post by erksmit »

is it possible to use a textbox or slider as a setting? i want the user to be able to enter any number value they want
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: [1.8.95] Plugin settings

Post by ian` »

erksmit wrote: 03 Nov 2020, 15:07 is it possible to use a textbox or slider as a setting? i want the user to be able to enter any number value they want
i think you only can use like generic text (in this case textField) and add more vars on the onChange options.

Code: Select all    Reset

function script:settings() return{ { name = 'Generic text', -- This description will be shown when user enters a new text desc = 'Here you can enter a text:', value = settings.someGenericText, onChange = function(newState) settings.someGenericText = newState vars1 = newstate -- optional variable to be changed with new value end } } end
Lua editor
Run
:bc
User avatar
Hadestia
Inhabitant of a Megalopolis
Reactions:
Posts: 722
Joined: 17 Jul 2017, 14:16
Location: Philippines
Plugins: Showcase Store

Plugin Creator

Platform

Re: [1.8.95] Plugin settings

Post by Hadestia »

Is it really possible to add "hidden":true for all the ingame drafts if a made plugin settings for it?
 ! Message from: Hadestia
Visit my YouTube channel:
https://youtube.com/channel/UC5qG-r8y21036JZbGRClbdQ
Previous topicNext topic