AND and OR operators

Discussion in 'RPG Maker VX Ace' started by Hasiva, Jun 20, 2019.

  1. Hasiva

    Hasiva Space Traveller Member

    Messages:
    4
    Likes Received:
    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.
     
    #1
  2. tale

    tale Volunteer Veteran

    Messages:
    398
    Likes Received:
    608
    Location:
    USA
    First Language:
    English
    Primarily Uses:
    N/A
    Last edited: Jun 20, 2019
    #2
    Hasiva likes this.
  3. Hasiva

    Hasiva Space Traveller Member

    Messages:
    4
    Likes Received:
    1
    First Language:
    polish
    Primarily Uses:
    RMVXA
    Thanks for the info!
     
    #3
  4. Heirukichi

    Heirukichi Veteran Veteran

    Messages:
    1,155
    Likes Received:
    422
    Location:
    Italy
    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.
     
    #4
    Hasiva likes this.
  5. Shiro-chan

    Shiro-chan Veteran Veteran

    Messages:
    87
    Likes Received:
    17
    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.
     
    #5
    Heirukichi and Hasiva like this.
  6. Hasiva

    Hasiva Space Traveller Member

    Messages:
    4
    Likes Received:
    1
    First Language:
    polish
    Primarily Uses:
    RMVXA
    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.
     
    #6
  7. Shiro-chan

    Shiro-chan Veteran Veteran

    Messages:
    87
    Likes Received:
    17
    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".
     
    #7
  8. Heirukichi

    Heirukichi Veteran Veteran

    Messages:
    1,155
    Likes Received:
    422
    Location:
    Italy
    First Language:
    Italian
    Primarily Uses:
    RMVXA
    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: Jun 21, 2019
    #8
    Shiro-chan, Hasiva and Kes like this.
  9. Hasiva

    Hasiva Space Traveller Member

    Messages:
    4
    Likes Received:
    1
    First Language:
    polish
    Primarily Uses:
    RMVXA
    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:)
     
    #9
  10. Heirukichi

    Heirukichi Veteran Veteran

    Messages:
    1,155
    Likes Received:
    422
    Location:
    Italy
    First Language:
    Italian
    Primarily Uses:
    RMVXA
    That syntax is the same for any programming language that I have ever used (except for Fortran). Even SQL uses the same syntax. 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: Jun 21, 2019
    #10
    Shiro-chan likes this.
  11. Shiro-chan

    Shiro-chan Veteran Veteran

    Messages:
    87
    Likes Received:
    17
    First Language:
    German
    Primarily Uses:
    RMVXA
    So how do I short-write "switch is false" as the requirement?
     
    #11
  12. Heirukichi

    Heirukichi Veteran Veteran

    Messages:
    1,155
    Likes Received:
    422
    Location:
    Italy
    First Language:
    Italian
    Primarily Uses:
    RMVXA
    Code:
    !$game_switches[x]
     
    #12
    Shiro-chan likes this.
  13. Shiro-chan

    Shiro-chan Veteran Veteran

    Messages:
    87
    Likes Received:
    17
    First Language:
    German
    Primarily Uses:
    RMVXA
    Nvm, it was clearly a typo.
     
    #13
  14. Heirukichi

    Heirukichi Veteran Veteran

    Messages:
    1,155
    Likes Received:
    422
    Location:
    Italy
    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: Jun 21, 2019
    #14
    Shiro-chan likes this.
  15. Shiro-chan

    Shiro-chan Veteran Veteran

    Messages:
    87
    Likes Received:
    17
    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.
     
    #15

Share This Page