Jump to content
Purzel

Players start in heli, JiP-Players in Base (complex situation)

Recommended Posts

Hi there,

I need a litte help:

In my MP-mission, all players should start in a CH-53  (which will bring up a littele cam-sequence and texts), until the heli has landed at the FOB.
They are divided into three groups (alpha/bravo/charlie)
If a player is "kicked" out of the heli (after its landed and the ramp has opened), the camera should stop for each player and the mission begins at the end of the helis ramp (on ground, not on the ramp itself!)
After all players are out of the heli, it will lift off and fly away (and deletes at its last waypoint!)

On disconnect or JiP the latest players should start at the normal base spawn-points, because the heli is flying to a delete-WP and will not going to re-insert the JiP-players.
JiP-players don´t need the intro-sequence, they spawn in base into the running mission.

 


Solution - klick here!

 

 


What I´ve got:
a chopper "ch53" with an unload-transport-WP
three groups human players which should be ported into the ch53, because their spawnpoints in the base are needed for re- and late-joiner.

a trigger, which is actually not working.
a camera, which follows the helicopter (should end, when player is out of the heli)

 

 

1. problem:

So for that I placed all spawnpoints at the base, set an area-trigger over all spawnpoints, which should put all players in cargo of the CH-53.
Condition:
this && {alive ch53} && {((player) in thisList)}           //another condition (pubic variable) will be added, if I get it working, that the CH53 is touching the ground.
OnAct:
player MoveInCargo ch53;        // this works in debug-console, but not in trigger!?

2. problem:

The CH-53 isn´t touching the ground, so I can´t use a public variable which is used for another trigger-condition, so no JiP-player will sit in a chopper, that is flying unsuspecting to the termination-WP.

3. problem:
How do I script the ending of the cam for each player get kicked out of the cam, when he leaves the helicopter and is touching the ground...?

problemdrfzj.jpg

 

I´m not that good at scripting, so any help is appreciated!
Greetings Purzel

 

 

 

Share this post


Link to post
Share on other sites

Id suggest learning a bit about locality in Arma for what this and player mean, especially in MP.

Here is a little basic template you might want to give a try to get you heading the right direction.

Create a file called initplayerLocal.sqf in your mission file, this will automatically execute on all clients on missions start.
 

Spoiler

 


//initplayerlocal.sqf

//Wait for player to exist
waituntil {sleep 1; !isnull player};

//Wait for helicopter to exist
waituntil {sleep 1; !isnull CH53};

//Make this what you want, a marker position, a car, whatever.
_endPosition = [1000,1000,0];

player moveInCargo ch53;

//Camera sequence 
stuff goes here


//Turn off camera when helicopter is 20 metres from the end AND less than 2 metres off the ground (basically landed)
waituntil {

	sleep 1;

	((_endPosition distance (getposATL CH53) < 20) && ((getPosATL CH53 select 2) < 2));

};

//THIS TURNS OFF CAMERA
player cameraEffect ["terminate","back"];
camDestroy _camera;

//players exit chopper and joyfully play in the sandpit

 

 




 

Share this post


Link to post
Share on other sites

Yeah!
Thx !

I´ll try to check this out tonight...
 

 

Share this post


Link to post
Share on other sites

O.K.   here´s the solution:

Init.sqf:

if (isNil "landing") then {landing = false};

initPlayerLocal.sqf:

if (isNil "landing") exitWith {};        // execute a publicvariable "landing" on choppers landing-WP !!!
waituntil {sleep 1; !isnull player};
waituntil {sleep 1; !isnull ch53};
_endPosition = [175.372,5530.95,0];   // => Pos von Helipad "lp1"
player moveInCargo ch53;
// Start a cam-sequence or whatever has to be local executed
_camera = "camera" camcreate position ch53; 
_camera cameraeffect ["internal", "back"];
// Scene 1
_camera cameraeffect ["internal", "back"];
_camera camPrepareTarget ch53;
_camera camPreparePos [14,5480,70];
_camera camPrepareFOV 0.200;
_camera camCommitPrepared 15;
waitUntil{camCommitted _camera};
// Scene 2
_camera cameraeffect ["internal", "back"];
_camera camPrepareTarget ch53;
_camera camPreparePos [156,5552,7];
_camera camPrepareFOV 0.400;
_camera camCommitPrepared 15;  
waituntil {
	camCommitted _camera;
	sleep 1;
	((_endPosition distance (getposATL ch53) < 50) && ((getPosATL ch53 select 2) <= 5));   // choose your own values depending on when you want to be the players in their own sight.
};
// Camera off
player cameraEffect ["terminate","back"]; 
camDestroy _camera;
// Put here some stuff like: vehicle player vehicleChat "Prepare to get out!";   > which makes the pilot do a sidechat-vehiclechat

 

Share this post


Link to post
Share on other sites

initPlayerLocal.sqf has _isJIP argument. On phone atm so will provide example/solution later this evening.

 

Share this post


Link to post
Share on other sites

Okay, home now. Firstly let me correct my mistake, it is actually didJIP that you want.

// initPlayerLocal.sqf

if (!didJIP) then
{
} else
{
	// code for JIP (aka beach start)
};

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

So taking a guess at what you want:

- Move moveInCargo and camera stuff like so:

// initPlayerLocal.sqf

if (!didJIP) then
{
	_endPosition = [175.372,5530.95,0]; // => Pos von Helipad "lp1"
	player moveInCargo ch53;
	// Start a cam-sequence or whatever has to be local executed
	_camera = "camera" camcreate position ch53; 
	_camera cameraeffect ["internal", "back"];
	// Scene 1
	_camera cameraeffect ["internal", "back"];
	_camera camPrepareTarget ch53;
	_camera camPreparePos [14,5480,70];
	_camera camPrepareFOV 0.200;
	_camera camCommitPrepared 15;
	waitUntil{camCommitted _camera};
	// Scene 2
	_camera cameraeffect ["internal", "back"];
	_camera camPrepareTarget ch53;
	_camera camPreparePos [156,5552,7];
	_camera camPrepareFOV 0.400;
	_camera camCommitPrepared 15;  
	waituntil {
		camCommitted _camera;
		sleep 1;
		((_endPosition distance (getposATL ch53) < 50) && ((getPosATL ch53 select 2) <= 5));   // choose your own values depending on when you want to be the players in their own sight.
	};
	// Camera off
	player cameraEffect ["terminate","back"]; 
	camDestroy _camera;
} else
{
	// code for JIP (aka beach start)
	player setPos [0, 0, 0]; // if the base (beachhead) was at [0, 0, 0] - adjust accordingly
};

 

Share this post


Link to post
Share on other sites

Ok...  Thx a lot!

"if, then, else"   will do the thing?

But why isnt the choosen spawnpoint used?
Just tried it on server, but I cannot respawn?

(Respawn_west is present on map and respawn = base; is in description.ext ! )

Share this post


Link to post
Share on other sites

Where is the respawn marker? You may also want to move it for JIP or after landing is TRUE. I assumed you didn't want to put them in heli - for JIP.

Share this post


Link to post
Share on other sites

Did you see the picture:
https://abload.de/image.php?img=problemdrfzj.jpg
 

The players are spawning in their base, but they´re teleported into the helicopter when they spawn and the helicopter brings them to base again.
The spawn-point itself isnt moved into the helicopter, it stays in base, so every jip-player (or respawned-player) should start directly in the base, without sitting in the helicopter before.
Players coming late, don´t need the chopper-intro, so they should start instead of helicopter in base.

This is just to create a little immersion on how the players have come into the base.

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

×