Forum

How to make an if/or in 1 line

Discuss programming in the QuakeC language.

Moderator: InsideQC Admins

How to make an if/or in 1 line

Postby skite2001 » Wed Jun 30, 2010 4:51 pm

Hello, first my script:

Code: Select all
if (s == "wizmet1_2")
      {
         r = rint(random() * 3);         
         if (r == 0)
            sound (e, CHAN_AUTO, "walk/metal1.wav", 0.5, ATTN_NORM);
         else if (r == 1)
            sound (e, CHAN_AUTO, "walk/metal2.wav", 0.5, ATTN_NORM);
         else if (r == 2)
            sound (e, CHAN_AUTO, "walk/metal3.wav", 0.5, ATTN_NORM);
         else
            sound (e, CHAN_AUTO, "walk/metal4.wav", 0.5, ATTN_NORM);
      }
      if (s == "ecop1_6")
      {
         r = rint(random() * 3);         
         if (r == 0)
            sound (e, CHAN_AUTO, "walk/metal1.wav", 0.5, ATTN_NORM);
         else if (r == 1)
            sound (e, CHAN_AUTO, "walk/metal2.wav", 0.5, ATTN_NORM);
         else if (r == 2)
            sound (e, CHAN_AUTO, "walk/metal3.wav", 0.5, ATTN_NORM);
         else
            sound (e, CHAN_AUTO, "walk/metal4.wav", 0.5, ATTN_NORM);
      }


and now my question...how can i add the 2nd unneeded bunch of script to the 1st one, like:

if (s == "wizmet1_2") or (s == "ecop1_6")

?
User avatar
skite2001
 
Posts: 17
Joined: Mon Nov 17, 2008 5:40 pm

Postby Spike » Wed Jun 30, 2010 4:55 pm

if (a==c || b==d)

|| is logical or.
| is binary or.
Spike
 
Posts: 2892
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Postby Mexicouger » Wed Jun 30, 2010 4:58 pm

Code: Select all
if (s == "wizmet1_2" | s == "ecop1_6")
      {
         r = rint(random() * 3);         
         if (r == 0)
            sound (e, CHAN_AUTO, "walk/metal1.wav", 0.5, ATTN_NORM);
         else if (r == 1)
            sound (e, CHAN_AUTO, "walk/metal2.wav", 0.5, ATTN_NORM);
         else if (r == 2)
            sound (e, CHAN_AUTO, "walk/metal3.wav", 0.5, ATTN_NORM);
         else
            sound (e, CHAN_AUTO, "walk/metal4.wav", 0.5, ATTN_NORM);
      }
User avatar
Mexicouger
 
Posts: 514
Joined: Sat May 01, 2010 10:12 pm

Postby skite2001 » Wed Jun 30, 2010 8:31 pm

Mexicouger wrote:
Code: Select all
if (s == "wizmet1_2" | s == "ecop1_6")
      {
         r = rint(random() * 3);         
         if (r == 0)
            sound (e, CHAN_AUTO, "walk/metal1.wav", 0.5, ATTN_NORM);
         else if (r == 1)
            sound (e, CHAN_AUTO, "walk/metal2.wav", 0.5, ATTN_NORM);
         else if (r == 2)
            sound (e, CHAN_AUTO, "walk/metal3.wav", 0.5, ATTN_NORM);
         else
            sound (e, CHAN_AUTO, "walk/metal4.wav", 0.5, ATTN_NORM);
      }


sry mexi, doesn't work!
if i try to compile the files, i get the error:
"type mismatch for | (string and string)"

@Spike
sry, i want that "s==" is always "s=="! means i only want different textures be the same string


changed to:
Code: Select all
if (s == "wizmet1_2" || s == "ecop1_6")

now it works^^
thx for the help
Last edited by skite2001 on Wed Jun 30, 2010 8:38 pm, edited 1 time in total.
User avatar
skite2001
 
Posts: 17
Joined: Mon Nov 17, 2008 5:40 pm

Postby mankrip » Wed Jun 30, 2010 8:34 pm

Because you must use the logical 'or', not the binary 'or'.
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
Dev blog / Twitter / YouTube
User avatar
mankrip
 
Posts: 915
Joined: Fri Jul 04, 2008 3:02 am

Postby Mexicouger » Wed Jun 30, 2010 9:37 pm

So close :o

Anyways, When do you use those Logics? I don't understand what the Difference is.
User avatar
Mexicouger
 
Posts: 514
Joined: Sat May 01, 2010 10:12 pm

Postby Spike » Wed Jun 30, 2010 10:26 pm

(1 || 2) == 1
(1 | 2) == 3

is the difference. :P

More seriously though..
(string | float) == syntax error
(string || float) == compares each side against 0/empty string.

They also have a different order of precidence, eg:
if (s == "wizmet1_2" | s == "ecop1_6")
is interpreted as:
if (s == ("wizmet1_2" | s) == "ecop1_6")
and then you're doing ((string == float) == string) which is two syntax errors.
Spike
 
Posts: 2892
Joined: Fri Nov 05, 2004 3:12 am
Location: UK


Return to QuakeC Programming

Who is online

Users browsing this forum: No registered users and 1 guest