Posted: . At: 2:04 PM. This was 5 years ago. Post ID: 13130
Page permalink. WordPress uses cookies, or tiny pieces of information stored on your computer, to verify who you are. There are cookies for logged in users and for commenters.
These cookies expire two weeks after they are set.



Sponsored



Declaring global variables in Arma 3 scripting.


Declaring a global variable in Arma 3 in very easy, this one is for defining the max radius of a battle zone.

Declare it at the initial phase of your mission scripting like this.

missionNamespace setVariable ['PARAMS_AOSize',1000,FALSE]; // Radius of main AO.

Then it may be used where ever the value is required for a script.

_randomPos = [Loc, 0, PARAMS_AOSize, 5, 0, 0.4, 0, [], Loc] call BIS_fnc_findSafePos;

This means that you do not need to type a value over and over again, it would be a pain if it needed to be changed, this allows the user to define it once and then have the variable everywhere else.

Just like this example, I am using the variable to define the size of an area to search for a position.

_grp1 = createGroup east;
private _CarAmount = 1;
for "_i" from 1 to 3 do {
	private ["_car", "_turret"];
	_randomPos = [Loc, 0, PARAMS_AOSize, 5, 0, 0.4, 0, [], Loc] call BIS_fnc_findSafePos;
	_vehicleType = selectRandom ["LOP_BH_Landrover_M2","LOP_BH_Landrover_SPG9","LOP_BH_Nissan_PKM","LOP_BH_Offroad_M2","rhsgref_ins_uaz_spg9","rhsgref_ins_uaz_dshkm","rhsgref_ins_uaz_ags","rhs_tigr_sts_3camo_msv","O_Truck_03_transport_F"];
 
	_grp1 = createGroup east;
	switch (_vehicleType) do {
		case "rhs_kamaz5350_flatbed_msv": {
			_turretType = selectRandom ["rhs_KORD_high_MSV","rhsgref_ins_DSHKM","rhsgref_ins_SPG9M","rhsgref_ins_Igla_AA_pod","rhs_Kornet_9M133_2_vdv"];
			_car = createVehicle [_vehicleType, _randomPos, [], 5, "NONE"];
			_turret = createVehicle [_turretType, _randomPos, [], 5, "NONE"];
			_car setDir 0;
			_turret attachTo [_car,[0,-3.4,0.6]];
			_turret setDir 180;
			createvehiclecrew _car;
			(crew _car) join _grp1;
			createvehiclecrew _turret;
			(crew _turret) join _grp1;
			_turret lock 3;
			_turret allowCrewInImmobile true;
		};
		default {
			_car = createVehicle [_vehicleType, _randomPos, [], 5, "NONE"];
			createvehiclecrew _car;
			(crew _car) join _grp1;
		};
	};
	_grp1 setGroupIdGlobal [format ['AO-MRAP/Car-%1', _CarAmount]];
	_CarAmount = _CarAmount + 1;
	_car lock 3;
	_car allowCrewInImmobile true;
	[_grp1, Loc, 600] call BIS_fnc_taskPatrol;
	sleep 0.621;
};

This is a better way to program an Arma 3 mission than just having the numbers everywhere. And if a certain value is changed by a script, you can use a variable to store the old value if you need to change it back later with setVariable.

Like this, getting the number plate of a vehicle in Arma 3, and storing the value in a variable.

missionNamespace setVariable ['LicensePlate',getPlateNumber (_this select 2),FALSE];

Then setting it back after we are done with the vehicle.

(_this select 2) setPlateNumber LicensePlate;

This is a very powerful part of scripting in Arma 3. This allows communicating values from one script to another. A script variable that starts with an underscore like this: _car is only visible in the script using it. But a variable without this is always visible.

One last trick, get the player`s height above sea level.

cuttext format[" Your current height: %1",(getPosASL player) select 2];

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.