Difference between revisions of "createVehicle"

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "user= *dreadedentity * " to "user= DreadedEntity ")
m (Some wiki formatting)
 
(28 intermediate revisions by the same user not shown)
Line 35: Line 35:
  
 
{{Feature|arma3|To avoid vehicle randomisation in {{arma3}}, set the {{hl|BIS_enableRandomization}} variable immediately after creating the vehicle:
 
{{Feature|arma3|To avoid vehicle randomisation in {{arma3}}, set the {{hl|BIS_enableRandomization}} variable immediately after creating the vehicle:
<code>[[private]] _vehicle {{=}} "C_Offroad_01_F" [[createVehicle]] [[position]] [[player]];
+
<sqf>private _vehicle = "C_Offroad_01_F" createVehicle position player;
_vehicle [[setVariable]] ["BIS_enableRandomization", [[false]]];</code>
+
_vehicle setVariable ["BIS_enableRandomization", false];</sqf>
 
Check [[Vehicle Customization (VhC)]] page for more information and settings.}}
 
Check [[Vehicle Customization (VhC)]] page for more information and settings.}}
  
Line 65: Line 65:
 
|r2= [[Object]] - created vehicle or [[objNull]] if failed
 
|r2= [[Object]] - created vehicle or [[objNull]] if failed
  
|x1= <code>_jeep = "Jeep" [[createVehicle]] [[position]] [[player]];</code>
+
|x1= <sqf>_jeep = "Jeep" createVehicle position player;</sqf>
  
|x2= <code>_heli = "AH1Z" [[createVehicle]] [[getMarkerPos]] "hspawn";</code>
+
|x2= <sqf>_heli = "AH1Z" createVehicle getMarkerPos "hspawn";</sqf>
  
|x3= <code>_veh = [[createVehicle]] ["ah1w", [[position]] [[player]], [], 0, "FLY"];</code>
+
|x3= <sqf>_veh = createVehicle ["ah1w", position player, [], 0, "FLY"];</sqf>
  
|x4= <code>_veh = [[createVehicle]] ["2S6M_Tunguska", [[getMarkerPos]] "marker1", ["marker2", "marker3"], 0, "NONE"];</code>
+
|x4= <sqf>_veh = createVehicle ["2S6M_Tunguska", getMarkerPos "marker1", ["marker2", "marker3"], 0, "NONE"];</sqf>
  
 
|x5= Objects such as
 
|x5= Objects such as
Line 78: Line 78:
 
* "test_EmptyObjectForSmoke"
 
* "test_EmptyObjectForSmoke"
 
create additional emitters, which are stored in "effects" variable on the object. Since {{arma3}} v1.72 these emitters are automatically deleted when object is deleted
 
create additional emitters, which are stored in "effects" variable on the object. Since {{arma3}} v1.72 these emitters are automatically deleted when object is deleted
<code>[] [[spawn]]
+
<sqf>[] spawn
 
{
 
{
[[private]] _fire = "test_EmptyObjectForFireBig" [[createVehicle]] [[position]] [[player]];
+
private _fire = "test_EmptyObjectForFireBig" createVehicle position player;
[[sleep]] 5;
+
sleep 5;
[[deleteVehicle]] _fire;
+
deleteVehicle _fire;
};</code>
+
};</sqf>
  
 
|x6= The following explosives (ending with {{hl|_Scripted}}) can be set off by applying [[setDamage]] 1 to them for ease of scripting:
 
|x6= The following explosives (ending with {{hl|_Scripted}}) can be set off by applying [[setDamage]] 1 to them for ease of scripting:
Line 89: Line 89:
 
* "SatchelCharge_Remote_Ammo_Scripted"
 
* "SatchelCharge_Remote_Ammo_Scripted"
 
* "ClaymoreDirectionalMine_Remote_Ammo_Scripted"
 
