Lua chatbox
Moderator: Plugin Moderators
- Bearbear76
- Former Bearbear65
- Reactions:
- Posts: 5730
- Joined: 10 Feb 2017, 14:53
- Location: L2 cache
- Plugins: Showcase Store
-
Plugin Creator
Platform
Re: Lua chatbox
Use TheoTown.registerCommand(string, function)
If you return a value from the function that would be displayed on the console.
Code: Select all
TheoTown.registerCommand("hello!", function()
local number = 11 + 1
return "Hello, the magic number is: "..number
end)
-- output: Hello, the magic number is: 12 [string]
Code: Select all
local function hello()
local number = 11 + 1
return "Hello, the magic number is: "..number
end
TheoTown.registerCommand("hello!", hello())
-- output: Hello, the magic number is 12 [string]
a condition is true, if so run the command.
Code: Select all
local password = "something"
TheoTown.registerCommand("hello!", function()
if password == "olsken" then
local number = 11 + 1
return "Hello, the magic number is: "..number
end
end)
--- (console) "hello" > [nil]
--- password = olsken [string]
--- (console) "hello" > Hello, the magic number is: 12 [string]
Command names don't override existing command names.
For example, the command above is "hello!" but if I change it to "hello" you would get
a different result as TheoTown already has the prebuilt command "hello" would would say "42"
bear out!
- Temgamer
- Villager
- Reactions:
- Posts: 12
- Joined: 16 May 2017, 20:26
- Location: Saint-Petersburg, Russia
- Plugins: Showcase Store
Re: Lua chatbox
Also, is it possible to make console command require arguments? I tried TheoTown.registerCommand("testt", function(arg)) but this seems doesn't work how I expected
- Bearbear76
- Former Bearbear65
- Reactions:
- Posts: 5730
- Joined: 10 Feb 2017, 14:53
- Location: L2 cache
- Plugins: Showcase Store
-
Plugin Creator
Platform
- Temgamer
- Villager
- Reactions:
- Posts: 12
- Joined: 16 May 2017, 20:26
- Location: Saint-Petersburg, Russia
- Plugins: Showcase Store
Re: Lua chatbox
I just wanted to make a command, which would set radius and zone around some building by taking radius and zone ID as parametersBearbear76 wrote: ↑27 Jun 2020, 06:36I don't think there are any arguments. What do you want to do?
- Bearbear76
- Former Bearbear65
- Reactions:
- Posts: 5730
- Joined: 10 Feb 2017, 14:53
- Location: L2 cache
- Plugins: Showcase Store
-
Plugin Creator
Platform
Re: Lua chatbox
Tried something like that but it doesn't work. That's why I'm trying to create a terminal in TheoTown which gives you more powerful commands but for personal reasons I can't work on it for a while :/Temgamer wrote: ↑27 Jun 2020, 08:08I just wanted to make a command, which would set radius and zone around some building by taking radius and zone ID as parametersBearbear76 wrote: ↑27 Jun 2020, 06:36I don't think there are any arguments. What do you want to do?
- ian`
- Supporter
- Reactions:
- Posts: 117
- Joined: 04 Apr 2020, 17:36
- Location: Indonesien
- Plugins: Showcase Store
- Version: Beta
-
Plugin Creator
Platform
Re: Lua chatbox
Try to just change the condition variables with command and call that variables in outside of register command function.I just wanted to make a command, which would set radius and zone around some building by taking radius and zone ID as parameters
Code: Select all
local c1 = 0
function script:update()
TheoTown.registerCommand(name,function(name,arg)
if c1 == 0 then
c1 = 1
Debug.toast('On')
elseif c1 == 1 then
c1 = 0
Debug.toast('Off')
end
end)
end
function script:click(x,y,level)
if c1 == 1 then
Your stuff ...
end
end
- JustAnyone
- Developer
- Reactions:
- Posts: 3475
- Joined: 23 Jul 2017, 12:45
- Location: Easter Island
- Plugins: Showcase Store
-
Platform
Re: Lua chatbox
All scripts or fun transitions are disabled for cities in online mode unless you are the city author and have plugin manifest for your script.
- Bearbear76
- Former Bearbear65
- Reactions:
- Posts: 5730
- Joined: 10 Feb 2017, 14:53
- Location: L2 cache
- Plugins: Showcase Store
-
Plugin Creator
Platform
Re: Lua chatbox
Might be a better way but this is what I came up with.
Code: Select all
local function seperate(value)
local result = ""
value = tostring(value):reverse()
for set in value:gmatch("..?.?") do
result = result..set..","
end
result = result:sub(1, -2):reverse()
return result
end
- Lobby
- Developer
- Reactions:
- Posts: 3705
- Joined: 26 Oct 2008, 12:34
- Plugins: Showcase Store
- Version: Beta
-
Platform
Re: Lua chatbox
Found another solution that also uses gsub here:
In other languages you'd be able to use the string format function to do that for you, but Lua is different
Code: Select all
function comma_value(amount)
local formatted = amount
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2')
if (k==0) then
break
end
end
return formatted
end
print(comma_value(1234567))
- ian`
- Supporter
- Reactions:
- Posts: 117
- Joined: 04 Apr 2020, 17:36
- Location: Indonesien
- Plugins: Showcase Store
- Version: Beta
-
Plugin Creator
Platform
Re: Lua chatbox
Thanks.
I tried it before, but didn't work. now it works. lolLobby wrote: ↑29 Jun 2020, 16:35 Found another solution that also uses gsub here:In other languages you'd be able to use the string format function to do that for you, but Lua is differentCode: Select all
function comma_value(amount) local formatted = amount while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2') if (k==0) then break end end return formatted end print(comma_value(1234567))
- Lobby
- Developer
- Reactions:
- Posts: 3705
- Joined: 26 Oct 2008, 12:34
- Plugins: Showcase Store
- Version: Beta
-
Platform
Re: Lua chatbox
Code: Select all Reset
-- Bearbear local function seperate(value) local result = "" value = tostring(value):reverse() for set in value:gmatch("..?.?") do result = result..set.."," end result = result:sub(1, -2):reverse() return result end -- Internet function comma_value(amount) local formatted = amount while true do formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", '%1,%2') if (k==0) then break end end return formatted end -- Test print('The bear way: '..seperate(1234567)) print('The internet way: '..comma_value(1234567))
Interactive Lua editor
- Bearbear76
- Former Bearbear65
- Reactions:
- Posts: 5730
- Joined: 10 Feb 2017, 14:53
- Location: L2 cache
- Plugins: Showcase Store
-
Plugin Creator
Platform
Re: Lua chatbox
Ah I should of made it with %d.
Fixed the code to work because Lobby wants to click green buttons
Code: Select all Reset
local function seperate(value) local result = "" value = tostring(value):reverse() for set in value:gmatch("%d%d?%d?") do result = result..set.."," end result = result:sub(1, -2):reverse() return result end print(seperate(1234567890))
Interactive Lua editor
- ian`
- Supporter
- Reactions:
- Posts: 117
- Joined: 04 Apr 2020, 17:36
- Location: Indonesien
- Plugins: Showcase Store
- Version: Beta
-
Plugin Creator
Platform
Re: Lua chatbox
Is there road with road decoration have specific conditions? Because when i'm place road decoration on road, the script doesn't work. Even when i use Tile.isRoadDeco(x,y,level).
- Lobby
- Developer
- Reactions:
- Posts: 3705
- Joined: 26 Oct 2008, 12:34
- Plugins: Showcase Store
- Version: Beta
-
Platform
Re: Lua chatbox
Did you use Builder.isRoadDecoBuildable to check if it is buildable in the first place? Road decorations can define requirements like flags and alignment for the road they can be placed on.
- CommanderABab
- AB
- Reactions:
- Posts: 11106
- Joined: 07 Jun 2016, 21:12
- Plugins: Showcase Store
- Version: Beta
-
Plugin Creator
Platform
- ian`
- Supporter
- Reactions:
- Posts: 117
- Joined: 04 Apr 2020, 17:36
- Location: Indonesien
- Plugins: Showcase Store
- Version: Beta
-
Plugin Creator
Platform
Re: Lua chatbox
not about signature. lolCommanderABab wrote: ↑01 Jul 2020, 18:12 Seems to work for me. Your crush gives s random answer from the array. Right?
Anyway, that is sometime give you an answer not from the array.