params: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "([^ ])\|\$Warning( *)\|" to "$1|$2Warning$2|") |
Lou Montana (talk | contribs) m (Text replacement - " *\| *Example *[0-9]* *= * " to " ") |
||
Line 137: | Line 137: | ||
|x10= <code>[[player]] [[addEventHandler]] ["HitPart", { | |x10= <code>[[player]] [[addEventHandler]] ["HitPart", { | ||
_this [[select]] 0 [[params]] ["_target", "_shooter", "_projectile"]; | _this [[select]] 0 [[params]] ["_target", "_shooter", "_projectile"]; | ||
}];</code> | }];</code> | ||
| [[param]], [[select]], [[set]], [[resize]], [[reverse]], [[in]], [[find]], [[findIf]], [[toArray]], [[toString]], [[forEach]], [[count]], [[deleteAt]], [[deleteRange]], [[append]], [[sort]], [[arrayIntersect]], [[splitString]], [[joinString]], [[isEqualTypeAll]], [[isEqualType]], [[isEqualTypeParams]], [[isEqualTypeArray]], [[isEqualTypeAny]], [[typeName]], [[BIS_fnc_param]] | | [[param]], [[select]], [[set]], [[resize]], [[reverse]], [[in]], [[find]], [[findIf]], [[toArray]], [[toString]], [[forEach]], [[count]], [[deleteAt]], [[deleteRange]], [[append]], [[sort]], [[arrayIntersect]], [[splitString]], [[joinString]], [[isEqualTypeAll]], [[isEqualType]], [[isEqualTypeParams]], [[isEqualTypeArray]], [[isEqualTypeAny]], [[typeName]], [[BIS_fnc_param]] |
Revision as of 16:48, 7 February 2021
Description
- Description:
- Description needed
- Groups:
- VariablesArrays
Syntax
- Syntax:
- Syntax needed
- Parameters:
- [element1, element2,...elementN]: Array - format array
- elementN: String or Array
If String then it is the name of a private variable (must begin with underscore _, e.g. "_myVar")
If Array then it should be one of the following constructs:- [variableName, defaultValue]
- [variableName, defaultValue, expectedDataTypes]
- [variableName, defaultValue, expectedDataTypes, expectedArrayCount]
- variableName: String - name of a private variable (must begin with underscore _, e.g. "_myVar")
- defaultValue: Anything - default value to return if input element is undefined, of the wrong type or of the wrong size (if array).
- expectedDataTypes (Optional): Array of direct Data Types - checks if passed value is one of listed Data Types. If not, default value is used instead. Empty array [] means every data type is accepted.
- expectedArrayCount (Optional): Number or Array - a single size or array of sizes. If passed input value is an array, checks that it has a certain number of elements. If not, default value is used instead. Empty array [] means any size is accepted.
- Return Value:
- Return value needed
Alternative Syntax
- Syntax:
- argument params [element1, element2,...elementN]
- Parameters:
- argument: Anything - A usual array of params is expected. If a non-array argument is passed, it will be converted to 1 element array
- [element1, element2,...elementN]: Array - format array
- elementN: String or Array:
If String then it is the name of a private variable (must begin with underscore _, e.g. "_myVar")
If Array then it should be one of the following constructs:- [variableName, defaultValue]
- [variableName, defaultValue, expectedDataTypes]
- [variableName, defaultValue, expectedDataTypes, expectedArrayCount]
- variableName: String - name of a private variable (must begin with underscore _, e.g. "_myVar")
- defaultValue: Anything - default value to return if input element is undefined, of the wrong type or of the wrong size (if array).
- expectedDataTypes (Optional): Array of direct Data Types - checks if passed value is one of listed Data Types. If not, default value is used instead. Empty array [] means every data type is accepted.
- expectedArrayCount (Optional): Number or Array - a single size or array of sizes. If passed input value is an array, checks that it has a certain number of elements. If not, default value is used instead. Empty array [] means any size is accepted.
- 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] // Script exits, default value was used due to missing value [1, 2, 3] call { if (!params ["_var1", "_var2", ["_var3", true, [true]]]) exitWith { hint str [_var1, _var2, _var3]; }; }; // The hint shows [1,2,true] // Script exits, default value was used due incorrect value type
- Example 6:
[1, "ok", [1, 2, 3]] call { if (!params [ ["_var1", 0, [0]], ["_var2", "", [""]], ["_var3", [0,0,0], [[], objNull, 0], [2,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:
player addEventHandler ["HitPart", { _this select 0 params ["_target", "_shooter", "_projectile"]; }];
Additional Information
- See also:
- See also needed
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
- Posted on November 3, 2016 - 04:07 (UTC)
- Dedmen
-
With a function only taking one Parameter, it doesn't matter whether the parameter is in an array or not:
Example:1 call { params [ ["_number",0, [0]] ]; }; or [1] call { params [ ["_number",0, [0]] ]; };
But when the one Parameter is an array that parameter has to be inside of an array when the function is called
Example:[1,2] call { params [ ["_array", [], [[]], 2] ]; }; // Fails [[1,2]] call { params [ ["_array", [], [[]], 2] ]; }; // Succeeds
- Posted on July 4, 2019 - 16:54 (UTC)
- 7erra
-
It is valid to redefine the _this variable and use params again like this:
[1, 2, [3, 4]] call { params ["_one", "_two", "_this"]; params ["_three", "_four"]; };