2 operators that i don't understand
#1

Quote:

? : e1 ? e2 : e3
results in either e2 or e3, depending on the value of e1. The
conditional expression is a compound expression with a two
part operator, “?” and “:”. Expression e2 is evaluated if e1
is logically “true”, e3 is evaluated if e1 is logically “false”.

[/quote from pawn-lang.pdf]

i don't understand what ? and : do
could anyone explain me please?
Reply
#2

Quote:
Originally Posted by ssǝן‾ʎ
It's an inline if statement, as explained in that text.
but what do they do?
when should i use ? and when : ?
Reply
#3

It's like:

pawn Код:
(statement) ? if-case : else-case
Reply
#4

so this:
Код:
 y = (x == 1) ? 10 : 20;
does:
Код:
if(x == 1)
{
  y = 10;
}
else
{
  y = 20;
}
right?
Reply
#5

if i use this:
Код:
	    if(PlayerToPoint(i, 250.0, PosBombX, PosBombY, PosBombZ))
	    {
				SetPlayerMapIcon(i, 13, PosBombX, PosBombY, PosBombZ, 23, 0);
	    }
	    else
	    {
	    	RemovePlayerMapIcon(i, 13);
	    }
it works.

but now i tried this:
Код:
	    PlayerToPoint(i, 250.0, PosBombX, PosBombY, PosBombZ) ? SetPlayerMapIcon(i, 13, PosBombX, PosBombY, PosBombZ, 23, 0) : RemovePlayerMapIcon(i, 13);
and i get this error:
Quote:

warning 215: expression has no effect

i found that here so i thought it'd work ><
http://www.lix.polytechnique.fr/~lib...nditional.html
Reply
#6

Quote:
Originally Posted by ssǝן‾ʎ
Because that's not inline.

And don't even get me started on using PlayerToPoint!
what do you mean?
i tested if it worked ingame, and it did, i just have this warning


Quote:

215 expression has no effect
The result of the expression is apparently not stored in a variable or
used in a test. The expression or expression statement is therefore
redundant.

yes so that's why.. but i don't want to store it in a value
Reply
#7

Why don't you just use if - else in that case? It looks much better and alot easier to read than some line full of code.
Reply
#8

Quote:
Originally Posted by Finn
Why don't you just use if - else in that case? It looks much better and alot easier to read than some line full of code.
because i want to learn how these expressions work
Reply
#9

you have to use them in a function or in a return, the way you use it, it will not work.
I'll show some examples how to use it:

pawn Код:
public OnPlayerSpawn(playerid)
{
  GivePlayerMoney(playerid, (GetPlayerMoney(playerid) > 0 ? 0 : 500) );
  return 1;
}
what does it do? when the player has money (PLAYER_MONEY is bigger then 0) it gives nothing (0) else it gives 500

pawn Код:
stock IsPlayerSpawned(playerid)
return (IsPlayerConnected(playerid) && playerinfo[playerid][spawned] ? 1 : 0);
what does it do? if the player is connected and spawned it returns 1 else 0

child's play.
Reply
#10

Quote:
Originally Posted by =Contador=
pawn Код:
stock IsPlayerSpawned(playerid)
return (IsPlayerConnected(playerid) && playerinfo[playerid][spawned] ? 1 : 0);
what does it do? if the player is connected and spawned it returns 1 else 0
This example isn't a good one..If it's just to check if it's either 0 or 1, you just do
pawn Код:
return IsPlayerConnected(playerid) && playerinfo[playerid][spawned];
that's the exact same thing, and may be faster to execute.
Reply
#11

Quote:
Originally Posted by 0rb
This example isn't a good one..If it's just to check if it's either 0 or 1, you just do
pawn Код:
return IsPlayerConnected(playerid) && playerinfo[playerid][spawned];
that's the exact same thing, and may be faster to execute.
Actually you don't need IsPlayerConnected() neither, because checking if the player is spawned does it itself as unconnected players cannot be spawned.

pawn Код:
return playerinfo[playerid][spawned];
LOL I know it's annoying, but it's funny how you start fixing some example scripts, he made it just so you get what ? and : are about.
Reply
#12

so you can only use it for setting values and returning values right? (or floats, booleans, ...)
Reply
#13

Quote:
Originally Posted by °ғαιιοцт°
so you can only use it for setting values and returning values right? (or floats, booleans, ...)
They are short "if-else" clauses..

You can use them if you want to check something small and use 1 expression if its right or wrong.
Reply
#14

ok
thank you all for helping and explaining it to me ^^

I think i know now where and how to use it
Reply
#15

Quote:
Originally Posted by ssǝן‾ʎ
ok thanks
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)