* "ClaymoreDirectionalMine_Remote_Ammo_Scripted"
<code>_claymore = "ClaymoreDirectionalMine_Remote_Ammo_Scripted" [[createVehicle]] [[position]] [[player]];
+
<sqf>_claymore = "ClaymoreDirectionalMine_Remote_Ammo_Scripted" createVehicle position player;
_claymore [[spawn]]
+
_claymore spawn
 
{
 
{
[[sleep]] 5;
+
sleep 5;
_this [[setDamage]] 1;
+
_this setDamage 1;
};</code>
+
};</sqf>
  
 
|x7= Add inventory to objects without inventory:
 
|x7= Add inventory to objects without inventory:
<code>_boxes = "Land_Pallet_MilBoxes_F" [[createVehicle]] [[position]] [[player]];
+
<sqf>_boxes = "Land_Pallet_MilBoxes_F" createVehicle position player;
_cargo = "Supply500" [[createVehicle]] [0,0,0];
+
_cargo = "Supply500" createVehicle [0,0,0];
_cargo [[attachTo]] [_boxes, [0,0,0.85]];
+
_cargo attachTo [_boxes, [0,0,0.85]];
  
{{cc|optional for objects that can take damage}}
+
// optional for objects that can take damage
_boxes [[addEventHandler]] ["Killed",
+
_boxes addEventHandler ["Killed",
 
{
 
{
 
{
 
{
[[detach]] _x,
+
detach _x,
[[deleteVehicle]] _x;
+
deleteVehicle _x;
 
}
 
}
[[forEach]] [[attachedObjects]] (_this [[select]] 0);
+
forEach attachedObjects (_this select 0);
}];</code>
+
}];</sqf>
  
 
|x8= Drop player's weapon:
 
|x8= Drop player's weapon:
<code>_wh = "GroundWeaponHolder_Scripted" [[createVehicle]] [[position]] [[player]];
+
<sqf>_wh = "GroundWeaponHolder_Scripted" createVehicle position player;
[[player]] [[action]] ["DropWeapon", _wh, [[currentWeapon]] [[player]]];</code>
+
player action ["DropWeapon", _wh, currentWeapon player];</sqf>
  
 
|x9= The following weapon holders (ending with ''_Scripted'') do '''not''' auto-delete when empty. It is up to the mission maker to take care of these:
 
|x9= The following weapon holders (ending with ''_Scripted'') do '''not''' auto-delete when empty. It is up to the mission maker to take care of these:
Line 119: Line 119:
 
* "WeaponHolderSimulated_Scripted"
 
* "WeaponHolderSimulated_Scripted"
 
* "Weapon_Empty" (a special weaponholder that displays only a single weapon, even if it contains magazines for this weapon)
 
* "Weapon_Empty" (a special weaponholder that displays only a single weapon, even if it contains magazines for this weapon)
<code>[[private]] _weaponHolder = [[createVehicle]] ["Weapon_Empty", [[getPosATL]] [[player]], [], 0, "CAN_COLLIDE"];
+
<sqf>private _weaponHolder = createVehicle ["Weapon_Empty", getPosATL player, [], 0, "CAN_COLLIDE"];
_weaponHolder [[addWeaponCargo]] ["arifle_Katiba_F", 1];
+
_weaponHolder addWeaponCargo ["arifle_Katiba_F", 1];
[[hint]] "You have 5 seconds to grab this weapon";
+
hint "You have 5 seconds to grab this weapon";
[[sleep]] 5;
+
sleep 5;
[[deleteVehicle]] _weaponHolder;
+
deleteVehicle _weaponHolder;</sqf>
</code>
 
  
 
|seealso= [[createVehicleLocal]] [[create3DENEntity]] [[createVehicleCrew]] [[createAgent]] [[createTrigger]] [[createUnit]] [[createMine]] [[deleteVehicle]] [[createGroup]] [[createCenter]] [[setVehiclePosition]]
 
