Expressions: Difference between revisions
(Created page with "== Functions == <syntaxhighlight> test( test expression, if true, if false ) ?( test expression, if true, if false ) exists( value ) min( value 1, value 2 ) max( value 1, valu...") |
(Added temporary notes to the Logic section, based on my personal knowledge. Would be good to have these all verified with their exact details.) |
||
(11 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
You can use expressions as input parameter to reduce the amount of logic entities used. Expressions in input parameter start with $$= | |||
For example, using this as input parameter: $$='Health: ('..!activator.m_iHealth..'/'..!activator.m_iMaxHealth..')' will set health information as input parameter. | |||
Expressions are calculated during input execution. | |||
Do not put double quote (i.e. " ) inside expression, but you are allowed to use commas (i.e. , ). | |||
As an admin, sig_expression "expression" command in console can be used to test expressions. (i.e: sig_expression "2+2" echoes Result: 4) | |||
== Syntax == | |||
{| class="wikitable" | |||
|+ | |||
! | |||
! | |||
!Example | |||
|- | |||
|'AADSD' | |||
|literal string | |||
|'AADSD' | |||
|- | |||
|4.3 | |||
|number | |||
|4.3 | |||
|- | |||
|[1 4 5.5] | |||
|vector | |||
|[1 4 5.5] | |||
|- | |||
|entityname.variable | |||
|access entity [https://raw.githubusercontent.com/powerlord/tf2-data/master/netprops.txt sendprop], [https://raw.githubusercontent.com/powerlord/tf2-data/master/datamaps.txt datamap], or custom variable | |||
|!activator.m_iHealth + 41 | |||
|- | |||
| + - * / % | |||
|add, subtract, multiply, divide, modulo operators | |||
|5 + 2 | |||
|- | |||
|.. | |||
|join strings | |||
|'This is ' .. 2 .. ' awesome' | |||
|- | |||
|> >= < <= == != | |||
|comparison operators | |||
|test(7 > 3, 1, 3) | |||
|- | |||
|() | |||
|parentheses, expression inside is calculated before others | |||
|(4 + 3) * 2 | |||
|- | |||
|function(param 1, param 2 ...) | |||
|function | |||
|min(entity.m_iHealth, entity2.m_iHealth) | |||
|- | |||
|<nowiki>&& ||</nowiki> | |||
|and, or operators | |||
|entity.m_iHealth > 4 && entity2.m_iHealth < 2 | |||
|- | |||
|<nowiki>& | ^</nowiki> | |||
|and, or, xor binary operators | |||
| | |||
|- | |||
|>> << | |||
|right bit shift, left bit shift | |||
| | |||
|- | |||
|pi | |||
|pi number | |||
|pi * pi | |||
|- | |||
|degtorad, radtodeg | |||
|convert angle between degrees and radiants | |||
|9 * degtorad | |||
|- | |||
|true, false | |||
|logical true/false | |||
| | |||
|} | |||
Values are automatically converted when types of left and right sides of operators differ. | |||
For example, [1 4 5] + 4 will automatically convert 4 to [4 4 4] vector. | |||
\' escapes single quotes inside literal string. | |||
== Functions == | == Functions == | ||
=== Logic === | |||
<syntaxhighlight> | <syntaxhighlight> | ||
test( test expression, if true, if false ) | test( test expression, if true, if false ) | ||
?( test expression, if true, if false ) | ?( test expression, if true, if false ) | ||
- Tests an expression for true or false, then returns a specified value based on that. | |||
exists( value ) | exists( value ) | ||
- Checks whether a value exists, then returns true or false. [Needs verification] | |||
not( value ) | |||
!( value ) | |||
~( value ) | |||
- Inverts a value - f.e. from false to true. [Needs verification] | |||
case( test value, default, case1, [case2] ... ) | |||
- Tests a value, and compares it to a list of cases; returns a case number. [Needs verification] | |||
type( value ) | |||
- Returns the type of the value: string, int, etc. [Needs verification] | |||
</syntaxhighlight> | |||
=== Entity === | |||
<syntaxhighlight lang="c"> | |||
playeratindex( index ) | |||
entityindex( entity ) | |||
playeritematslot( entity, slot ) | |||
attribute( player or item, 'attribute name' ) // attribute name must be in single quotes | |||
</syntaxhighlight> | |||
=== Math === | |||
<syntaxhighlight> | |||
min( value 1, value 2 ) | min( value 1, value 2 ) | ||
max( value 1, value 2 ) | max( value 1, value 2 ) | ||
clamp( input value, minimum value, maximum value ) | clamp( input value, minimum value, maximum value ) | ||
remap( input value, from min, from max, to min, to max ) | remap( input value, from min, from max, to min, to max ) | ||
remapclamped( input value, from min, from max, to min, to max ) | remapclamped( input value, from min, from max, to min, to max ) | ||
sqrt( value ) | sqrt( value ) | ||
pow( base, exponent ) | pow( base, exponent ) | ||
Line 34: | Line 126: | ||
randomint( minimum value, maximum value ) | randomint( minimum value, maximum value ) | ||
randomfloat( minimum value, maximum value ) | randomfloat( minimum value, maximum value ) | ||
int( value ) | |||
float( value ) | |||
sin( angle in radians ) | sin( angle in radians ) | ||
cos( angle in radians ) | cos( angle in radians ) | ||
Line 41: | Line 134: | ||
atan2( x, y ) | atan2( x, y ) | ||
abs( value ) | abs( value ) | ||
</syntaxhighlight> | |||
=== Vector === | |||
<syntaxhighlight> | |||
length( vector ) | |||
distance( vector 1, vector 2 ) | |||
dotproduct( vector 1, vector 2 ) | |||
crossproduct( vector 1, vector 2 ) | |||
rotate( input vector, rotation angles ) | |||
normalize( vector ) | |||
toangles( vector ) | |||
toforwardvector( angles ) | |||
vector( string or X coordinate, [Y coordinate], [Z coordinate] ) | |||
x( vector ) | |||
y( vector ) | |||
z( vector ) | |||
</syntaxhighlight> | |||
=== Strings === | |||
<syntaxhighlight> | |||
string( value ) | |||
stringpad( value, min digits, num digits after decimal point ) | |||
charat( string, pos ) | charat( string, pos ) | ||
substr( string, pos, length ) | substr( string, pos, length ) | ||
Line 53: | Line 163: | ||
find( haystack, needle ) | find( haystack, needle ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:Misc Additions]] |
Latest revision as of 12:11, 22 July 2022
You can use expressions as input parameter to reduce the amount of logic entities used. Expressions in input parameter start with $$=
For example, using this as input parameter: $$='Health: ('..!activator.m_iHealth..'/'..!activator.m_iMaxHealth..')' will set health information as input parameter.
Expressions are calculated during input execution.
Do not put double quote (i.e. " ) inside expression, but you are allowed to use commas (i.e. , ).
As an admin, sig_expression "expression" command in console can be used to test expressions. (i.e: sig_expression "2+2" echoes Result: 4)
Syntax[edit | edit source]
Example | ||
---|---|---|
'AADSD' | literal string | 'AADSD' |
4.3 | number | 4.3 |
[1 4 5.5] | vector | [1 4 5.5] |
entityname.variable | access entity sendprop, datamap, or custom variable | !activator.m_iHealth + 41 |
+ - * / % | add, subtract, multiply, divide, modulo operators | 5 + 2 |
.. | join strings | 'This is ' .. 2 .. ' awesome' |
> >= < <= == != | comparison operators | test(7 > 3, 1, 3) |
() | parentheses, expression inside is calculated before others | (4 + 3) * 2 |
function(param 1, param 2 ...) | function | min(entity.m_iHealth, entity2.m_iHealth) |
&& || | and, or operators | entity.m_iHealth > 4 && entity2.m_iHealth < 2 |
& | ^ | and, or, xor binary operators | |
>> << | right bit shift, left bit shift | |
pi | pi number | pi * pi |
degtorad, radtodeg | convert angle between degrees and radiants | 9 * degtorad |
true, false | logical true/false |
Values are automatically converted when types of left and right sides of operators differ.
For example, [1 4 5] + 4 will automatically convert 4 to [4 4 4] vector.
\' escapes single quotes inside literal string.
Functions[edit | edit source]
Logic[edit | edit source]
test( test expression, if true, if false )
?( test expression, if true, if false )
- Tests an expression for true or false, then returns a specified value based on that.
exists( value )
- Checks whether a value exists, then returns true or false. [Needs verification]
not( value )
!( value )
~( value )
- Inverts a value - f.e. from false to true. [Needs verification]
case( test value, default, case1, [case2] ... )
- Tests a value, and compares it to a list of cases; returns a case number. [Needs verification]
type( value )
- Returns the type of the value: string, int, etc. [Needs verification]
Entity[edit | edit source]
playeratindex( index )
entityindex( entity )
playeritematslot( entity, slot )
attribute( player or item, 'attribute name' ) // attribute name must be in single quotes
Math[edit | edit source]
min( value 1, value 2 )
max( value 1, value 2 )
clamp( input value, minimum value, maximum value )
remap( input value, from min, from max, to min, to max )
remapclamped( input value, from min, from max, to min, to max )
sqrt( value )
pow( base, exponent )
floor( value )
ceil( value )
randomint( minimum value, maximum value )
randomfloat( minimum value, maximum value )
int( value )
float( value )
sin( angle in radians )
cos( angle in radians )
tan( angle in radians )
atan( value )
atan2( x, y )
abs( value )
Vector[edit | edit source]
length( vector )
distance( vector 1, vector 2 )
dotproduct( vector 1, vector 2 )
crossproduct( vector 1, vector 2 )
rotate( input vector, rotation angles )
normalize( vector )
toangles( vector )
toforwardvector( angles )
vector( string or X coordinate, [Y coordinate], [Z coordinate] )
x( vector )
y( vector )
z( vector )
Strings[edit | edit source]
string( value )
stringpad( value, min digits, num digits after decimal point )
charat( string, pos )
substr( string, pos, length )
substring( string, pos, length )
startswith( string, prefix )
endswith( string, suffix )
find( haystack, needle )