Lua chatbox

The Lua scripting language allows you to give your plugin more advanced features.
Previous topicNext topic
User avatar
Lakan Haraya
Metropolitan
Reactions:
Posts: 131
Joined: 28 Mar 2019, 07:34
Location: Philippines
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by Lakan Haraya »

Heya

(1) How can I find the tile of a certain building using Script.EVENT_PLACED and using Tile.getBuildingDraft(x,y), I used all of it, I put the id back but still can't find it.

Code: Select all

if event == SCRIPT.EVENT_PLACED and Tile.getBuildingDraft(x,y):getDraft() == "$galleon00" then
  if gllg < 100 then 
   Builder.remove(x,y)
end
end
--rjroldan1
(2) How can I create or trigger a new map that will save in Single Cities, something like the DSA's moon map, and back to the origin city. How variable works between those maps? Can I have a sample lua script for it, if available :mine
"ᜀᜃᜓ ᜀᜅ᜔ ᜁᜌᜓᜅ᜔ ᜑᜇᜌ"
CEO of Haráya Motors

“TheoTown Philippines Council”
“Kapulungan Ng Mga Nagkakaisang Lungsod”
User avatar
JustAnyone
Honorary Contributor
Reactions:
Posts: 3666
Joined: 23 Jul 2017, 10:45
Location: Easter Island
Plugins: Showcase Store

Platform

Re: Lua chatbox

Post by JustAnyone »

1) In that case, he's comparing Draft with ID which will never return true
2)

Code: Select all

City.load(file location [str], overwrite the map with same name or not [bool], is available in single cities selection or not [bool], target city name [str])
In DSA's case, it loads an empty map and then other scripts take care of generation.
User avatar
Bearbear76
Inhabitant of a Multiverse
Reactions:
Posts: 5701
Joined: 10 Feb 2017, 12:53
Location: L2 cache
Plugins: Showcase Store

Plugin Creator

Platform

Re: Lua chatbox

Post by Bearbear76 »

Think of Drafts as an JSON object.

Code: Select all

{
  "id": "$example",
  "type": "decoration",
  "width": 1,
  "height": 1,
  ...
}
So think of Tile.getBuildingDraft() as getting the code above. Now can you see why it's not the same as the id?
Now if you want to match ids you would have to add :getId() to get the Id of the draft that was returned by Tile.getBuildingDraft()
Just my opinion
retired
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by ian` »

How to use City.countBuildingsOfType(type[,level])? That's always show me an errors 'call nil'. I see the returns is number and level, then i set 2 variables, but it's still doesn't work.
_20200704_205106.JPG
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: Lua chatbox

Post by Lobby »

Thx, try it with

Code: Select all    Reset

City.countBuldingsOfType()
Lua editor
Run
instead. Will be fixed in 1.8.91.
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by ian` »

Can i get an explanation about budgetItem and getCurrency(name)? Are there different functions and types of drafts? How can I make them and show in financial information?
Last edited by ian` on 23 Jul 2020, 10:22, edited 1 time in total.
: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: Lua chatbox

Post by Hadestia »

Temgamer wrote: 26 Jun 2020, 20:14

Code: Select all

function buildZoneC(zeroX, zeroY, zoneId, radius)
    zeroX = zeroX - radius
    zeroY = zeroY - radius
    local offset = 0
    Builder.buildZone(Draft.getDraft(zoneId), zeroX + offset, zeroY)
    for i=1, (radius * 2 + 1)^2 - 1 do
    if i % (radius * 2 + 1) == 0 then
      zeroY = zeroY + 1
      offset = 0
    else
      offset = offset + 1
    end
    Builder.buildZone(Draft.getDraft(zoneId), zeroX + offset, zeroY)
    end
end
Code underneath runs it, when player builds a building with <id>:

Code: Select all

function script:event(zeroX, zeroY, level, event)
  if event == Script.EVENT_PLACED and Tile.getBuildingDraft(zeroX, zeroY):getId() == "<id> then
    buildZoneC(zeroX, zeroY, "$zonecommercial", 2)
  end
end
Result of build:
Ahotee_20-06-26_23.12.47.png
It also places zone under that building, btw

Wait how to used that <id> cause i test it and nothings happened i think it missed the "getId() = <id>" there .

Also you didn't used variable:"zoneId" from your buildZone function
 ! Message from: Hadestia
Visit my YouTube channel:
https://youtube.com/channel/UC5qG-r8y21036JZbGRClbdQ
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: Lua chatbox

Post by Hadestia »

Gonna ask again.

Can i use :
Show
code

Code: Select all

local lpeg = required 'lpeg'
for my plugin?, Sorry i just ask in advance cause I can't play right now my phone always shutdown when i startup my theo donno why :),
 ! Message from: Hadestia
Visit my YouTube channel:
https://youtube.com/channel/UC5qG-r8y21036JZbGRClbdQ
User avatar
KINGTUT10101
1,000,000 inhabitants
Reactions:
Posts: 2211
Joined: 07 Jul 2016, 20:50
Location: 'Merica
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by KINGTUT10101 »

Can you detect winter mode, weather, and zone demand through Lua?
User avatar
JustAnyone
Honorary Contributor
Reactions:
Posts: 3666
Joined: 23 Jul 2017, 10:45
Location: Easter Island
Plugins: Showcase Store

Platform

Re: Lua chatbox

Post by JustAnyone »

Using virtual variables, yes.
User avatar
KINGTUT10101
1,000,000 inhabitants
Reactions:
Posts: 2211
Joined: 07 Jul 2016, 20:50
Location: 'Merica
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by KINGTUT10101 »

What about specific happiness levels, like park happiness?
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by ian` »

