Ahmm is the "x" Here from "table.x" Is the name of my variable? One more thing is what should i put inside script.getDraft():getId()? it's my time again to comeback here i want a refreshLobby wrote: ↑23 Jun 2020, 17:24Code: Select all
-- Let's use a unique, own key for the table that we will create within a storage table local key = script:getDraft():getId() -- Let's get our personal storage table within the city storage table (will be created if it doesn't exist) local table = Util.optStorage(City.getStorage(), key) -- Let's put something into it; this should still be there after saving the city, ending the game, and then coming back table.x = 42
Lua chatbox
Moderators: Scenario Moderators, Plugin Moderators
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
- Lobby
- Developer
- Posts: 3719
- Joined: 26 Oct 2008, 12:34
- Plugins: Showcase Store
- Version: Beta
-
Platform
Re: Lua chatbox
The x is the name of the "variable" that is stored inside the table. For illustration how tables work (they are basically containers that contain variables, so to speak):
Code: Select all Reset
local table = {} -- Creates a new, empty table table.x = 42 print(table.x) -- Will output 42
You can just use it like that in order to use the id of your plugin as key. Alternatively, you can use any unique string, e.g.:
Code: Select all
local key = 'd3020030-1aa0-477e-a04f-0801e3546329'
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
Here's my example
Code: Select all Reset
local var = 0 function script:init() Loadstate() -- loading variable stored ingame end function script:nextMonth() var = var + 50 end function script:update() SaveState() -- saving var values end
- ian`
- Supporter
- Posts: 118
- Joined: 04 Apr 2020, 17:36
- Location: Indonesien
- Plugins: Showcase Store
- Version: Beta
-
Plugin Creator
Platform
Re: Lua chatbox
Yeah, it's possible. As the saveState() is a function, it will call all body of the function. Please notice the upvalue of vars.rjroldan1 wrote: ↑17 Oct 2020, 17:51can the value of a variable that is in process such as in script:update() would be stored insidr tables even if it is pre-defined from local declaration .... I think it the game should read and used the value of the variable that is in pre-defined in var-declaration than the saved values
Code: Select all Reset
local foo -- declare empty variable local function getStorage() return Util.optStorage(TheoTown.getStorage(), key) end local function saveState() local storage = getStorage() storage.foo = foo end local function loadState() local storage = getStorage() foo = storage.foo or 'value' -- if storage.foo is nil, foo will be set to 'value'. if storage.foo isn't nil, foo will be set to storage.foo end function script:init() loadState() end function script:nextMonth() foo = 'anotherValue' saveState() -- will store the new value of foo to storage.foo end
For simply method, you can use script:finishInformationDialog(x,y,level,dialog)
Code: Select all Reset
-- script.lua function script:finishInformationDialog(x,y,_,dialog) dialog.title:setText(...) dialog.content:addListBox{...} dialog.controls:addButton{...} end
Code: Select all Reset
// building.json [ { "id":"buildingId", // body "script":"script.lua" } ]
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
ian` wrote: ↑18 Oct 2020, 05:42For simply method, you can use script:finishInformationDialog(x,y,level,dialog)
Code: Select all Reset
-- script.lua function script:finishInformationDialog(x,y,_,dialog) dialog.title:setText(...) dialog.content:addListBox{...} dialog.controls:addButton{...} endLua editor
If those dialog are exactly the same as List box in GUI give me some example im clueless what is inside the object "{}"
- ian`
- Supporter
- Posts: 118
- Joined: 04 Apr 2020, 17:36
- Location: Indonesien
- Plugins: Showcase Store
- Version: Beta
-
Plugin Creator
Platform
Re: Lua chatbox
Actually you can look at gui example post for the complete code.
Code: Select all Reset
local function showDialog() -- Body of dialog that will show when tool is clicked end function script:event(x,y,lvl,event) if event == Script.EVENT_TOOL_ENTER then GUI.get'cmdCloseTool':click() -- close the build mode showDialog() -- call the dialog end end
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
ian` wrote: ↑18 Oct 2020, 20:38So you want make a thing like gui example in Dev tool plugin by Lobby?
Actually you can look at gui example post for the complete code.
Code: Select all Reset
local function showDialog() -- Body of dialog that will show when tool is clicked end function script:event(x,y,lvl,event) if event == Script.EVENT_TOOL_ENTER then GUI.get'cmdCloseTool':click() -- close the build mode showDialog() -- call the dialog end endLua editor
I used
Code: Select all Reset
function script:finishInformationDialog(x,y,_,dialog) dialog.title:setText("Haha") dialog.content.parent:addListBox{ x = 10, y = 10, width = -10, height = -10 } local entry = listBox:addCanvas{h=30} local lbl = entry:addLabel{ text = 'This is entry ' width = -30 } local cmd = entry:addButton{ x = -35, width = 30, icon = Icon.OK, onClick = function() Debug.toast('Clicked on entry ') end } dialog.controls:addButton{ x = -35, width = 30, icon = Icon.OK, onClick = function() Debug.toast('Clicked on entry ') end } return false end
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
Code: Select all Reset
function script:finishInformationDialog(x,y,_,dialog) dialog.title:setText("Haha") dialog.content:addListBox{ x = 10, y = 10, height = -10, width = -10 } dialog.controls:addButton{ x = -35, width = 30, icon = Icon.OK, onClick = function() Debug.toast('Clicked on entry '..i) end } end
- 1Code
- Inhabitant of a Megacity
- Posts: 302
- Joined: 30 Jan 2020, 16:56
- Location: https://bit.ly/3P5dhnT
- Plugins: Showcase Store
-
Plugin Creator
Platform
Re: Lua chatbox
Code: Select all Reset
Drawing.drawText("E!", 30, 30) function script:buildCityGUI() local function aci() local dialog = GUI.createDialog { title = "Advanced city infomationn" } local layout = dialog.content:addLayout{ vertical = true, spacing=2 } local panel = addPanel { width = 30, height = 30 } local function addLine(label, height) local line = layout:addLayout{height = height} line:addLabel{text = label, w = 60} return line:addLayout{ x = 62 } end local line = addLine("City name", 10) local textframe = dialog.content:addTextFrame { text = [[E!]] } end local sidebar = GUI.get('sidebarLine') local button = sidebar:getFirstPart():addButton { width = 20, height = 20, onClick = function(self) aci() end } end --But why is the text frame not showing in the dialog?
- 1Code
- Inhabitant of a Megacity
- Posts: 302
- Joined: 30 Jan 2020, 16:56
- Location: https://bit.ly/3P5dhnT
- Plugins: Showcase Store
-
Plugin Creator
Platform
- 1Code
- Inhabitant of a Megacity
- Posts: 302
- Joined: 30 Jan 2020, 16:56
- Location: https://bit.ly/3P5dhnT
- Plugins: Showcase Store
-
Plugin Creator
Platform
Re: Lua chatbox
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
My question is why did you put dialog.content:addButton{} if you want to show only the textframe?
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
Code: Select all Reset
local line = addLine('City name:', 10) line:addButton{ icon = Icon.CITY, x = -35, width = 25, text = 'City Name', onClick = function() Debug.toast('City Name') end }
- 1Code
- Inhabitant of a Megacity
- Posts: 302
- Joined: 30 Jan 2020, 16:56
- Location: https://bit.ly/3P5dhnT
- Plugins: Showcase Store
-
Plugin Creator
Platform
Re: Lua chatbox
Still doesn't workrjroldan1 wrote: ↑20 Oct 2020, 08:15Based on what I've understood in your codes you want to have text inside the button?
Code: Select all Reset
local line = addLine('City name:', 10) line:addButton{ icon = Icon.CITY, x = -35, width = 25, text = 'City Name', onClick = function() Debug.toast('City Name') end }Lua editor
Code: Select all Reset
Drawing.drawText("E!", 30, 30) function script:buildCityGUI() local function aci() local dialog = GUI.createDialog { title = "Advanced city infomationn" } local layout = dialog.content:addLayout{ vertical = true, spacing=2 } local function addLine(label, height) local line = layout:addLayout{height = height} line:addLabel{text = label, w = 60} return line:addLayout{ x = 62 } end local line = addLine('City name:', 10) line:addButton{ icon = Icon.CITY, x = -35, width = 25, text = 'City Name', onClick = function(self) Debug.toast('City Name') end } end local sidebar = GUI.get('sidebarLine') local button = sidebar:getFirstPart():addButton { width = 20, height = 20, onClick = function(self) aci() end } end
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
Code: Select all Reset
local line = dialog:addButton{ icon = Icon.CITY, x = -35, width = 25, text = 'City Name', onClick = function() Debug.toast('City Name') end }
- 1Code
- Inhabitant of a Megacity
- Posts: 302
- Joined: 30 Jan 2020, 16:56
- Location: https://bit.ly/3P5dhnT
- Plugins: Showcase Store
-
Plugin Creator
Platform
Re: Lua chatbox
Code: Select all Reset
Drawing.drawText("E!", 30, 30) function script:buildCityGUI() local function aci() local dialog = GUI.createDialog { title = "Advanced city infomationn" } --local root = GUI.getRoot() local layout = dialog.content:addLayout{ vertical = true, spacing=2 } local panel = addPanel { width = 30, height = 30 } local function addLine(label, height) local line = layout:addLayout{height = height} line:addLabel{text = label, w = 60} return line:addLayout{ x = 62 } end local line = dialog:addButton{ icon = Icon.CITY, x = -35, width = 25, text = 'City Name', onClick = function() Debug.toast('City Name') end } line:addButton{ icon = Icon.CITY, x = -35, width = 25, text = 'City Name', onClick = function(self) Debug.toast('City Name') end } end local sidebar = GUI.get('sidebarLine') local button = sidebar:getFirstPart():addButton { width = 20, height = 20, onClick = function(self) aci() end } end
- 1Code
- Inhabitant of a Megacity
- Posts: 302
- Joined: 30 Jan 2020, 16:56
- Location: https://bit.ly/3P5dhnT
- Plugins: Showcase Store
-
Plugin Creator
Platform
- Hadestia
- Inhabitant of a Megalopolis
- Posts: 727
- Joined: 17 Jul 2017, 16:16
- Location: Philippines
- Plugins: Showcase Store
- Contact:
-
Plugin Creator
Platform
Re: Lua chatbox
Code: Select all Reset
Drawing.drawText("E!", 30, 30) function script:buildCityGUI() local function aci() local dialog = GUI.createDialog { title = "Advanced city infomationn" } --local root = GUI.getRoot() local layout = dialog.content:addLayout{ vertical = true, spacing=2 } local panel = addPanel { width = 30, height = 30 } local function addLine(label, height) local line = layout:addLayout{height = height} line:addLabel{text = label, w = 60} return line:addLayout{ x = 62 } end local line = addLine('button',26) line:addButton{ icon = Icon.CITY, x = -35, width = 25, text = 'City Name', onClick = function() Debug.toast('City Name') end } line:addButton{ icon = Icon.CITY, x = -35, width = 25, text = 'City Name', onClick = function(self) Debug.toast('City Name') end } end end
I edited some @Jeremiah Stephens i dont know how about side bar