Jump to content
Kjeksen1987

Spawn unit and put in chopper script

Recommended Posts

Hm, unit wont go in chopper with this script. Can anyone point me in the right direction? Needless to say, I am very new to scripting but having a blast nonetheless.

 

Quote

if (isServer) then {

                 _crew1 = creategroup EAST;

                 _airframe1 = [getMarkerPos "marker1", 220, "CUP_O_MI6T_TKA", _crew1] call BIS_fnc_spawnVehicle;

                 _plane = _airframe1 select 0;

 

 //SPAWN HVT AND PUT IN CHOPPER

hvt = "CUP_O_TK_INS_Commander" createVehicle getmarkerpos "hvtSpawn";

 

hvt moveInCargo [ _plane, 3];

hvt assignAsCargoIndex [ _plane, 3];

 

//WP FOR CHOPPER, MAKE IT LAND IN DESIGNATED AREA

_wp1 = _crew1 addWaypoint [(getmarkerpos "marker2"), 0]; _wp1 setWaypointType "TR UNLOAD";

_wp1 setWaypointSpeed "LIMITED";

_wp1 setwaypointstatements [ "true" ,"this land 'land'"];

 

sleep 2;

 

//MOVE CHOPPER AWAY AFTER TRANSPORT UNLOAD AND DELETEVEHICLE

_wp2 = _crew1 addWaypoint [(getmarkerpos "marker4"), 0];

_wp2 setWaypointType "MOVE"; _wp2 setWaypointSpeed "LIMITED";

_wp2 setWaypointStatements ["true", "deleteVehicle (vehicle this);{deleteVehicle _x} forEach thislist; deleteGroup (group this)"];

};

 

I made hvt a global variable for it to be available in another script.

 

Any help is much appreciated

 

 

Share this post


Link to post
Share on other sites
22 minutes ago, Kjeksen1987 said:

hvt = "CUP_O_TK_INS_Commander" createVehicle getmarkerpos "hvtSpawn";

for AI you have to use createUnit instead of createVehicle

Share this post


Link to post
Share on other sites

But createUnit does not have a return value? I would like to check later if hvt is dead with !alive hvt

Share this post


Link to post
Share on other sites

only the alternative syntax does not have a return value, the first one does:

Quote

Syntax:


group createUnit [type, position, markers, placement, special]

Parameters:

  • group: Group - Existing group new unit will join
  • [type, position, markers, placement, special]: Array
  • type: String - Class name of unit to be created as per CfgVehicles
  • position: Position, Position2D, Object or Group - Location unit is created at. In case of Group position of the group leader is used
  • markers: Array - Placement markers
  • placement: Number - Placement radius
  • special: String - Unit placement special, one of:
    • "NONE" - The unit will be created at the first available free position nearest to given position
    • "FORM" - Not implemented, currently functions the same as "NONE".
    • "CAN_COLLIDE" - The unit will be created exactly at passed position
    • "CARGO" - The unit will be created in cargo of the group's vehicle, regardless of the passed position (see Example 5). If group has no vehicle or there is no cargo space available, the unit will be placed according to "NONE". To check available cargo space use: _hasCargo = _veh emptyPositions "CARGO" > 0;

Return Value:

Object - The created unit

https://community.bistudio.com/wiki/createUnit

  • Like 1

Share this post


Link to post
Share on other sites

Another option is to place the  HVT  and the chopper on the map and give a command that has him enter the chopper as a passenger.

.

 

 

 

 

Share this post


Link to post
Share on other sites

Spawning in chopper works like a charm now! Thanks alot.

 

No onward to next thing I have tinkered with that I cant seem to understand. Just a simple "isTouchingGround". I want to check if HVT has landed on ground from the chopper and

then do a "doMove" so he doesnt stand still like a retard waiting to get shot.

 

Here is the code:

 

//CHECK IF HVT HAS LANDED

_hvtWalking = isTouchingGround hvt;

 

 //SIMPLE CHECK IF SYNTAX WORKING

if(_hvtWalking) then { hint "HVT IS TOUCHING GROUND"; hvt doMove (getMarkerPos "markerHvtGo" ); };

 

// SIMPLE CHECK IF SYNTAX IS NOT WORKING

if (isNil "_hvtWalking") then { hint "NOT REGISTRATING HVT LANDED"};

 