I think City.getCommercialJobs and getIndustrialJobs return the wrong values at one level higher of available inhabitant levels.

_20200724_133550.JPG

You can see at the image, com and ind TT are (0), but return from lua are 22 and 50.

_20200724_133538.JPG
It's same at TTT levels, it must be 0, but return from lua are 172 and 409.

TT version 1907
Thanks. :space
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: Lua chatbox

Post by Lobby »

@KINGTUT10101 version 1.9.09 will introduce an extra parameter happinessType for City.getHappiness that will allow you to get more specific happiness values.

Using it will look like that:

Code: Select all    Reset

local value = City.getHappiness(City.HAPPINESS_PARK) Debug.toast(value)
Lua editor
Run


@distian The discrepancy that you've discovered is caused by the fact that the budget view shows the amount of all jobs that are created by buildings of a specific level. Your job numbers differ from that slightly in that even poor commercial places create a few higher level jobs (e.g. the boss of a facility is usually richer than his employees).
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by ian` »

i think there is a bug in City.getDisaster() functions. it always returned 'fire' no matter what disaster happened.
:bc
User avatar
Lobby
Inhabitant of a Supercluster
Reactions:
Posts: 3759
Joined: 26 Oct 2008, 10:34
Plugins: Showcase Store

Re: Lua chatbox

Post by Lobby »

True, I called the wrong function...
image.png
You do not have the required permissions to view the files attached to this post.
User avatar
KINGTUT10101
1,000,000 inhabitants
Reactions:
Posts: 2211
Joined: 07 Jul 2016, 20:50
Location: 'Merica
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by KINGTUT10101 »

@distian
How did you make the corners of this window round here? Is there a specific function for that?
Screenshot_20200728-085703.png
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: Lua chatbox

Post by ian` »

KINGTUT10101 wrote: 28 Jul 2020, 14:02 @distian
How did you make the corners of this window round here? Is there a specific function for that?
Tbh, i used 5 rectangular layers. 2 layers for the shadow, 2 layers for the brighter color and 1 layer for the base.
:bc
User avatar
KINGTUT10101
1,000,000 inhabitants
Reactions:
Posts: 2211
Joined: 07 Jul 2016, 20:50
Location: 'Merica
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by KINGTUT10101 »

Dang, I was hoping it was just a simple command. I actually had the same idea to make rounded corners that way, but I thought I would ask you about it first.
User avatar
Uncle Koala
Metropolitan
Reactions:
Posts: 142
Joined: 05 Apr 2020, 12:53
Location: Pitcairn Islands
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by Uncle Koala »

Spent quite some time trying to get this to work
sand.gif
I wonder why does Builder.buildGround remove trees? Would be cooler if it didn't but then we wouldn't have this GIF :space
You do not have the required permissions to view the files attached to this post.
Lua is easy! :lua:

Code: Select all

if Car.GoingToCrashIntoEachOther()
   then Car.DontCrash
end
User avatar
ian`
Metropolitan
Reactions:
Posts: 117
Joined: 04 Apr 2020, 15:36
Location: 日本
Plugins: Showcase Store
Version: Beta

Plugin Creator

Platform

Re: Lua chatbox

Post by ian` »

Uncle Koala wrote: 16 Aug 2020, 22:03 Spent quite some time trying to get this to work

sand.gif

I wonder why does Builder.buildGround remove trees? Would be cooler if it didn't but then we wouldn't have this GIF :space
For now, you can try like this:

Code: Select all    Reset

local tree local treeFrame function script:earlyTap(x,y) if Tile.isTree(x,y) then -- condition if any trees in position tree = Tile.getTreeDraft(x,y) -- get tree draft treeFrame = Tile.getTreeFrame(x,y) -- get tree frame Builder.buildGround('$asphalt00',x,y) Builder.buildTree(tree,x,y,treeFrame) -- build tree after build ground else -- condition if no tree in position Builder.buildGround('$asphalt00',x,y) end return false end
Lua editor
Run
:bc
Previous topicNext topic