params: Difference between revisions
Jump to navigation
Jump to search
Killzone Kid (talk | contribs) (wip) |
Killzone Kid (talk | contribs) (getting ready for monday update) |
||
Line 7: | Line 7: | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| Parses array of params into array of private variables. When used without argument, as shown in syntax | | Parses array of params into array of private variables, similar to [[BIS_fnc_param]]. When used without argument, as shown in main syntax, internal variable "_this", which is usually available inside functions and event handlers, is used as argument. | ||
<br>The values of passed argument array would be assigned to private variables given in the format array and respectful of their order in the array. To skip some values, give an empty string for a private variable name in format array.<br> | <br>The values of passed argument array would be assigned to private variables given in the format array and respectful of their order in the array. To skip some values, give an empty string for a private variable name in format array.<br> | ||
To force variable value to a predefined value when argument is undefined, use [variableName, defaultValue] format. To make sure passed value is of a specific type, supply the desired [[ | To force variable value to a predefined value when argument is undefined, of a wrong type or length, use [variableName, defaultValue] format. To make sure passed value is of a specific type, supply the desired [[Data Types]] values in addition. If input is array, it is also possible to validate the length of the passed array.<br> | ||
If any of the processed input is undefined, of the wrong type or wrong length, default value is used instead. To log these substitutes into ''.rpt'' file, set [[Description.ext#allowFunctionsLog | allowFunctionsLog]] param in [[description.ext]] to 1. | |||
{{warning | W.I.P.}} | {{warning | W.I.P.}} | ||
|= Description | |= Description | ||
Line 23: | Line 23: | ||
<br> [[Array]] could be one of the following constructs: | <br> [[Array]] could be one of the following constructs: | ||
* [variableName, defaultValue] | * [variableName, defaultValue] | ||
* [variableName, defaultValue, | * [variableName, defaultValue, expectedDataTypes] | ||
* [variableName, defaultValue, | * [variableName, defaultValue, expectedDataTypes, expectedArrayLength] | ||
''variableName'': [[String]] - name of a [[private]] variable (must begin with underscore _, e.g. "_myVar") | ''variableName'': [[String]] - name of a [[private]] variable (must begin with underscore _, e.g. "_myVar") | ||
<br> ''defaultValue'': [[Anything]] - | <br> ''defaultValue'': [[Anything]] - check if passed value is defined, if not (or [[nil]]), use this value. | ||
<br> '' | <br> ''expectedDataTypes'': [[Array]] of direct [[Data Types]] - check if passed value is of listed [[Data Types]]. If not, use default value supplied. Empty array [] means every data type is ok. | ||
<br> ''expectedArrayLength'': [[Number]] - if passed value | <br> ''expectedArrayLength'': [[Number]] - check if passed value of type "ARRAY" of a certain length. If not, use default value supplied.|= | ||
| [[Boolean]] - [[ | | [[Boolean]] - [[false]] if error occurred or default value has been used, otherwise [[true]] |= Return value | ||
| s2= argument [[params]] [element1, element2,...elementN] |= Syntax | | s2= argument [[params]] [element1, element2,...elementN] |= Syntax | ||
Line 39: | Line 39: | ||
<br> [[Array]] could be one of the following constructs: | <br> [[Array]] could be one of the following constructs: | ||
* [variableName, defaultValue] | * [variableName, defaultValue] | ||
* [variableName, defaultValue, | * [variableName, defaultValue, expectedDataTypes] | ||
* [variableName, defaultValue, | * [variableName, defaultValue, expectedDataTypes, expectedArrayLength] | ||
''variableName'': [[String]] - name of a [[private]] variable (must begin with underscore _, e.g. "_myVar") | ''variableName'': [[String]] - name of a [[private]] variable (must begin with underscore _, e.g. "_myVar") | ||
<br> ''defaultValue'': [[Anything]] - | <br> ''defaultValue'': [[Anything]] - check if passed value is defined, if not (or [[nil]]), use this value. | ||
<br> '' | <br> ''expectedDataTypes'': [[Array]] of direct [[Data Types]] - check if passed value is of listed [[Data Types]]. If not, use default value supplied. Empty array [] means every data type is ok. | ||
<br> ''expectedArrayLength'': [[Number]] - if passed value | <br> ''expectedArrayLength'': [[Number]] - check if passed value of type "ARRAY" of a certain length. If not, use default value supplied.|= | ||
| r2 = [[Boolean]] - [[ | | r2 = [[Boolean]] - [[false]] if error occurred or default value has been used, otherwise [[true]] |= Return value | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
Line 83: | Line 83: | ||
|x5= <code>[1, 2] [[call]] { | |x5= <code>[1, 2] [[call]] { | ||
[[if]] (![[params]] ["_var1", "_var2", ["_var3", [[true]], [ | [[if]] (![[params]] ["_var1", "_var2", ["_var3", [[true]], <nowiki>[</nowiki>[[true]]]]) [[exitWith]] {}; | ||
[[hint]] [[str]] [_var1, _var2, _var3]; | [[hint]] [[str]] [_var1, _var2, _var3]; | ||
}; | }; | ||
Line 89: | Line 89: | ||
[1, 2, 3] [[call]] { | [1, 2, 3] [[call]] { | ||
[[if]] (![[params]] ["_var1", "_var2", ["_var3", [[true]], | [[if]] (![[params]] ["_var1", "_var2", ["_var3", [[true]], <nowiki>[</nowiki>[[true]]]]) [[exitWith]] {}; | ||
[[hint]] [[str]] [_var1, _var2, _var3]; | [[hint]] [[str]] [_var1, _var2, _var3]; | ||
}; | }; | ||
Line 96: | Line 96: | ||
|x6= <code>[1, "ok", [1, 2, 3]] [[call]] { | |x6= <code>[1, "ok", [1, 2, 3]] [[call]] { | ||
[[if]] (![[params]] [ | [[if]] (![[params]] [ | ||
["_var1", 0, | ["_var1", 0, [0]], | ||
["_var2", "", [ | ["_var2", "", [""]], | ||
["_var3", [0,0,0], | ["_var3", [0,0,0], <nowiki>[</nowiki>[], [[objNull]], 0], 3] | ||
]) [[exitWith]] {}; | ]) [[exitWith]] {}; | ||
[[hint]] "ok"; | [[hint]] "ok"; | ||
Line 105: | Line 105: | ||
[1, 2, [3, 4, 5]] [[call]] { | [1, 2, [3, 4, 5]] [[call]] { | ||
[[if]] (![[params]] ["_var1", "_var2", ["_var3", [], [[ | [[if]] (![[params]] ["_var1", "_var2", ["_var3", [], <nowiki>[</nowiki>[], [[objNull]], 0], 0]]) [[exitWith]] {}; | ||
[[hint]] "ok"; | [[hint]] "ok"; | ||
}; | }; | ||
Line 111: | Line 111: | ||
|x7= <code>[[position]] [[player]] [[params]] ["_x", "_y"]; | |x7= <code>[[position]] [[player]] [[params]] ["_x", "_y"]; | ||
[[player]] [[setPos]] [_x, _y, 100];</code> |= | [[player]] [[setPos]] [_x, _y, 100];</code> |= | ||
|x8= <code>[1, 2, 3, [4, 5, 6]] [[call]] { | |x8= <code>[1, 2, 3, [4, 5, 6]] [[call]] { | ||
[[params]] ["_one", "_two", "_three"]; | [[params]] ["_one", "_two", "_three"]; | ||
_this [[select]] 3 [[params]] ["_four", "_five", "_six"]; | _this [[select]] 3 [[params]] ["_four", "_five", "_six"]; | ||
};</code> |= | };</code> |= | ||
|x9= <code>{ | |x9= <code>{ | ||
_x [[params]] ["_group", "_index"]; | _x [[params]] ["_group", "_index"]; |
Revision as of 00:13, 6 June 2015
Description
- Description:
- Parses array of params into array of private variables, similar to BIS_fnc_param. When used without argument, as shown in main syntax, internal variable "_this", which is usually available inside functions and event handlers, is used as argument.
The values of passed argument array would be assigned to private variables given in the format array and respectful of their order in the array. To skip some values, give an empty string for a private variable name in format array.
To force variable value to a predefined value when argument is undefined, of a wrong type or length, use [variableName, defaultValue] format. To make sure passed value is of a specific type, supply the desired Data Types values in addition. If input is array, it is also possible to validate the length of the passed array.
If any of the processed input is undefined, of the wrong type or wrong length, default value is used instead. To log these substitutes into .rpt file, set allowFunctionsLog param in description.ext to 1. - Groups:
- Uncategorised
Syntax
- Syntax:
- params [element1, element2,...elementN]
- Parameters:
- [element1, element2,...elementN]: Array - format array
- elementN: String or Array
String is the name of a private variable (must begin with underscore _, e.g. "_myVar")
Array could be one of the following constructs:- [variableName, defaultValue]
- [variableName, defaultValue, expectedDataTypes]
- [variableName, defaultValue, expectedDataTypes, expectedArrayLength]
defaultValue: Anything - check if passed value is defined, if not (or nil), use this value.
expectedDataTypes: Array of direct Data Types - check if passed value is of listed Data Types. If not, use default value supplied. Empty array [] means every data type is ok.
expectedArrayLength: Number - check if passed value of type "ARRAY" of a certain length. If not, use default value supplied. - Return Value:
- Boolean - false if error occurred or default value has been used, otherwise true
Alternative Syntax
- Syntax:
- argument params [element1, element2,...elementN]
- Parameters:
- argument: Anything - A usual array of params is expected. If a non-array value is passed, it will be converted to 1 element array
- [element1, element2,...elementN]: Array - format array
- elementN: String or Array:
String is the name of a private variable (must begin with underscore _, e.g. "_myVar")
Array could be one of the following constructs:- [variableName, defaultValue]
- [variableName, defaultValue, expectedDataTypes]
- [variableName, defaultValue, expectedDataTypes, expectedArrayLength]
defaultValue: Anything - check if passed value is defined, if not (or nil), use this value.
expectedDataTypes: Array of direct Data Types - check if passed value is of listed Data Types. If not, use default value supplied. Empty array [] means every data type is ok.
expectedArrayLength: Number - check if passed value of type "ARRAY" of a certain length. If not, use default value supplied. - Return Value:
- Boolean - false if error occurred or default value has been used, otherwise true
Examples
- Example 1:
[1, 2, 3] call { private ["_one", "_two", "_three"]; _one = _this select 0; _two = _this select 1; _three = _this select 2; // ..... }; // Same as above, only using params [1, 2, 3] call { params ["_one", "_two", "_three"]; // ..... };
- Example 2:
[123] call { params ["_myvar"]; }; // Below would produce the same result as above 123 call { params ["_myvar"]; };
- Example 3:
position player params ["", "", "_z"]; if (_z > 10) then { hint "YOU ARE FLYING!"; };
- Example 4:
[1, nil, 2] params ["_var1", "_var2", "_var3"]; // All 3 variables are made private but only _var1 and _var3 are defined [1, nil, 2] params ["_var1", ["_var2", 23], "_var3"]; // All 3 variables are private and defined
- Example 5:
[1, 2] call { if (!params ["_var1", "_var2", ["_var3", true, [true]]) exitWith {}; hint str [_var1, _var2, _var3]; }; // The hint shows [1,2,true] [1, 2, 3] call { if (!params ["_var1", "_var2", ["_var3", true, [true]]) exitWith {}; hint str [_var1, _var2, _var3]; }; // Error! Type Number, expected BOOL
- Example 6:
[1, "ok", [1, 2, 3]] call { if (!params [ ["_var1", 0, [0]], ["_var2", "", [""]], ["_var3", [0,0,0], [[], objNull, 0], 3] ]) exitWith {}; hint "ok"; }; // Passes validation [1, 2, [3, 4, 5]] call { if (!params ["_var1", "_var2", ["_var3", [], [[], objNull, 0], 0]]) exitWith {}; hint "ok"; }; // Fails, because passed array is expected to be of 0 length, i.e. empty
- Example 7:
position player params ["_x", "_y"]; player setPos [_x, _y, 100];
- Example 8:
[1, 2, 3, [4, 5, 6]] call { params ["_one", "_two", "_three"]; _this select 3 params ["_four", "_five", "_six"]; };
- Example 9:
{ _x params ["_group", "_index"]; // ..... } forEach waypoints group player; fn_someFnc = { params ["_position", ["_direction", 0], ["_name", ""]]; // Extract the x, y, and z from "_position" array: _position params ["_x", "_y", "_z"]; // ..... }; [position player, direction player, name player] call fn_someFnc;
- Example 10:
targ addEventHandler ["HitPart", { _this select 0 params ["_target", "_shooter", "_projectile"]; }];
Additional Information
- See also:
- selectsetresizereverseinfindtoArraytoStringforEachcountdeleteAtdeleteRangeappendsortBIS_fnc_param
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
[[Category:Introduced with arma3dev version 1.47]][[ Category: arma3dev: New Scripting Commands | PARAMS]][[ Category: arma3dev: Scripting Commands | PARAMS]]