Building better fortifications

Party-approved future science plus handbooks for the revolution
Post Reply
User avatar
wolfenswan
Posts: 1209
Joined: Wed May 25, 2011 4:59 pm

Building better fortifications

Post by wolfenswan »

Fortifications are fun, improved fortifications are more fun! A simple script to create more complex bunkers etc on the fly. I'll add more as I need them, feel free to contribute.

Save it in an sqf and call it as such:

Code: Select all

[type,object] execVM "scriptname.sqf";
Type is an integer refering to one of the cases below, object the object which is to be replaced with the fortification.

Code: Select all

/*
USAGE
[type (integer),object to replace w. fort] execVM "ws_fort.sqf";

DEFAULT TYPES
1: Concrete block w. wooden ramps & bags shielding sides and front.
2: Concrete block w. wooden ramps & bags shielding sides. Lowered Static in center (HMG by default)
3: Concrete block w. wooden ramps & bags shielding sides and front. Raised Static in center (HMG by default)
4: Bunker Tower w. Sandbags shielding exposed top area
5: Bunker Tower w. Sandbags shielding exposed top area. Raised Static on top area (HMG by default)
6: Bunker Tower w. Sandbags shielding exposed top area. Lowered Static on top, facing away from the tower's open side.

NOTE
Orientation follows the original object.
*/

_obj = _this select 1;
_b = objNull;

_thermal = false; //If statics have thermal sights

// Default classes:
_ramp = "Land_Obstacle_Ramp_F";
_corner ="Land_BagFence_Corner_F";
_long = "Land_BagFence_Long_F";
_short = "Land_BagFence_Short_F";
_tower = "Land_BagBunker_Tower_F";
_block = "BlockConcrete_F";

switch (_this select 0) do {

// Concrete block w. wooden ramps & bags shielding sides and front.
case 1: {
	_b = _block createVehicle [0,0,0];
	_b setDir 0;

	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,4.6,0.45]];
	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,5.6,-0.1]];
	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,6.6,-0.6]];
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[-3.6,-2,1.6]]; _o setDir 180;
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[3.8,-2,1.6]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[4,0,1.6]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[-4,0,1.6]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[-2,-2.3,1.6]]; _o setDir 180;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[2,-2.3,1.6]]; _o setDir 180;
	_o = (_short) createVehicle [0,0,0]; _o attachTO [_b,[0,-2.3,1.6]]; _o setDir 180;
	};

// Concrete block w. wooden ramps & bags shielding sides. Lowered Static in center (HMG by default)
case 2: {
	_static = "B_HMG_01_F";
	_height = 2.5; //Modify this depending on static used.

	_b = _block createVehicle [0,0,0];
	_b setDir 0;

	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,4.6,0.45]];
	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,5.6,-0.1]];
	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,6.6,-0.6]];
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[-3.6,-2,1.6]]; _o setDir 180;
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[3.8,-2,1.6]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[4,0,1.6]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[-4,0,1.6]]; _o setDir 90;
	_o = (_short) createVehicle [0,0,0]; _o attachTO [_b,[-2.6,-2.2,1.6]]; _o setDir 180;
	_o = (_short) createVehicle [0,0,0]; _o attachTO [_b,[2.8,-2.2,1.6]]; _o setDir 180;
	_o = _static createVehicle [0,0,0]; _o attachTO [_b,[0,-0.2,_height]]; _o setDir 180;
	if !(_thermal) then {_o disableTIEquipment true;};
	};

// Concrete block w. wooden ramps & bags shielding sides and front. Raised Static in center (HMG by default)
case 3: {
	_static = "B_HMG_01_high_F";
	_height = 2.5; //Modify this depending on static used.

	_b = _block createVehicle [0,0,0];
	_b setDir 0;

	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,4.6,0.45]];
	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,5.6,-0.1]];
	(_ramp createVehicle [0,0,0]) attachTO [_b,[2,6.6,-0.6]];
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[-3.6,-2,1.6]]; _o setDir 180;
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[3.8,-2,1.6]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[4,0,1.6]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[-4,0,1.6]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[-2,-2.3,1.6]]; _o setDir 180;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[2,-2.3,1.6]]; _o setDir 180;
	_o = (_short) createVehicle [0,0,0]; _o attachTO [_b,[0,-2.3,1.6]]; _o setDir 180;
	_o = _static createVehicle [0,0,0]; _o attachTO [_b,[0,-1,_height]]; _o setDir 180;
	if !(_thermal) then {_o disableTIEquipment true;};
	};
// Bunker Tower w. Sandbags shielding exposed top area
case 4: {
	_b = _tower createVehicle [0,0,0];
	_b setDir 0;

	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[-1.5,2.6,1]]; _o setDir 270;
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[1.4,2.6,1]];
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[1.8,0.6,1]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[-1.8,0.6,1]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[0,3,1]]; _o setDir 180;

	};

// Bunker Tower w. Sandbags shielding exposed top area. Raised Static on top area (HMG by default)
case 5: {
	_static = "B_HMG_01_high_F";
	_height = 2.2; //Modify this depending on static used.

	_b = _tower createVehicle [0,0,0];
	_b setDir 0;

	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[-1.5,2.6,1]]; _o setDir 270;
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[1.4,2.6,1]];
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[1.8,0.6,1]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[-1.8,0.6,1]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[0,3,1]]; _o setDir 180;

	_o = _static createVehicle [0,0,0]; _o attachTO [_b,[0,1.2,_height]]; _o setDir 0;
	if !(_thermal) then {_o disableTIEquipment true;};
	};

// Bunker Tower w. Sandbags shielding exposed top area. Lowered Static on top, facing away from the tower's open side.
case 6: {
	_static = "B_HMG_01_F";
	_height = 1.8; //Modify this depending on static used.

	_b = _tower createVehicle [0,0,0];
	_b setDir 0;

	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[-1.5,2.6,1]]; _o setDir 270;
	_o = (_corner) createVehicle [0,0,0]; _o attachTO [_b,[1.4,2.6,1]];
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[1.8,0.6,1]]; _o setDir 90;
	_o = (_long) createVehicle [0,0,0]; _o attachTO [_b,[0,3,1]]; _o setDir 180;

	_o = _static createVehicle [0,0,0]; _o attachTO [_b,[0,1.2,_height]]; _o setDir 270;
	if !(_thermal) then {_o disableTIEquipment true;};
	};
};


_pos = (getPosATL _obj);
_b setPosATL _pos;
_b setDir (getDir _obj);
_b setVectorUp (surfaceNormal _pos);
deleteVehicle _obj;

Post Reply