I cant seem to get a return from either the "it worked" check nor the "it didnt work" check.

 

I dont understand. This should be really simple 😂 No errors when I start the mission.

 

 

Share this post


Link to post
Share on other sites
4 hours ago, Kjeksen1987 said:

//CHECK IF HVT HAS LANDED

_hvtWalking = isTouchingGround hvt;

 

 //SIMPLE CHECK IF SYNTAX WORKING

if(_hvtWalking) then { hint "HVT IS TOUCHING GROUND"; hvt doMove (getMarkerPos "markerHvtGo" ); };

 

// SIMPLE CHECK IF SYNTAX IS NOT WORKING

if (isNil "_hvtWalking") then { hint "NOT REGISTRATING HVT LANDED"};

 

I cant seem to get a return from either the "it worked" check nor the "it didnt work" check.

 

 

IsTouchingGround is for the helo. So, you can test isTouchingGround vehicle hvt  but... There are 3 modes for landing an helo:

get out, get in and land (complete stop). If you perform a complete stop, there is some chance for touching ground. The 2 first, no. The helo is hovering at very slow altitude.

Use something like (getPosATL vehicle hvt select 2 < 2)

 

isNil "_hvtWalking" is false because you just defined it above! this local variable can be false or true but it exists. You want to test: 

if (_hvtWalking) then {..}

simple as that. This variable returns false or true.

 

Next step: landing in combat ambiance ?

Share this post


Link to post
Share on other sites

I would like to check if the officer (HVT) has disembarked the chopper and are on the ground. IsTouchingGround cannot be used for him?

 

If he has exited the chopper then I would like to continue. Not landing in combat ambiance this chopper 🙂

 

Here is what is used to make the chopper land:

 

_wp1 = _crew1 addWaypoint [(getmarkerpos "marker2"), 0];

_wp1 setWaypointType "TR UNLOAD";

_wp1 setWaypointSpeed "LIMITED";

_wp1 setwaypointstatements [ "true" ,"this land 'land'"];

 

 

Share this post


Link to post
Share on other sites
1 hour ago, Kjeksen1987 said:

I would like to check if the officer (HVT) has disembarked the chopper and are on the ground. IsTouchingGround cannot be used for him?

 

If he has exited the chopper then I would like to continue. Not landing in combat ambiance this chopper 🙂

 

Here is what is used to make the chopper land:

 

_wp1 = _crew1 addWaypoint [(getmarkerpos "marker2"), 0];

_wp1 setWaypointType "TR UNLOAD";

_wp1 setWaypointSpeed "LIMITED";

_wp1 setwaypointstatements [ "true" ,"this land 'land'"];

 

 

 

Your waypoint "TR UNLOAD" seems to me useless without a "GETOUT" waypoint for your HVT , but it's not mandatory. You can write a simple "move" wpt as you order a complete landing.

IsTouchingGround on HVT means your HVT is on ground, so should work on complete landing. But... your HVT is perhaps not created. Use createUnit as already said.

 

Something like:

 

0 = [] spawn {
  if (isServer) then {
    _crew1 = creategroup EAST;
    _airframe1 = [getMarkerPos "marker1", 220, "CUP_O_MI6T_TKA", _crew1] call BIS_fnc_spawnVehicle;
    _plane = _airframe1 select 0;
    hvt = createGroup EAST createUnit ["CUP_O_TK_INS_Commander",[0,0,0],[],0,"NONE"];
    hvt moveInCargo [ _plane, 3];
    hvt assignAsCargoIndex [ _plane, 3];
    _wp1 = _crew1 addWaypoint [(getmarkerpos "marker2"), 0]; _wp1 setWaypointType "MOVE";
    _wp1 setWaypointSpeed "LIMITED";
    _wp1 setWaypointStatements [ "true","vehicle this land 'land'"];
    waitUntil {isTouchingGround _plane};
    doGetOut hvt; 
    unassignVehicle hvt;
    sleep 2;  
    _wp2 = _crew1 addWaypoint [(getmarkerpos "marker4"), 0];
    _wp2 setWaypointType "MOVE"; _wp2 setWaypointSpeed "LIMITED";
    _wp2 setWaypointStatements ["true", "private _helo = vehicle this; private _grp = group this; {_helo deleteVehicleCrew _x} count crew _helo; deleteVehicle _helo; deleteGroup _grp"];
  };
};

 

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×