|seealso= [[createVehicleLocal]] [[create3DENEntity]] [[createVehicleCrew]] [[createAgent]] [[createTrigger]] [[createUnit]] [[createMine]] [[deleteVehicle]] [[createGroup]] [[createCenter]] [[setVehiclePosition]]
Line 152: Line 151:
 
|timestamp= 20190810091000
 
|timestamp= 20190810091000
 
|text= The main syntax creates vehicles at ground level ignoring the Z in ''pos'' and is also faster than the alternative syntax.
 
|text= The main syntax creates vehicles at ground level ignoring the Z in ''pos'' and is also faster than the alternative syntax.
<code>"vehclass" [[createVehicle]] ''pos'';</code> This is equivalent to <code>[[createVehicle]] ["vehclass", [''pos'' [[select]] 0, ''pos'' [[select]] 1, 0], [], 0, "NONE"];</code>
+
<sqf>"vehclass" createVehicle pos;</sqf> This is equivalent to <sqf>createVehicle ["vehclass", [pos select 0, pos select 1, 0], [], 0, "NONE"];</sqf>
 
}}
 
}}
  
Line 159: Line 158:
 
|timestamp= 20220313172236
 
|timestamp= 20220313172236
 
|text= Objects are created with a [[vectorUp]] of [[surfaceNormal|terrain surface normal]]. If you are creating new buildings to add to the map, you will probably want to call [[setVectorUp]] on the newly-spawned object.
 
|text= Objects are created with a [[vectorUp]] of [[surfaceNormal|terrain surface normal]]. If you are creating new buildings to add to the map, you will probably want to call [[setVectorUp]] on the newly-spawned object.
<code> _veh = createVehicle [etc...];
+
<sqf>
_veh setVectorUp [0,0,1];
+
_veh = createVehicle [etc...];
</code>
+
_veh setVectorUp [0,0,1];
 +
</sqf>
 
}}
 
}}

Latest revision as of 14:57, 22 May 2022

Hover & click on the images for description

Description

Description:
Creates an empty object of given classname type. See Arma 3 Assets / Arma 3: createVehicle/vehicles, or CfgVehicles for earlier games.
Arma 3
To avoid vehicle randomisation in Arma 3, set the BIS_enableRandomization variable immediately after creating the vehicle:

private _vehicle = "C_Offroad_01_F" createVehicle position player; _vehicle setVariable ["BIS_enableRandomization", false];

Check Vehicle Customization (VhC) page for more information and settings.
Groups:
Object Manipulation

Syntax

Syntax:
type createVehicle position
Parameters:
type: String - vehicle/object className
position: Array format Position - desired placement position. If the exact position is occupied, nearest empty position is used.
Return Value:
Object

Alternative Syntax

Syntax:
createVehicle [type, position, markers, placement, special]
Parameters:
type: String - vehicle/object className
position: Object; Array format Position2D or PositionATL (PositionAGL if watercraft or amphibious) - desired placement position
markers: Array of Strings - (Optional, default []) if the markers array contains any markers, the position is randomly picked from array of given markers plus desired placement position. If any of the markers were given z coordinate with setMarkerPos, the vehicle will also be created at given z coordinate.
placement: Number - (Optional, default 0) the vehicle is placed inside a circle with given position as center and placement as its radius.
special: String - (Optional, default "NONE") can be one of the following:
  • "NONE" - will look for suitable empty position near given position (subject to other placement params) before placing vehicle there.
  • "CAN_COLLIDE" - places vehicle at given position (subject to other placement params), without checking if others objects can cross its 3D model.
  • "FLY" - if vehicle is capable of flying and has crew, it will be made airborne at default height.
If special is "" or not specified, default "NONE" is used.
Return Value:
Object - created vehicle or objNull if failed

Examples

Example 1:
Example 2:
_heli = "AH1Z" createVehicle getMarkerPos "hspawn";
Example 3:
_veh = createVehicle ["ah1w", position player, [], 0, "FLY"];
Example 4:
_veh = createVehicle ["2S6M_Tunguska", getMarkerPos "marker1", ["marker2", "marker3"], 0, "NONE"];
Example 5:
Objects such as
  • "test_EmptyObjectForBubbles"
  • "test_EmptyObjectForFireBig"
  • "test_EmptyObjectForSmoke"
