Author: Big Dawg KS
Author Website:

Requirements: No addons required

Version: 1.1

Short description:

Date: 2009-07-13 15:35


Comments: (2)
Rating:



 







Improved Bullet Cam Script
by
Big Dawg KS


Description:
Apparently this random code I wrote up one day for ArmA without testing became quite popular, so I've given it an update for ArmA2.


Usage:
// Bullet Cam Script
// v1.1
// cam.sqf
// Big Dawg KS
// 7/13/09
//
// Call via Fired EH, ex:
//   this addEventHandler ["fired",{_this execVM "cam.sqf"}]
//
// To exit the camera ingame (while in flight), press the key for ironsights/optics
//
// To add supported weapons, add MUZZLE classnames to _list (note: classnames are CASE SENSITIVE)
//
// To disable bullet cam, set BDKS_DisableBulletCam = true
//
// To disable blur effects, set BDKS_BulletCamNoBlur = true
//
// To disable particle effects, set BDKS_BulletCamNoParticleFX = true
//
// To change FOV (zoom), change the value of BDKS_BulletCamFOV (default 0.05). Ex:
//   BDKS_BulletCamFOV = 0.3
//
// To change time acceleration, change the value of BDKS_BulletCamAccTime (default 0.5). Ex:
//   BDKS_BulletCamAccTime = 0.2
// (Note: AccTime only works in Singleplayer)
//
// To make another unit's (other than local player) bullet cam show for the
// local player, set unit variable BDKS_ShowBulletCamToPlayer = true, ex:
//   if(local Spotter)then{Sniper setVariable ["BDKS_ShowBulletCamToPlayer",true]}
//------------------------------------------------------------------------------------------------

_projectile = nearestObject [_this select 0,_this select 4];

if(call {if(isNil "BDKS_DisableBulletCam")then{true}else{!BDKS_DisableBulletCam}})then{

if((_this select 0) == vehicle player || call {if(isNil {(_this select 0) getVariable 
"BDKS_ShowBulletCamToPlayer"})then {false}else{(_this select 0) 
getVariable "BDKS_ShowBulletCamToPlayer"}})then{

// Add more weapons here
_list = ["M40A3","m107","M24","M4SPR","SVD","SVD_CAMO","ksvk","DMR","huntingrifle","SMAW",
"Javelin","SidewinderLaucher_F35","BombLauncherF35"];

_type = getText (configFile >> "CfgAmmo" >> (_this select 4) >> "simulation");
_relPos = [0,-13,0.05];
_fov = 0.05;
if(!isNil "BDKS_BulletCamFOV")then{_fov = BDKS_BulletCamFOV};
if(_type == "shotMissile" || _type == "shotRocket")then{_relPos = [0,-13,2.2]; _fov = 0.5};

_disablePP = false;
if(call {if(isNil "BDKS_BulletCamNoBlur")then{false}else{BDKS_DisableBulletCam}})then{_disablePP = true};

_accTime = 0.5;
if(!isNil "BDKS_BulletCamAccTime")then{_accTime = BDKS_BulletCamAccTime};

_enableParticles = true;
if(call {if(isNil "BDKS_BulletCamNoParticleFX")then{false}else{BDKS_BulletCamNoParticleFX}})then
{_enableParticles = false};

if((_this select 2) in _list && !(isNull _projectile))then{
	setAccTime _accTime;
	_camera = "camera" camCreate (getPos _projectile);
	_camera cameraEffect ["INTERNAL","BACK"];
	showCinemaBorder false;
	cutText ["","BLACK IN",0.2];
	_cancel = false;

	if(_enableParticles && _type == "ShotBullet")then{
		_pShape = ["\ca\Data\ParticleEffects\Universal\Universal.p3d", 16, 13, 3, 0];
		_pSize = [0.01,0.05];
		_pColor = [[1,1,1,0.08],[1,1,1,0.16],[1,1,1,0.03],[1,1,1,0]];

		_pSource = "#particlesource" createVehicleLocal (getPos _projectile);
		_pSource attachTo [_projectile,[0,0,0]];
		_pSource setParticleParams [_pShape,"","Billboard",1,0.3,[0,0,0],
[0,0,0],0,1,0.79,0.18,_pSize,_pColor,[1000],100,0.01,"","",_projectile,360];
		_pSource setDropInterval 0.001;
	};

	while{alive _projectile && alive _camera && !_cancel}do{
		_camera camSetTarget _projectile;
		_camera camSetRelPos _relPos;
		_camera camSetFOV _fov;
		_camera camSetFocus [600,2];
		_camera camCommit 0;

		"RadialBlur" ppEffectAdjust [0.02,0.02,0.1,0.1];
		"RadialBlur" ppEffectCommit 0.01;
		if(!_disablePP)then{"RadialBlur" ppEffectEnable true};

		if(inputAction "optics" != 0)then{_cancel = true};

		sleep 0.001;
	};
	if(alive _camera && !_cancel)then{
		_camera camSetFocus [-(_relPos select 1),1];
		_camera camSetFOV (_fov * 1.6);
		_camera camCommit 1.5;

		"RadialBlur" ppEffectAdjust [0,0,1,1];
		"RadialBlur" ppEffectCommit 0.7;

		sleep 1.39;
	};
	cutText ["","BLACK OUT",0.1];
	sleep 0.11;
	setAccTime 1;
	"RadialBlur" ppEffectEnable false;
	_camera cameraEffect ["TERMINATE","BACK"];
	camDestroy _camera;
	if(_enableParticles)then{deleteVehicle _pSource};
	cutText ["","BLACK IN",0.6];
};

};

};


Read comments for more info, otherwise it's pretty self-explanitory.


Known issues:
Untested in Multiplayer. MP behaviour unknown.


Changelog:
v1.1
- Added following global variables (uses can be found in comments):
BDKS_BulletCamNoBlur, BDKS_BulletCamFOV, BDKS_BulletCamAccTime, BDKS_BulletCamNoParticleFX
- Added BDKS_ShowBulletCamToPlayer unit variable (see comments for use)
- Added particle effect (nothing too fancy, I like it but I'm open to suggestions)
- Added ability to terminate bullet cam in flight with key for ironsights/optics
- Added blackin/blackout effects for smoother transitions
- By default, player only sees bullet cam when he fires (see BDKS_ShowBulletCamToPlayer)
- Added check to abort cam script if projectile not found


Forum topic:
- BI forums




Enable javascript to be able to download from Armaholic please!



Tags: No tags