Blocks can take a really, really, long time to place down, especially because normally theyâre just your average âif, else if, else if, else if, else ifâŠâ. Sure, you can copy and paste blocks. But thatâs still not as fast as this way that I realized was incredibly useful. Anyways, this guide couldnât have been made without @Zypheir and @Blackhole927, because I got inspired based on a post in the âHow to make ___landâ Topic and one of @Blackhole927âs topics.
Concatenation is essentially using properties and text features to create an infinite âtext additionâ of channels. It takes up almost no space and it basically works like this.
Since properties themselves are text, what if you create a channel in the form of [insert channel name] + [insert property number] to create this?
[insert channel name and property number].
Letâs think of it this way. A long time ago, I created a guide called âHow to Add Speedâ, which is right here:
Well, I think that if there were actually 10 speed upgrades, it would REALLY be annoying.
Instead, we can essentially create an infinite amount of speed upgrades using concatenation.
First, letâs create our property. In this guide, there was only one property called âspeedâ. Then, in the blocks, we made a variable that acted as another property called âspeedâ. So, the property called âspeedâ is a number value, right? Well, how about instead of the if-else loops, we broadcast a channel with this code?
Broadcast Message on Channel Create Text with Speed
Value Get Property Speed
See what this does? It broadcasts on a channel with the value of the property speed, and the word âspeedâ in front of it. Basically, it acts as the if-else loop before, but a lot quicker! Not only that, it can also save a lot of space in your blocks, so you donât have to worry about the 75-block limit!
Issues
What if you have a greater, or greater or equal statement though? Well, Zypheir has found a partial solution:
Unfortunately, I donât think you can do this for uneven rarities. So, for now, youâll need to do this for increments and equal signs.
Difficulty of This Post?
0/5
0.5/5
1/5
1.5/5
2/5
2.5/5
3/5
3.5/5
4/5
4.5/5
5/5
6/5
0voters
Now I hope you understand the art of concatenation.
The only problem is that rounding up (ceiling function) is only used to find whole/integer numbers, so setting âcratepropertyâ to 0 will result in the message âseed0â being sent⊠you could add an extra if-else statement to account for that or just change your program to work with that message, I suppose, but itâs something that you might need to fix one way or another.
@Zypheir, is there a quicker way to code multiple exceptions to a concatenation? I am trying to make Monopoly, and I made a popup that appears when you run out of an item while in a zone space, and it shows the name and price of the space, and an option to buy or not. The problem arises when all the spaces are not the same, like the community chest. How would I code in all of these exceptions, and is there a way to change the call to action buttons based on in-game conditions?
I, uh⊠Iâm not quite sure how to conceptualize that. Iâm going to try and make a simple version myself in order to test it, but is there any particular pattern that your game uses that can make the concatenation process easier (some spaces are different than others, but still follow certain placement rules)?
Okay. Imagine the basic Monopoly board. I had two properties (read: variables) per space: the cost, and the name. I used concatenation to simplify the code for pulling the two property indexes when you stopped on a space. However, if youâve seen the Monopoly board, there are random different spaces everywhere. Is there a way to simplify the code without going full _____Land?
The idea behind concatenation is to use existing patterns to simplify a segment of code that references every individual possibility - unfortunately this only works in rather specific situations, and random distribution tends to ruin any chances that you mightâve had to reference those things reliably (think of it as a way for the computer to make decisions based on what it knows - if the program knows that certain things are always going to be in certain places, it can use shortcuts to skip past redundant evaluations⊠but if it doesnât already know which space contains which square, it isnât going to be able to use those shortcuts to skip ahead and end up making the correct decision). There might be a way to do it by storing certain information (like the number and/or name of the tile that the player is currently on) in properties and then using those properties in the concatenation, but I havenât really tested this yet so I canât be sure that it works as intended.
If it does work, though, it would do something like this: the player moves around the board a certain number of spaces and ends up on a certain tile. Something representing the specific type of the tile (can be a number, name, shorthand text bit - anything you and the program can identify as belonging to that certain tile) is stored in a property. Inside your program, blocks are used to decide how much money the player has to pay⊠and one way or another, you use that number to perform some sort of mathematical operation that results in a value related to the tileâs identity (which the program now knows).
What you would most likely need to do here is set that property to something reflecting the cost (would probably only work if a specific tile always has a specific cost). That being said, it would probably just be faster to run another process that is connected to that tile and sets a cost value when activated⊠Iâll try and test something like that out when I figure out how to make it work.
tl;dr there isnât any easy solution, and there isnât a way to do it at all without certain patterns that you can have the program reference