Hendo/Sandbox – User
Modeling
- Nice beginner's guide
- Great Modeling Tutorials link courtesy of
OFP-Faguss.com - Oxygen_Keyboard_Shortcuts
- 3DS P3D Addon
Cockpit Modeling
I think we are going to need a PilotView LOD link courtesy of
OFP-Faguss.com
Links
Projects
Make pilot fly to waypoints
- Create a helipilot (player, playable)
- Create a UH60L. Name it mychopper
- Make a new waypoint for the player
- Create a pilot. Place this in init statement:
this assignAsDriver mychopper - Group the pilot to the player
- Create a stand alone wp near the chopper
- Assign the pilot this waypoint
This only works if the player is in the backseat!
Scripting
Multiplayer
Debugging
hint format["Hello %1", player]
Tools
Links
- Some nice tools from Kronzky
- Hooahman's_Sandbox
- SQF Syntax]
- Scripting Tutorial]
- Event Driven Architecture
- Script as threads
- Bunch of scripts
- VBS2 specific script info (OLD)
- Event scripts
- Nice third-party scripting blog
- script example
- by How To (i.e. CAS)
- | Team and Local Variables
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:
- Make a mission with a token player on the ground, an an apache w/ AI crew
- Save the mission
- Find the mission folder in My Documents/VBS2/mpmission/the_new_mission
- Create a new sqf filed (text) named player.sqf
- Save the file
- 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:
- Make a mission with a token player on the ground, an an apache w/ AI crew
- Save the mission
- Find the mission folder in My Documents/VBS2/mpmission/the_new_mission
- Create a new sqf filed (text) named apache.txt
- Save the file
- 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];