params: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
(Undo revision 257652 by Ilias38rus (talk))
Tag: Undo
No edit summary
Line 181: Line 181:
     params ["_three", "_four"];
     params ["_three", "_four"];
};</code>
};</code>
</dd>
</dl>
<dl class="command_description">
<dt></dt>
<dd class="notedate">Posted on May 19, 2021 - 02:13 (UTC)</dd>
<dt class="note">[[User:Ilias38rus|Ilias38rus]]</dt>
<dd class="note">
It doesn't work within frame.
<code><nowiki>[]spawn{
    v = [player];
    systemChat str v;
    addMissionEventHandler ["EachFrame", {
      removeMissionEventHandler ["EachFrame", _thisEventHandler];
       
      v params [_v];
     
      systemChat str [v,_v];  //result: [[player_1], any]
    }];
};</nowiki></code>
</dd>
</dd>
</dl>
</dl>

Revision as of 04:13, 19 May 2021

Hover & click on the images for description

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:
paramselectsetresizereverseinfindfindIftoArraytoStringforEachcountdeleteAtdeleteRangeappendsortarrayIntersectsplitStringjoinStringisEqualTypeAllisEqualTypeisEqualTypeParamsisEqualTypeArrayisEqualTypeAnytypeNameBIS_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
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"]; };


Posted on May 19, 2021 - 02:13 (UTC)
Ilias38rus
It doesn't work within frame. []spawn{ v = [player]; systemChat str v; addMissionEventHandler ["EachFrame", { removeMissionEventHandler ["EachFrame", _thisEventHandler]; v params [_v]; systemChat str [v,_v]; //result: [[player_1], any] }]; };