Hasiva

Space Traveller
Member
Joined
Jun 20, 2019
Messages
4
Reaction score
1
First Language
polish
Primarily Uses
RMVXA
Hello.
It's probably a beginners' question, but can you make conditional branches with AND and OR operators in Ace? I specifically want to do some statements with switches, but a solution for normal variables would be appreciated too. I know you can make one condition after another for AND, but I believe there is probably more efficient solution, that's why I'm asking.

Sorry if this was asked before, I'm completly new to RPG Makers and this forum and I couldn't find the info about this anywhere.
 

Hasiva

Space Traveller
Member
Joined
Jun 20, 2019
Messages
4
Reaction score
1
First Language
polish
Primarily Uses
RMVXA
Thanks for the info!
 

Heirukichi

Veteran
Veteran
Joined
Sep 24, 2015
Messages
1,456
Reaction score
621
First Language
Italian
Primarily Uses
RMVXA
Actually, even without that script, there is a "Script" option in the conditional branch Event Command, you can use that to place a code to evaluate.
 

Shiro-chan

Friendly Neighbourhood Neppy Maid
Veteran
Joined
Aug 7, 2018
Messages
195
Reaction score
59
First Language
German
Primarily Uses
RMVXA
Code:
$game_variables[x]>y or $game_switches[z]==true
$game_variables[x]>y and $game_switches[z]==true

Put things like this into the script option of your Conditional Branch.
 

Hasiva

Space Traveller
Member
Joined
Jun 20, 2019
Messages
4
Reaction score
1
First Language
polish
Primarily Uses
RMVXA
Code:
$game_variables[x]>y or $game_switches[z]==true
$game_variables[x]>y and $game_switches[z]==true

Put things like this into the script option of your Conditional Branch.

Thank you, that's even better!
I knew you could do this probably by scripting or something. Man, I must start learning Ruby as quick as possible.
 

Shiro-chan

Friendly Neighbourhood Neppy Maid
Veteran
Joined
Aug 7, 2018
Messages
195
Reaction score
59
First Language
German
Primarily Uses
RMVXA
It helps to check the scriptcall collection threads. Problem is mainly that Conditional Branches have so many possibilities that they're not covered, so for those it's best to ask in the help thread.

Also note that I tried both "xor" and "nand" operators, and neither works (! for negative also does not btw), so you will have to be a tad clever with just "and" and "or".
 

Heirukichi

Veteran
Veteran
Joined
Sep 24, 2015
Messages
1,456
Reaction score
621
First Language
Italian
Primarily Uses
RMVXA
Code:
$game_variables[x]>y or $game_switches[z]==true
$game_variables[x]>y and $game_switches[z]==true
Just try to avoid using "and" or "or" and use "&&" or "||" respectively. Using and/or is bad coding etiquette.
On top of it, there is absolutely no need to compare a switch to a boolean value. Switches are boolean values by themselves.
Code:
($game_variables[x]>y) && $game_switches[z] # and
($game_variables[x]>y) || $game_switches[z] # or
This does the same thing while being shorter.
 
Last edited:

Hasiva

Space Traveller
Member
Joined
Jun 20, 2019
Messages
4
Reaction score
1
First Language
polish
Primarily Uses
RMVXA
[...]Just try to avoid using "and" or "or" and use "&&" or "||" respectively. Using and/or is bad coding etiquette. [...]
Oh, in ruby you can use || and &&?
No worries, I'll be using this notation from now on then! ("and" and "or" looked too SQLish for me anyway.:kaoswt2:)
 

Heirukichi

Veteran
Veteran
Joined
Sep 24, 2015
Messages
1,456
Reaction score
621
First Language
Italian
Primarily Uses
RMVXA
Oh, in ruby you can use || and &&?
That syntax is the same for any programming language that I have ever used (except for Fortran). The main difference about them in ruby is operator precedence: "&&" has higher priority compared to "and" (similarly for "||" and "or"). If you want to know more about this you can take a look at the help file (F1 in your engine), these things are under Ruby Syntax.

However, just to give you a rough idea, what happens is this:
Code:
a && b or a || b = (a && b) || (a || b)
 
Last edited:

Shiro-chan

Friendly Neighbourhood Neppy Maid
Veteran
Joined
Aug 7, 2018
Messages
195
Reaction score
59
First Language
German
Primarily Uses
RMVXA
On top of it, there is absolutely no need to compare a switch to a boolean value. Switches are boolean values by themselves.
Code:
($game_variables[x]>y) && $game_switches[z] # and
($game_variables[x]>y) || $game_switches[z] # or
This does the same thing while being shorter.

So how do I short-write "switch is false" as the requirement?
 

Shiro-chan

Friendly Neighbourhood Neppy Maid
Veteran
Joined
Aug 7, 2018
Messages
195
Reaction score
59
First Language
German
Primarily Uses
RMVXA
Nvm, it was clearly a typo.
 

Heirukichi

Veteran
Veteran
Joined
Sep 24, 2015
Messages
1,456
Reaction score
621
First Language
Italian
Primarily Uses
RMVXA
Code:
!($game_switches[x])
Well, using parenthesis does not bring any harm.

@Shiro-chan anyway, you should always be wary when writing in ruby. Ruby is easy to read, but sometimes it does nasty things.
Code:
puts(2+3) # -> 5
puts(2 + 3) # -> 5
puts(2+ 3) # -> if I am not wrong this is 5 as well
puts(2 +3) # -> ERROR
 
Last edited:

Shiro-chan

Friendly Neighbourhood Neppy Maid
Veteran
Joined
Aug 7, 2018
Messages
195
Reaction score
59
First Language
German
Primarily Uses
RMVXA
Yeah, I noticed that when personalising some scripts. Anyway, looks like I'll have to do some improvements in various scriptcalls. Thanks again for the lessons.
 

Latest Threads

Latest Profile Posts

I have game ideas, but none of them would fit the theme for IGMC. XD
Why the heck do I keep comparing my games to ones made by huge companies? I'd love them to have that level of polish but I'm simply not good enough.
Hell of a day at the London Games Market! :D

1656892272017.png

Check out my haul!

Forum statistics

Threads
123,303
Messages
1,155,642
Members
161,718
Latest member
Sure973
Top