Simple Expression: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
No edit summary
(Added simple explanation for simple expressions and changed some formatting)
Line 2: Line 2:
[[Category:ArmA: Addon Configuration]]
[[Category:ArmA: Addon Configuration]]


Simple expressions are not as flexible as normal scripts, but they are compiled for a very efficient execution.
'''Simple expressions are not as flexible as normal scripts, but they are compiled for a very efficient execution.'''
 
Following operators are available:


== Available Operators ==


{| border="1"
{| border="1"
Line 40: Line 39:
* pow(v, a) - power
* pow(v, a) - power
* x envelope(a,b,c,d) - trapezoid envelope with output <0;1> (substitution for "(v factor(a,b))*(v factor(d,c))"
* x envelope(a,b,c,d) - trapezoid envelope with output <0;1> (substitution for "(v factor(a,b))*(v factor(d,c))"
== Simple Expressions -  How do they work? ==
'''The following is an example taken from the [[Eden Editor: Entity Context Menu]].'''
'''Example:'''
<code>conditionShow = "hoverObjectCanFly * (1 - hoverObjectFlying)";<code\>
Entry will only show if the object you are hovering over can fly and the object isn't flying.
'''Let's take a closer look at the example.'''
hoverObjectCanFly and hoverObjectFlying are two boolean values, which can either be [[true]] (0) or [[false]] (1).
If hoverObjectCanFly is [[true]] (1) and hoverObjectFlying is [[false]] (0) the resulting equation looks like this:
<code>1 * (1-0) = x
1 * 1 = x
x = 1
<code\>
The result will be [[true]] (1), therefore the entry will be shown.

Revision as of 00:04, 21 February 2017


Simple expressions are not as flexible as normal scripts, but they are compiled for a very efficient execution.

Available Operators

randomGen a random value from 0 to a
a factor [x,y] a<=x: 0
a>=y: 1
x<=a<=y: ratio between x and y

Note: works fine even for x>y (calculated as 1-a factor [y,x])

a interpolate [xFrom,xTo,resFrom,resTo] Introduced in ArmA 2 1.05. interpolate result based on input value.

Equivalent to x factor [xFrom,xTo] * (resTo-resFrom) + resFrom

a min b see min
a max b see max
a - b see a-b
a + b see a+b
a * b see a*b
a / b see a/b (for A3, not sure if others)
abs a see abs (introduced in Arma 3 patch 1.68)

Description: a,b can be any simple expression. x,y can be a constant expression only (i.e. expression with a type Number).

Since Arma 3 1.67 the following operators are also available (v ... controller value):

  • abs(v) - absolute value
  • sqr(v) - square value
  • sqrt(v) - square root value
  • pow(v, a) - power
  • x envelope(a,b,c,d) - trapezoid envelope with output <0;1> (substitution for "(v factor(a,b))*(v factor(d,c))"


Simple Expressions - How do they work?

The following is an example taken from the Eden Editor: Entity Context Menu.

Example: conditionShow = "hoverObjectCanFly * (1 - hoverObjectFlying)";<code\> Entry will only show if the object you are hovering over can fly and the object isn't flying.

Let's take a closer look at the example.

hoverObjectCanFly and hoverObjectFlying are two boolean values, which can either be true (0) or false (1).

If hoverObjectCanFly is true (1) and hoverObjectFlying is false (0) the resulting equation looks like this: 1 * (1-0) = x 1 * 1 = x x = 1 <code\> The result will be true (1), therefore the entry will be shown.