create additional emitters, which are stored in "effects" variable on the object. Since Arma 3 v1.72 these emitters are automatically deleted when object is deleted
[] spawn { private _fire = "test_EmptyObjectForFireBig" createVehicle position player; sleep 5; deleteVehicle _fire; };
Example 6:
The following explosives (ending with _Scripted) can be set off by applying setDamage 1 to them for ease of scripting:
  • "DemoCharge_Remote_Ammo_Scripted"
  • "SatchelCharge_Remote_Ammo_Scripted"
  • "ClaymoreDirectionalMine_Remote_Ammo_Scripted"
_claymore = "ClaymoreDirectionalMine_Remote_Ammo_Scripted" createVehicle position player; _claymore spawn { sleep 5; _this setDamage 1; };
Example 7:
Add inventory to objects without inventory:
_boxes = "Land_Pallet_MilBoxes_F" createVehicle position player; _cargo = "Supply500" createVehicle [0,0,0]; _cargo attachTo [_boxes, [0,0,0.85]]; // optional for objects that can take damage _boxes addEventHandler ["Killed", { { detach _x, deleteVehicle _x; } forEach attachedObjects (_this select 0); }];
Example 8:
Drop player's weapon:
_wh = "GroundWeaponHolder_Scripted" createVehicle position player; player action ["DropWeapon", _wh, currentWeapon player];
Example 9:
The following weapon holders (ending with _Scripted) do not auto-delete when empty. It is up to the mission maker to take care of these:
  • "GroundWeaponHolder_Scripted"
  • "WeaponHolderSimulated_Scripted"
  • "Weapon_Empty" (a special weaponholder that displays only a single weapon, even if it contains magazines for this weapon)
private _weaponHolder = createVehicle ["Weapon_Empty", getPosATL player, [], 0, "CAN_COLLIDE"]; _weaponHolder addWeaponCargo ["arifle_Katiba_F", 1]; hint "You have 5 seconds to grab this weapon"; sleep 5; deleteVehicle _weaponHolder;

Additional Information

See also:
createVehicleLocal create3DENEntity createVehicleCrew createAgent createTrigger createUnit createMine deleteVehicle createGroup createCenter setVehiclePosition

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 Aug 22, 2015 - 13:04 (UTC)
MrSanchez
GroundWeaponHolder class is automatically deleted when empty after 0.5 to 1 seconds in A3 1.48. The exact delay is random but never lower than 0.50 secs after creation. You can stop deletion by adding something (cargo) to it within 0.5 seconds.
Posted on May 16, 2017 - 09:05 (UTC)
AgentRevolution
For the alternative syntax, if the vehicle has canFloat = 1; in its config class (e.g. boats and wheeled APCs), the command expects PositionAGL, and otherwise always PositionATL.
Posted on Nov 02, 2018 - 12:16 (UTC)
demellion
WARNING: Do not instigate createVehicle or createVehicleLocal within a server function executed with preInit flag.
This will cause "You cannot play/edit this mission" for a vehicles compiled from a -mod and make server skip/loop that mission init.
Posted on Aug 10, 2019 - 09:10 (UTC)
R3vo
The main syntax creates vehicles at ground level ignoring the Z in pos and is also faster than the alternative syntax.
"vehclass" createVehicle pos;
This is equivalent to
createVehicle ["vehclass", [pos select 0, pos select 1, 0], [], 0, "NONE"];
Posted on Mar 13, 2022 - 17:22 (UTC)
DreadedEntity
Objects are created with a vectorUp of terrain surface normal. If you are creating new buildings to add to the map, you will probably want to call setVectorUp on the newly-spawned object.
_veh = createVehicle [etc...]; _veh setVectorUp [0,0,1];