Hendo/Sandbox – User

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "<code>" to "<code style="display: block">")
m (Text replacement - "\{\{ *Wikipedia *\| *([-a-zA-Z0-9_#':%\/\\]+) *\| *([-a-zA-Z0-9_#':%\/\\ ]+) *\}\}" to "{{Link|https://en.wikipedia.org/wiki/$1|$2}}")
Line 45: Line 45:
* [[SQF Syntax|SQF Syntax]]]
* [[SQF Syntax|SQF Syntax]]]
* [http://www.armedassault.info/index.php?game=0&cat=articles&class=tutorials&id=17 Scripting Tutorial]]
* [http://www.armedassault.info/index.php?game=0&cat=articles&class=tutorials&id=17 Scripting Tutorial]]
* {{Wikipedia|Event-driven_architecture|Event Driven Architecture}}
* {{Link|https://en.wikipedia.org/wiki/Event-driven_architecture|Event Driven Architecture}}
* [[Script File|Script as threads]]
* [[Script File|Script as threads]]
* [http://www.ofpec.com/ed_depot/index.php?action=list&cat=sc&type=xyz Bunch of scripts]
* [http://www.ofpec.com/ed_depot/index.php?action=list&cat=sc&type=xyz Bunch of scripts]

Revision as of 00:47, 24 February 2023

Modeling

Cockpit Modeling

I think we are going to need a PilotView LOD link courtesy of
OFP-Faguss.com


Links

Projects

GetAListOfEntityIDs

Make pilot fly to waypoints

  1. Create a helipilot (player, playable)
  2. Create a UH60L. Name it mychopper
  3. Make a new waypoint for the player
  4. Create a pilot. Place this in init statement:this assignAsDriver mychopper
  5. Group the pilot to the player
  6. Create a stand alone wp near the chopper
  7. Assign the pilot this waypoint

This only works if the player is in the backseat!

Scripting

Multiplayer

Multiplayer Scripting

Debugging

hint format ["Hello %1", player];

Tools

ScriptEdit IDE

Links


Example Scripts

Tail Camera (with Bank)

Note the reciprocal math:

#include "\vbs2\headers\function_library.hpp" 


If (local rex) then {

	fgh2050 animate ["Trunk",1];
	//fgh2050 action ["OpenTrunk", fgh2050];

	_forever = true;

	_locationPosition = GetPos fgh2050;

	_cam = "seagull" camCreate (position  fgh2050);
	_cam cameraEffect["internal","FRONT"];


	_grp = group _cam;

	selectPlayer _cam;

	while {(_forever)} do {

		_locationPosition = fgh2050 modelToWorld [0,-4.5,1.5];	
		//_locationPosition = fgh2050 modelToWorld [0,5.9,2.5];	//CPG EYES
		_targetPosition = fgh2050 modelToWorld [0,100,0];	
		_cam SetPos _locationPosition;		

		_fgh2050PB = fgh2050 call fn_vbs_getPitchBank;
		_fgh2050Dir = getDir fgh2050;
		_cam setDir _fgh2050Dir+180;
		myPitch = _fgh2050PB select 0;
		myBank = _fgh2050PB select 1;
		myPitch = -1 * myPitch-5;
		myBank = -1 * myBank;

		//hint "my pitch and bank ";
		//hint format["pitch %1, bank %2",myPitch, myBank];

		[_cam, myPitch, myBank] call fn_vbs_setPitchBank;

		_cam CamCommit 0;
		sleep 0.005;
		showCinemaBorder false
	};
};

Nose Camera (with Bank)

Here's a script that will put the player on the nose of the apache.

To use:

  1. Make a mission with a token player on the ground, an an apache w/ AI crew
  2. Save the mission
  3. Find the mission folder in My Documents/VBS2/mpmission/the_new_mission
  4. Create a new sqf filed (text) named player.sqf
  5. Save the file
  6. In the initialization text box for the player, place:
call {apache execVM "player.sqf";}

Tested: VBS2 v1.23

Note: this script uses VBS2 functions (see header below). You may be able to modify use of the fn_vbs_setPitchBankcommand with something that works in ARMA (camSetBank).


#include "\vbs2\headers\function_library.hpp" 

_forever = true;

_locationPosition = GetPos apache;

_cam = "seagull" camCreate (position  apache);
_cam cameraEffect["internal","back"];


_grp = group _cam;

selectPlayer _cam;

while {(_forever)} do {

	//_locationPosition = apache modelToWorld [0,3.8,2.0];	//CPG EYES
	_locationPosition = apache modelToWorld [0,5.9,2.0];	//CPG EYES
	_targetPosition = apache modelToWorld [0,100,0];	
	_cam SetPos _locationPosition;		

	_apachePB = apache call fn_vbs_getPitchBank;
	_apacheDir = getDir apache;
	_cam setDir _apacheDir;
	[_cam, _apachePB select 0, _apachePB select 1] call fn_vbs_setPitchBank;

	_cam CamCommit 0;
	sleep 0.005;
};

Nose Camera (No Bank)

This script place a camera on the nose of an apache.

To use:

  1. Make a mission with a token player on the ground, an an apache w/ AI crew
  2. Save the mission
  3. Find the mission folder in My Documents/VBS2/mpmission/the_new_mission
  4. Create a new sqf filed (text) named apache.txt
  5. Save the file
  6. In the initialization text box for the apache, place:

call {apache execVM "apache.sqf";}


Tested w/ VBS2 1.23


#include "\vbs2\headers\function_library.hpp" 

_forever = true;

_locationPosition = GetPos apache;

_camera = "camera" camcreate _locationPosition;
_camera cameraEffect["internal","back"];
//_camera CamSetDir 0;
_camera CamSetFOV 1;


_camera camSetTarget _locationPosition;
//_camera CamSetPos [_locationPosition Select 0,(_locationPosition Select 1) + 2, 5];
_camera CamSetPos _locationPosition;
_camera CamSetFOV 0.7;
_camera CamCommit 0;


while {(_forever)} do {

	_locationPosition = GetPos apache;
	_locationPosition = apache modelToWorld [0,6,2];
	_targetPosition = apache modelToWorld [0,100,0];	
	_camera camsettarget _targetPosition;
	_camera CamSetPos _locationPosition;
	_camera CamCommit 0;
	
	sleep 0.005;
};

Notes:

 * For the life of me I could not control the bank angle of the camera.  Tried to use CamSetBank but no dice!

UAV Shadow

_forever = true;
while {(_forever)} do {
	_pos = position player;
	_x = 100+(_pos select 0);
	_y = (_pos select 1);
	_z = 1000+(_pos select 2);
	_dest = [_x,_y,_z];
	uav_1 flyInHeight 33;	
	uav_1 setDestination [_dest, "LeaderPlanned", true];
	_wPosArray = waypoints uav_1;
	hint format ["uav has %1 waypoint..%2",(count _wPosArray), _wPosArray];
	sleep 1;
};

Melee

/*
Purpose: Trigger demo

Preconditions:  

- Create a T72 platoon 
- Create an A10 team
- Create a playable USMC marine
- Create a Trigger where you want the ambush

Activator:  trigger

Author:  Henderson
*/

//Feedback on script start
hint "Fly Started!";

_grp = group player;

//Create a tank
_myTank1 = "M1Abrams" createVehicle (position player);

//Create a driver
//See: http://community.bistudio.com/wiki/VBS2:_CfgVehicles
"SquadLeaderW" createUnit [position player, _grp, "pilot = this ;"];

//Place them in the tank
pilot action ["getInDriver", _myTank1];
player action ["getInGunner", _myTank1];

//Create a tank
_myTank2 = "M1Abrams" createVehicle (position player);

//Create a driver
//See: http://community.bistudio.com/wiki/VBS2:_CfgVehicles
"SquadLeaderW" createUnit [position player, _grp, "pilot2 = this ;"];
"SquadLeaderW" createUnit [position player, _grp, "gunner2 = this ;"];

//Place them in the tank
pilot2 action ["getInDriver", _myTank2];
gunner2 action ["getInGunner", _myTank2];


//Cue the A10s
hog commandMove (position player); 

Killer AH1Z

/*

Purpose: Have A1Z engage player

Preconditions:  A1Z (snake) spawn

Activator:  snake

Author:  Henderson

TO USE:

Save this file in C:\Documents and Settings\user\My Documents\VBS2\mpmissions\missionname\
Make an M1A1 and name it player
Make an AH1Z and name it snake
	- use the following initialization script for snake
	
	 call {player execVM "snake.sqf";}

Run like the dickens!
*/


//Feedback on script start
hint "Snake Started!";
this flyInHeight 200; 


while {alive player} do 
{
	snake doMove getPos player;
	snake doTarget player;
	//hsnake selectWeapon "HellfireLauncher";
	snake doFire player;	
	sleep 1;
};
hint "Snake killed player!";

AH6

/*
Purpose: Create an AH6 with pilot and have him fly you around

Preconditions:  

- Create some waypoints where you want the pilot to fly

Activator:  player

Author:  Henderson

TO USE:

Save this file in C:\Documents and Settings\user\My Documents\VBS2\mpmissions\missionname\
Make a pilot
	- use the following initialization script for snake

	 call {player execVM "fly.sqf";}
*/


//Feedback on script start
hint "Fly Started!";

_grp = group player;
_ah6 = "AH6" createVehicle (position player);
_ah6 flyInHeight 50;
//Create a pilot
//See: http://community.bistudio.com/wiki/VBS2:_CfgVehicles
"VBS2_US_MC_HeliPilot_W_BerettaM9" createUnit [position player, _grp, "pilot = this ;"];

pilot action ["getInPilot", _ah6];
player action ["getInCargo", _ah6];
_ah6 flyInHeight 50;
pilot commandMove (getMarkerPos "m1"); 
waitUntil {!alive pilot || pilot distance (getMarkerPos "m1") <= 150};
_ah6 flyInHeight 20;
pilot commandMove (position h1); 
waitUntil {!alive pilot || pilot distance (position h1) <= 100};
_ah6 land "GET OUT";
pilot action ["Land", _ah6];