Config Parser: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(it's a start...)
 
(used more realistic examples)
Line 8: Line 8:
Allows you to assign values to variables. These variables can then be used to in other calculations, or output via the __EVAL macro.
Allows you to assign values to variables. These variables can then be used to in other calculations, or output via the __EVAL macro.


<code>__EXEC (_y = _y + 1);
<code>__EXEC (_x = .345);
__EXEC (_str = format["daytime: %1",dayTime])</code>
__EXEC (_y = _y + 1);
__EXEC (_str = format["name: %1",_name])</code>




__EXEC terminates at the first closed parenthesis "''')'''" it encounters, so expressions like the following will cause an error:
__EXEC terminates at the first closed parenthesis "''')'''" it encounters, so expressions like the following will cause an error:


<code>__EXEC (_val = (_this select 0)*10); // ILLEGAL!</code>
<code>__EXEC (_val = (_arr select 0)*10); // ILLEGAL!</code>


==__EVAL==
==__EVAL==

Revision as of 19:11, 5 November 2008

Introduction

(needed)


Parser commands/macros

__EXEC

Allows you to assign values to variables. These variables can then be used to in other calculations, or output via the __EVAL macro.

__EXEC (_x = .345); __EXEC (_y = _y + 1); __EXEC (_str = format["name: %1",_name])


__EXEC terminates at the first closed parenthesis ")" it encounters, so expressions like the following will cause an error:

__EXEC (_val = (_arr select 0)*10); // ILLEGAL!

__EVAL

With this macro expressions can be evaluated, including previously assigned internal variables.

y = __EVAL (_y); text = __EVAL (_str1 + _str2);


Unlike the __EXEC command, __EVAL can contain other parentheses, making more complex, and even conditional operations possible: x = __EVAL (if (_idx>5) then {0} else {.5});


Be aware though, that if these evaluations are used in a mission's description.ext, that at that point the mission information is not available yet (i.e. the mission objects have not been created yet). (At least in VBS2 this is the case.)