Jump to content
Tankbuster

Editing, Expanding and Modifying Domination

Recommended Posts

http://dev-heaven.net/projects/domination/files contains the unpbod version to edit ;)

Isnt the unpboed version in that zip file the non-ACE version? That one I seem to have no issues with its just the version that say ACE that I cant see in the mp editor...Thanks for the link...will try it tonite.

JC

It does work altho it doesnt say ACE in the mission name..it must be ACE version..has the ACRE radios and I am having alot of fun adding things and changing things..my only issue is..even tho I disable all the AI I still have 2 AI players driving around following me..lol...How do I disable and not have any AI in the game or linked to anything...when I place a vehicle on the map/base I mark it as playable and unlocked and not in formation I mark that as "none" so it should stand alone..do I need to delete the AI in the mp editor before I preview it? Thanks again for the link and clarification..much appreciated..even tho I m a noob to this editing thing its pretty addictive!

Edited by Diesel Tech JC

Share this post


Link to post
Share on other sites
Need some help been looking in the domination files to add 2nd and 3rd AI barracks on different parts of the map. I would like to have a armor base that you can get only crew from the barrack and the other in a airbase that you can get only pilots. My issue is how do I add different AI class to the barracks. I am using a Dom 2.60m version to edit and you have no crew or pilots from the list. The other issue is how do I add more barracks to the mission I can't just copy and save it does not work. I am still having major issues to have only pilots fly and crew in armor code to work. Any help would be great to point me in the ht direction. Avibird.

I have been trying get a few things to work on a domination edit but still need some help where to look to change within the codes.

1. Would like to add more AI barracks at different FOB that I add to the mission.

2. How can I add different AI class to the barrack list in the mission.

3. Would like to setup only pilots can fly and only crew can drive armor.

4. Add different ammoboxes to the autoload point at the airport.

5. Add 3rd and 4th engineer supply tuck that my engineers can load static weapons.

Share this post


Link to post
Share on other sites
I have been trying get a few things to work on a domination edit but still need some help where to look to change within the codes.

1. Would like to add more AI barracks at different FOB that I add to the mission.

2. How can I add different AI class to the barrack list in the mission.

3. Would like to setup only pilots can fly and only crew can drive armor.

4. Add different ammoboxes to the autoload point at the airport.

5. Add 3rd and 4th engineer supply tuck that my engineers can load static weapons.

I can't believe that nobody knows how to make this work or where I should look within the folders/files/codes.

I found the answer to #2 on the list AFTER A FEW DAYS lol. If anyone else needs. You go into the x_client folder not the i_client SQF file. There is a SQF FILE called X_RECRUITSETUP. There is a code line that looks like this:

if (isNil QGVAR(UnitsToRecruit)) then {

GVAR(UnitsToRecruit) =

#ifdef __OA__

switch (GVAR(player_side)) do {

case west: {

["US_Soldier_EP1","US_Soldier_AT_EP1", "US_Soldier_Medic_EP1", "US_Soldier_MG_EP1", "US_Soldier_GL_EP1", "US_Soldier_Sniper_EP1", "US_Soldier_AA_EP1", "US_Delta_Force_Night_EP1", "US_Soldier_Engineer_EP1", "US_Soldier_Crew_EP1", "US_Soldier_Pilot_EP1",]

};

I Added the Engineer, crew and pilot class. Make sure you use the right class name. I still need help with 1,3,4 and 5 :confused: AVIBIRD

Share this post


Link to post
Share on other sites

1. Would like to add more AI barracks at different FOB that I add to the mission.

Please download 2.60p. There's an additional variable in i_client.sqf called

GVAR(additional_recruit_buildings)

to add more AI recruit buildings. The rest is handled automatically.

3. Would like to setup only pilots can fly and only crew can drive armor.

Only support for pilots means air vehicles because you can still switch seats in a Bradley for example. So it doesn't make much sense to add restrictions here as lockTurret is still not fixed (CIT ticket exists since A2).

Please use the var names you have used in the editor not the class names.

4. Add different ammoboxes to the autoload point at the airport.

Not possible without adding a system to select what kind of box you want to load (dialog/actions/whatever). Quite a lot of work to change it as the whole system relys on a specific ammobox class name.

5. Add 3rd and 4th engineer supply tuck that my engineers can load static weapons.

All you have to do is give the additional engineer supply trucks var names in the editor and add it to vrespawn2 in d_init.sqf, the rest, as always, is handled automatically:

// editor varname, unique number
//0-9 = MHQ, 10-19 = Medic vehicles, 20-29 = Fuel, Repair, Reammo trucks, 30-39 = Engineer Salvage trucks, 40-49 = Transport trucks
[
[xvec1,0],[xvec2,1],[xmedvec,10],[xvec3,20],[xvec4,21],[xvec5,22], [xvec7,23],
[xvec8,24], [xvec9,25], [xvec6,30], [xvec10,31], [xvec11,40], [xvec12,41]
] execVM "x_server\x_vrespawn2.sqf";

2.60p adresses some remaining problems in revive and the respawn script (script errors). It also adds a restriction how often a wreck can be repaired (Wreck repair point). Default value is 3 times, can be changed in the server lobby. No message how often you can repair it is showing up, you simply can't lift it with wreck chopper anymore and no marker on the map shows up. The wreck is added to garbage collection.

2.60p also (hopefully) adds better support for multi monitor setups for FX effects like dirt and blood (so real).

Xeno

Edited by Xeno

Share this post


Link to post
Share on other sites
Please download 2.60p. There's an additional variable in i_client.sqf called

GVAR(additional_recruit_buildings)

to add more AI recruit buildings. The rest is handled automatically.

Only support for pilots means air vehicles because you can still switch seats in a Bradley for example. So it doesn't make much sense to add restrictions here as lockTurret is still not fixed (CIT ticket exists since A2).

Please use the var names you have used in the editor not the class names.

Not possible without adding a system to select what kind of box you want to load (dialog/actions/whatever). Quite a lot of work to change it as the whole system relys on a specific ammobox class name.

All you have to do is give the additional engineer supply trucks var names in the editor and add it to vrespawn2 in d_init.sqf, the rest, as always, is handled automatically:

// editor varname, unique number
//0-9 = MHQ, 10-19 = Medic vehicles, 20-29 = Fuel, Repair, Reammo trucks, 30-39 = Engineer Salvage trucks, 40-49 = Transport trucks
[
[xvec1,0],[xvec2,1],[xmedvec,10],[xvec3,20],[xvec4,21],[xvec5,22], [xvec7,23],
[xvec8,24], [xvec9,25], [xvec6,30], [xvec10,31], [xvec11,40], [xvec12,41]
] execVM "x_server\x_vrespawn2.sqf";

2.60p adresses some remaining problems in revive and the respawn script (script errors). It also adds a restriction how often a wreck can be repaired (Wreck repair point). Default value is 3 times, can be changed in the server lobby. No message how often you can repair it is showing up, you simply can't lift it with wreck chopper anymore and no marker on the map shows up. The wreck is added to garbage collection.

Xeno

Let me say MR. XENO thank you very much for the domination missions your work is great and I have learned a little trying to understand and follow your codes :confused: I hope you continue making missions for this community:):yay: Thanks for the input I will have a go at it.

MR. XENO I have a issue with domination 2.57 and up. Hope you can help me and expain why this happens. I have a new post about it but since you are here Please look at it and tell me why and what I can do to make it work ?

A very unusal question about JIP codes on new missions from the community!

--------------------------------------------------------------------------------

I have no clue why this happens and how to fix it! I will try to explain.

When I edit missions like domination, war in takistan,insurgency,mercenaries and other smaller missions with the ability to recruit AI. I like to use the team switch and high command fucntions so I can control all the units on the mission or with a few friends. It works great for me and how I like to play (RTS/FPS MIX).

What I have noticed is with the newer versions of domination 2.60/war in takistan 1.42 ect. When a new player joins my room and he picks a squad leader all the AI under that squad leader is deleted from the mission. If the new players joins as a single unit or a unit within a squad (not the leader) it works fine and then the player can switch to any team leader or unit and take full control the squad or unit. All the domination missions 2.54 works fine but 2.57 and up will not allow it to wok. WHY and HOW can I change it to get it to wok the way it did on early versions of the missions.

__________________

AVIBIRD 1

Share this post


Link to post
Share on other sites

What I have noticed is with the newer versions of domination 2.60/war in takistan 1.42 ect. When a new player joins my room and he picks a squad leader all the AI under that squad leader is deleted from the mission. If the new players joins as a single unit or a unit within a squad (not the leader) it works fine and then the player can switch to any team leader or unit and take full control the squad or unit. All the domination missions 2.54 works fine but 2.57 and up will not allow it to wok. WHY and HOW can I change it to get it to wok the way it did on early versions of the missions.

Done on purpose for various reasons.

Check x_setupplayer.sqf:

_grpp = group player;
_leader = leader _grpp;
if (!isPlayer _leader || player == _leader) then {
{
	if (!isPlayer _x) then {
		if (vehicle _x == _x) then {
			deleteVehicle _x;
		} else {
			moveOut _x;
			_x spawn {
				waitUntil {vehicle _this == _this};
				deleteVehicle _this;
			};
		};
	};
} forEach units _grpp;
};

Afair removing it should solve your problem.

Btw, there is a small problem in 2.60p, recruited AI will always spawn at the d_AISPAWN object (which is at base) no matter where you use the recruit action. Will fix that asap and upload the changed version.

Edit: Fixed in 2.60q (available @DH).

AI will now spawn 15 meters behind the player if the recruit building is not at base.

Xeno

Share this post


Link to post
Share on other sites
Done on purpose for various reasons.

Check x_setupplayer.sqf:

_grpp = group player;
_leader = leader _grpp;
if (!isPlayer _leader || player == _leader) then {
{
	if (!isPlayer _x) then {
		if (vehicle _x == _x) then {
			deleteVehicle _x;
		} else {
			moveOut _x;
			_x spawn {
				waitUntil {vehicle _this == _this};
				deleteVehicle _this;
			};
		};
	};
} forEach units _grpp;
};

Afair removing it should solve your problem.

Btw, there is a small problem in 2.60p, recruited AI will always spawn at the d_AISPAWN object (which is at base) no matter where you use the recruit action. Will fix that asap and upload the changed version.

Edit: Fixed in 2.60q (available @DH).

AI will now spawn 15 meters behind the player if the recruit building is not at base.

Xeno

Thank you so much for the fast reply do I REMOVE THE WHOLE CODE LINE or just stop it from running using // before it. What is AFAIR REMOVING IT. I am a little lost lol thank you.

I just put // infront and it works great BUT IT GIVES A BAD BUG now. When you do that you can't hear any gun fire, vechicle noise or soldier footsteps but you do hear ordres and soldier chat target that ect. LOL HOW CAN I FIX THAT

---------- Post added at 04:37 PM ---------- Previous post was at 03:53 PM ----------

Done on purpose for various reasons.

Check x_setupplayer.sqf:

_grpp = group player;
_leader = leader _grpp;
if (!isPlayer _leader || player == _leader) then {
{
	if (!isPlayer _x) then {
		if (vehicle _x == _x) then {
			deleteVehicle _x;
		} else {
			moveOut _x;
			_x spawn {
				waitUntil {vehicle _this == _this};
				deleteVehicle _this;
			};
		};
	};
} forEach units _grpp;
};

Afair removing it should solve your problem.

Btw, there is a small problem in 2.60p, recruited AI will always spawn at the d_AISPAWN object (which is at base) no matter where you use the recruit action. Will fix that asap and upload the changed version.

Edit: Fixed in 2.60q (available @DH).

AI will now spawn 15 meters behind the player if the recruit building is not at base.

Xeno

Well it works great if you take out the code line of just // BUt it will give a major bug. You get no load screen, intro music and no gun fire, vechicle noise or soldier footsteps but you do hear ordres and soldier chat target that ect. HOW CAN I FIX THAT lol :confused::( HOPE YOU CAN HELP:j:

Edited by AVIBIRD 1
NEW BUG WHEN YOU DO THAT!

Share this post


Link to post
Share on other sites

All I can say is WOW Xeno you have made this Anniversary Edition so easy to edit and modify!

Genius

Thanks!

Vengeance:)

Share this post


Link to post
Share on other sites

Just an edit I've done on x_client.sqf\x_chop_hud.sqf, based on old 2.54 version:

// by Xeno
#include "x_setup.sqf"
private ["_state", "_vec", "_hud", "_control", "_chopttype", "_hudoff", "_nobjects", "_nearest", "_dummy", "_chdispx", "_nx", "_ny", "_px", "_py", "_control2", "_angle", "_a", "_b", "_dif", "_chdispx2", "_controlxx"];

_X_Chopper_Welcome = {};

disableSerialization;

if (d_show_chopper_welcome) then {
d_rsc_end = true;

d_xxvllist = [];

_X_Chopper_Welcome = {
	private ["_state", "_vec", "_welcome_str1", "_welcome_str2", "_welcome_str3", "_welcome_str4", "_end_welcome", "_hud", "_control"];
	disableSerialization;
	d_rsc_end = false;
	_state = _this select 0;
	_vec = _this select 1;
	_welcome_str1 = format ["Welcome on board, %1!", name player];

	switch (_state) do {
		case 1: {
			_welcome_str2 = "This is the only wreck lift chopper. Anyone can pilot it, and offers medical support.";
			_welcome_str3 = "Remember, it can only lift wrecks, but will carry any size of wreck. Seats: 1P+7C.";
		};
		case 0: {
			_welcome_str2 = "This is the only normal lift chopper. Anyone can pilot it, and has good protection.";
			_welcome_str3 = "It can lift allmost any light vehicle except wrecks. Seats: 1P+3G+22C.";
		};
		default {
			_welcome_str2 = "This is a normal chopper. The Littlebirds are restricted, but Hueys are for everyone.";
			_welcome_str3 = "It is not able to lift anything. Seats: Huey: 1P+2G+4C. MH-6J: 1P+5C. AH-6X: 1P+1C";
		};
	};

	_ttyp = toUpper (typeOf _vec);
	if (count d_xxvllist == 0) then {
		{d_xxvllist set [count d_xxvllist, toUpper _x]} forEach d_check_ammo_load_vecs;
	};
	if (_ttyp in d_xxvllist) then {
		_welcome_str4 = "It IS able to load an ammobox, as the only chopper type that can do this.";
	} else {
		_welcome_str4 = "It is NOT able to load an ammobox, only the Hueys can do that.";
	};

	_end_welcome = time + 14;
	67322 cutRsc["chopper_hud", "PLAIN"]; //chopper_hud = welcome message
	_hud = __uiGetVar(DCHOP_HUD);
	while {vehicle player != player && alive player && player == driver _vec} do {
		_control = _hud displayCtrl 64438;
		_control ctrlSetText _welcome_str1;
		_control = _hud displayCtrl 64439;
		_control ctrlSetText _welcome_str2;
		_control = _hud displayCtrl 64440;
		_control ctrlSetText _welcome_str3;
		_control = _hud displayCtrl 64441;
		_control ctrlSetText _welcome_str4;
		if (time >= _end_welcome) exitWith {};
		sleep 0.431;
	};
	67322 cutRsc ["DOM_RscNothing", "PLAIN",1];
	d_rsc_end = true;
};
};

_ui_forward = "\CA\ui\data\ui_tankdir_forward_ca.paa";
_ui_back = "\CA\ui\data\ui_tankdir_back_ca.paa";
_ui_left = "\CA\ui\data\ui_tankdir_left_ca.paa";
_ui_right = "\CA\ui\data\ui_tankdir_right_ca.paa";
_ui_tohigh = "\CA\ui\data\tankdir_turret_ca.paa";
_ui_ok = "\CA\ui\data\ui_tankdir_tower_ca.paa";
_ui_colorred = [1, 0, 0, 1];
_ui_colorgreen = [0.4, 0.6745, 0.2784, 1];
_ui_coloryellow = [1, 1, 0.3, 1];

while {true} do {
waitUntil {alive player};
waitUntil {sleep random 0.3;vehicle player != player};
_vec = vehicle player;
while {vehicle player != player} do {
	if (player == driver _vec) then {
		if (_vec isKindOf "Helicopter" && !(_vec isKindOf "ParachuteBase") && !(_vec isKindOf "BIS_Steerable_Parachute")) then {
			_chopttype = _vec getVariable "d_choppertype";
			if (isNil "_chopttype") then {_chopttype = -1};
			if (d_show_chopper_welcome) then {
				if (_chopttype > -1) then {
					[_chopttype,_vec] spawn _X_Chopper_Welcome;
					sleep 0.321;
					waitUntil {d_rsc_end};
				};
			};
			if (_chopttype in [0,1]) then { /*0 = lift chopper, 1 = wreck chopper, 2 = normal choppers*/
				if (isNil {_vec getVariable "D_Vehicle_Attached"}) then {_vec setVariable ["D_Vehicle_Attached", false]};
				_search_height = 0;
				_lift_height = 0;
				_possible_types = _vec getVariable "d_lift_types";
				if (_chopttype == 1) then {
					_search_height = 70;
					_lift_height = 50;
				} else {
					_search_height = 50;
					_lift_height = 50;
				};
				_hudoff = true;
				while {vehicle player != player && alive player && player == driver _vec} do {
					if (d_chophud_on) then {
						_hudoff = false;
						_nobjects = nearestObjects [_vec, ["LandVehicle","Air"], _search_height];
						_nearest = objNull;
						if (count _nobjects > 0) then {
							_dummy = _nobjects select 0;
							if (_dummy == _vec) then {
								if (count _nobjects > 1) then {_nearest = _nobjects select 1};
							} else {
								_nearest = _dummy;
							};
							_lift_height = 11;
						};
						_check_type = 0; //0 = nothing, 1 = something to lift, 2 = pinnacle but only if not already 1 and only for choptype 0, 3 = autorotation mode.
						if (_chopttype == 1) then { /*wreck*/
							_check_type = (if(!(isNull _nearest) && (damage _nearest >= 1) && ((typeof _nearest) in _possible_types)) then {1} else {_check_type}); // yes, something to lift for wreck chopper
						} else { /*lift*/
							_check_type = (if(!isNull _nearest && ((typeof _nearest) in _possible_types) && ((position _vec) select 2 > 2.5)) then {1} else {_check_type}); //yes, something to lift for lift chopper
						};
						if (_check_type == 0 && _chopttype == 0) then {
							if (!(_vec getVariable "D_Vehicle_Attached") && getPos _vec select 2 < 100) then {
								if ((getPos uRampObject select 2 < 20) && (speed _vec < 20) && (_vec distance FLAG_BASE > 500)) then {
									_check_type = 2; //there wasn't something to lift, so becomes pinnacle mode if applicable
								};
							};
						};
						_check_type = (if (!(isEngineOn vehicle player) && (getPosATL vehicle player select 2 > 20)) then {3} else {_check_type}); //for auto rotation text
						sleep 0.001;
						if (_check_type > 0) then {
							67321 cutRsc ["chopper_lift_hud", "PLAIN"];
							_chdispx = __uiGetVar(DCHOP_LIFT_HUD);
							switch (_check_type) do {
								case 1 : {
									_control = _chdispx displayCtrl 64440;
									if (_chopttype == 1) then {
										_control ctrlSetText "Wreck Lifting Operation";
									} else {
										_control ctrlSetText "Cargo Lifting Operation";
									};
									_type_name = [typeof _nearest,0] call XfGetDisplayName;
									_control = _chdispx displayCtrl 64438;
									if (!(_vec getVariable "D_Vehicle_Attached")) then {
										_control ctrlSetText format ["Type: %1", _type_name];
									} else {
										_control ctrlSetText format ["Lifting %1", _type_name];
									};
									_control = _chdispx displayCtrl 64439;
									if (getText (configFile >> "CfgVehicles" >> typeof _nearest >> "picture") != "picturestaticobject") then {
										_control ctrlSetText getText (configFile >> "CfgVehicles" >> typeof _nearest >> "picture");
									} else {
										_control ctrlSetText "";
									};

									if (!(_vec getVariable "D_Vehicle_Attached")) then {
										_control = _chdispx displayCtrl 64441;
										_control ctrlSetText format ["Lateral offset: %1m", round(10 * ([getPosASL _vec select 0, getPosASL _vec select 1] distance [getPosASL _nearest select 0, getPosASL _nearest select 1])) / 10];
										_nearest_pos = position _nearest;
										_pos_vec = position _vec;
										_nx = _nearest_pos select 0;_ny = _nearest_pos select 1;_px = _pos_vec select 0;_py = _pos_vec select 1;
										_control = _chdispx displayCtrl 64442;
										if ((position _vec) select 2 >= _lift_height) then {
											_control ctrlSetText "Too high";
											_control ctrlSetTextColor _ui_colorred;
										} else {
											_control ctrlSetText "Height ok";
											_control ctrlSetTextColor _ui_colorgreen;
										};
										if ((_px <= _nx + 4 && _px >= _nx - 4) && (_py <= _ny + 4 && _py >= _ny - 4)) then {
											_control = _chdispx displayCtrl 64441;
											_control ctrlSetTextColor _ui_colorgreen;
	 										if (_pos_vec select 2 < _lift_height) then {
	 											_control = _chdispx displayCtrl 64448;
												_control ctrlSetText _ui_ok;
											};
										} else {
											_control = _chdispx displayCtrl 64441;
											_control ctrlSetTextColor _ui_colorred;
											_control2 = _chdispx displayCtrl 64447;
											_control2 ctrlSetText _ui_tohigh;
											_angle = 0; _a = ((_nearest_pos select 0) - (_pos_vec select 0));_b = ((_nearest_pos select 1) - (_pos_vec select 1));
											if (_a != 0 || _b != 0) then {_angle = _a atan2 _b}; 

											_dif = (_angle - direction _vec);
											if (_dif < 0) then {_dif = 360 + _dif};
											if (_dif > 180) then {_dif = _dif - 360};
											_angle = _dif;
											_control2 = _chdispx displayCtrl 64444;
											if (_angle >= -70 && _angle <= 70) then {
												_control2 ctrlSetText _ui_forward;
											} else {
												_control2 ctrlSetText "";
											};
											_control2 = _chdispx displayCtrl 64446;
											if (_angle >= 20 && _angle <= 160) then {
												_control2 ctrlSetText _ui_right;
											} else {
												_control2 ctrlSetText "";
											};
											_control2 = _chdispx displayCtrl 64443;
											if (_angle <= -110 || _angle >= 110) then {
												_control2 ctrlSetText _ui_back;
											} else {
												_control2 ctrlSetText "";
											};
											_control2 = _chdispx displayCtrl 64445;
											if (_angle <= -20 && _angle >= -160) then {
												_control2 ctrlSetText _ui_left;
											} else {
												_control2 ctrlSetText "";
											};
											sleep 0.001;
										};
									} else {
										_control = _chdispx displayCtrl 64441;
										_control ctrlSetText format ["Dist attached to ground: %1m", round(10 * ((position _nearest) select 2)) / 10];
										if (position _nearest select 2 > 2 || position _nearest select 2 < 0) then {
											_control ctrlSetTextColor _ui_colorred;
										} else {
											_control ctrlSetTextColor _ui_colorgreen;
										};
										_control = _chdispx displayCtrl 64442;
										if (position _nearest select 2 > 10) then {
											_control ctrlSetText "Attached";
											_control ctrlSetTextColor _ui_colorgreen;
										} else {
											if (abs (speed _nearest) > 10) then {
												_control ctrlSetText "Too fast to drop";
												_control ctrlSetTextColor _ui_colorred;
											} else {
												_control ctrlSetText "Drop speed ok";
												_control ctrlSetTextColor _ui_colorgreen;
											};
										};
										sleep 0.001;
									};
								};
								case 2 : {
									_control = _chdispx displayCtrl 64440;
									_control ctrlSetText "Pinnacle Operation";
									_control = _chdispx displayCtrl 64441;
									_control ctrlSetText format ["Ramp height: %1m", round(10 * (getPos uRampObject select 2)) / 10];
									if (getPos uRampObject select 2 > 0.5) then {
										_control ctrlSetTextColor _ui_colorred;;
									} else {
										_control ctrlSetTextColor _ui_colorgreen;;
									};
									_control = _chdispx displayCtrl 64442;
									if (getPos uRampObject select 2 > 0.5) then {
										_control ctrlSetText "Too high";
										_control ctrlSetTextColor _ui_colorred;
									} else {
										_control ctrlSetText "Height ok";
										_control ctrlSetTextColor _ui_colorgreen;
									};
									_control = _chdispx displayCtrl 64438;
									if (!(_vec getVariable "D_Vehicle_Attached")) then {
										_control ctrlSetText format ["Souls on board: %1", count crew vehicle player];
									};
								};
								case 3 : {
									_control = _chdispx displayCtrl 64440;
									_control ctrlSetText "Autorotation";
									_control = _chdispx displayCtrl 64441;
									_control ctrlSetText format ["Speed: %1km/h", round(speed vehicle player)];
									if (speed vehicle player > 50) then {
										_control ctrlSetTextColor _ui_colorred;;
									} else {
										_control ctrlSetTextColor _ui_colorgreen;;
									};
									_control = _chdispx displayCtrl 64442;
									_control ctrlSetText format ["VS: %1m/s", round(velocity vehicle player select 2)];
									if ((velocity vehicle player select 2) > 10.16) then { /*2000 feet/minute, although I'm not sure what is permittable. I have survived this though, at near zero forward velocity*/
										_control ctrlSetTextColor _ui_colorred;
									} else {
										_control ctrlSetTextColor _ui_colorgreen;
									};
									_control = _chdispx displayCtrl 64438;
									_control ctrlSetText format ["Autorotate, don't bail! Nose up 0-10 deg, throttle down, pray."];
								};
							};
						} else {
							67321 cutRsc ["DOM_RscNothing", "PLAIN"];
							67322 cutRsc ["chopper_lift_hud2", "PLAIN"];
							_chdispx2 = __uiGetVar(DCHOP_HUD2);
							_controlxx = _chdispx2 displayCtrl 61422;
							_controlxx ctrlSetText (switch (_chopttype) do {
								case 1: {"Wreck Lift Chopper"};
								case 0: {"Lift Chopper"};
							});
						};
					} else {
						if (!_hudoff) then {
							_hudoff = true;
							67321 cutRsc ["DOM_RscNothing", "PLAIN"];
							67322 cutRsc ["DOM_RscNothing", "PLAIN"];
						};
					};
					sleep 0.231;
				}; //end while alive player and all that, which followed _hudoff = true;
				67321 cutRsc ["DOM_RscNothing", "PLAIN"];
				67322 cutRsc ["DOM_RscNothing", "PLAIN"];
			} else {
				_hudoff = true;
				while {vehicle player != player && alive player && player == driver _vec} do {
					67322 cutRsc ["chopper_lift_hud2", "PLAIN"];
					_chdispx2 = __uiGetVar(DCHOP_HUD2);
					_control = _chdispx2 displayCtrl 61422;
					_control ctrlSetText "Normal Chopper";
					if (!(isEngineOn vehicle player) && (getPosATL vehicle player select 2 > 20)) then {
						_hudoff = false;
						67321 cutRsc ["chopper_lift_hud", "PLAIN"];
						_chdispx = __uiGetVar(DCHOP_LIFT_HUD);
						_control = _chdispx displayCtrl 64440;
						_control ctrlSetText "Autorotation";
						_control = _chdispx displayCtrl 64441;
						_control ctrlSetText format ["Speed: %1km/h", round(speed vehicle player)];
						if (speed vehicle player > 50) then {
							_control ctrlSetTextColor _ui_colorred;;
						} else {
							_control ctrlSetTextColor _ui_colorgreen;;
						};
						_control = _chdispx displayCtrl 64442;
						_control ctrlSetText format ["VS: %1m/s", round(velocity vehicle player select 2)];
						if ((velocity vehicle player select 2) > 10.16) then { /*2000 feet/minute, although I'm not sure what is permittable. I have survived this though, at near zero forward velocity*/
							_control ctrlSetTextColor _ui_colorred;
						} else {
							_control ctrlSetTextColor _ui_colorgreen;
						};
						_control = _chdispx displayCtrl 64438;
						_control ctrlSetText format ["Autorotate, don't bail! Nose 0°-10° up, collective down."];
					} else {
						if (!_hudoff) then {
							_hudoff = true;
							67321 cutRsc ["DOM_RscNothing", "PLAIN"];
							67322 cutRsc ["DOM_RscNothing", "PLAIN"];
						};
					};
					sleep 0.421;
				}; //end while alive player and all that, which followed _hudoff = true;
				67321 cutRsc ["DOM_RscNothing", "PLAIN"];
				67322 cutRsc ["DOM_RscNothing", "PLAIN"];
			};
		};
	};
	sleep 0.432;
};
waitUntil {sleep random 0.2;vehicle player == player};	
};

The above code relies on a preplaced object in the mission; I placed a signs\roadcone and named it uRampObject. In init.sqf, I also added this somewhere on server:

uRampObject allowDamage false;
uRampObject enableSimulation false;
[color="Red"]uRampObject hideObject false; //TODO: set to true when done[/color]

Edit: Forgot to add the attachment, which happens in x_client\x_helilift.sqf:

uRampObject attachTo [_vehicle, [0, -7, -3]];

I'm also punishing chopper pilots by -10 points for bailing out if there are people still in the chopper when they do (and the chopper is flying of course), by adding this to x_client\x_checkhelipilotout.sqf:

	if ((getPos _vehicle select 2 > 10) && (count crew _vehicle > 0)) then {
		["d_pas", [player, -10]] call XNetCallEvent;
		(format ["You lost 10 points for bailing an airborne chopper with people still in it! Learn to autorotate!", _points]) call XfHQChat;
	};

So, what it does, what's the point? The chopper hud is pretty much only used for one purpose; lifting to show relative position to what you try to pick up. This version adds a couple of small things to that.

1) Ramp altitude for pinnacle operations (requires some skill, and pretty much impossible to communicate on public servers as communication are severely lacking there). That is added only to the CH-47 of course, as that is the only one with a rear exit and ramp that requires this extra aid.

is an Arma pinnacle extraction, as done by Shack Tactical, and they make it look disturbingly easy :D Here are some examples from the real world. Note that you cannot order AI to get out during a slanted pinnacle on a cliffside or rooftop, as they demand the chopper itself to be close to the ground rather than just the exit (so it appears to me anyway).
is an aft wheel pinnacle landing in Afghanistan. This requires some skill, even with the added UI help, make sure you have GPS on as well.

2) For all helicopters I also added some basic quick help to aid (especially newcomers) doing autorotation (Arma style, not all that realistic of course), where the idea is to make them better at autorotations to save the souls on board rather than just bail out and screw over those remaining in the chopper. If you manage to get the speed down by increasing your pitch to positive, and lower the throttle/collective so that both descent speed and forward speed gets in the green, you significantly increase the chance of surviving such a forced landing. Sometimes you're just plain unlucky though, and I don't know what the "limit values" actually are to successfully autorotate.

3) For lifting I changed the information a little, and using colors to indicate good values. Distance now shows lateral distance only, and on the right shows the height. When both go green, you are allowed to lift the vehicle. Haven't checked with wrecks yet, could bug out badly :p

I also notify if vehicle gets destroyed during lifting, and remove the "Release Vehicle" action, but I haven't tested that yet in MP if it's working ok, so I didn't include that here. Might be part of later versions anyway, not sure.

Summary: Just a little something that makes pinnacle landings with a CH-47 easier when communications are lacking, and to help newcomers out a little when they loose their engines, by punishing them if they don't attempt when there is still people on board that deserves it.

Edited by CarlGustaffa
Forgot something important.

Share this post


Link to post
Share on other sites

Been fighting trying to edit the 2.6 version of c030 ACE Domination Takistan for awhile now but cant seem to get it to work..can edit the non ACE version version bnut the mission sqm's are different in each wich is why I think its not showing up in the mpeditor..I can depbo it just fine but it doesnt show up..just shows the map with nothing on it..here are both of the mission sqm files:

Non ACE version of 2.6..just a portion of it..its pretty big but you get the idea:

version=11;

class Mission

{

addOns[]=

{

"CA_Modules_ARTY",

"camisc3",

"takistan",

"cacharacters_e",

"CAAir_E_UH60M",

"caair_e_ch_47f",

"CAWheeled_E_stryker",

"CAWheeled_E",

"camisc_e_wf",

"camisc_e",

"CAAir_E_AH6J",

"CAAir_E_UH1H_EP1",

"ca_modules_functions"

};

addOnsAuto[]=

{

"cacharacters_e",

"CA_Modules_ARTY",

"ca_modules_functions",

"caair_e_ch_47f",

"CAAir_E_UH1H_EP1",

"CAAir_E_UH60M",

"CAWheeled_E_stryker",

"camisc_e",

"CAWheeled_E",

"camisc_e_wf",

"camisc3",

"CAAir_E_AH6J",

"takistan"

};

randomSeed=6464821;

class Intel

{

briefingName="co30 DomiOA! West [2.60]";

briefingDescription="by Xeno";

startWeather=0;

forecastWeather=0;

year=2007;

month=6;

day=6;

hour=0;

minute=0;

};

class Groups

{

items=29;

class Item0

{

side="WEST";

class Vehicles

ACE Version example:

raP -‘ version Mission Z Intro 5 OutroWin àOutroLoose … -‘ addOns CA_Modules_ARTY camisc3 takistan cacharacters_e CAAir_E_UH60M caair_e_ch_47f CAWheeled_E_stryker CAWheeled_E camisc_e_wf camisc_e CAAir_E_AH6J CAAir_E_UH1H_EP1 ca_modules_functions ace_sys_air_refuel ace_sys_repair ace_sys_easa ace_main acex_veh_brdm CATracked_E cawheeled_e_brdm2 acex_veh_btr70 addOnsAuto cacharacters_e CA_Modules_ARTY ca_modules_functions ace_main caair_e_ch_47f CAAir_E_UH1H_EP1 CAAir_E_UH60M CAWheeled_E_stryker camisc_e ace_sys_repair CAWheeled_E camisc_e_wf camisc3 CAAir_E_AH6J ace_sys_air_refuel acex_veh_brdm CATracked_E cawheeled_e_brdm2 acex_veh_btr70 takistan randomSeed 5Â¥b Intel 2 Groups í Vehicles X5 Markers çZ Sensors ‡ 5 briefingName co@30 Domination OA! ACE West [2.60n] briefingDescription by Xeno startWeather forecastWeather year × month day hour minute í items Item0 ] Item1  Item2 ! Item3 ² Item4 l Item5 ' Item6 i# Item7 V$ Item8 /% Item9 ê% Item10 Â¥& Item11 `' Item12 ( Item13 Ö( Item14 ‘) Item15 L* Item16 + Item17 Â+ Item18 }, Item19 9- Item20 õ- Item21 ±. Item22 m/ Item23 )0 Item24 Ã¥0 Item25 ¡1 Item26 ]2 Item27 3 Item28 Õ3 Item29 ‘4 X5 side WEST Vehicles }  items Item0 Å¡

I open both with notepad but ACE version looks all jumbled up...

My goal for editing is simply add vehicles, barracks,ammo boxes,support vehicles etc to the base...I play this version with just a couple friends and we do mainly sidemissions and I'd like to have the base fully equipped the way I want it...just having a tough time getting it to work..any help would be great..Ive done everything that was replied to in older posts but still have issues with the ACE 2.6 version....want to get this edited because playing without ACE just isnt the same..lol Thanks!

JC

Share this post


Link to post
Share on other sites

Diesel Tech, why don't you simply use the mission_west_ace_oa.sqm in the dom_maker folder and rename it to mission.sqm ?

All version are created the same way, including the ACE version. One source folder, different mission.sqm files and a little magic to build them (actually the magic part is just a lousy batch file).

And please rename the mission folder for editing, like co30_domace.takistan.

The ArmA editor cuts off folder names which are too long and you end up with two folders if you save. One which only holds the mission.sqm (original mission folder name shortened) and one folder which holds the original mission (the one with the longer folder name).

Xeno

Share this post


Link to post
Share on other sites
Diesel Tech, why don't you simply use the mission_west_ace_oa.sqm in the dom_maker folder and rename it to mission.sqm ?

All version are created the same way, including the ACE version. One source folder, different mission.sqm files and a little magic to build them (actually the magic part is just a lousy batch file).

And please rename the mission folder for editing, like co30_domace.takistan.

The ArmA editor cuts off folder names which are too long and you end up with two folders if you save. One which only holds the mission.sqm (original mission folder name shortened) and one folder which holds the original mission (the one with the longer folder name).

Xeno

Thanks Xeno for the reply..will work on that tonite..I appreciate all of the hard work you do and especially for taking the time to answer stupid questions from noobs like me..lol:)

JC

Success on the editing tonite! Thanks again to All especially Xeno for his hard work and his time to reply.

Edited by Diesel Tech JC

Share this post


Link to post
Share on other sites

Hi,

For some reason, on my domination, the bonusvehicles from sidemissions and MT don't show up after completion.

The code in the i_common file regarding sm_bonus_vehicle_array & mt_bonus_vehicle_array are still untouched by me, so i don't know if anyone else turned it off or if something else is wrong.

This is a part of the code for the sidemissions:

#endif

};

d_sm_bonus_vehicle_array = (

#ifdef __DEFAULT__

switch (d_own_side) do {

case "GUER": {["A10","AH1Z","UH1Y","AV8B","AV8B2", "AH64D_EP1", "M1A2_TUSK_MG","M1A1"]};

case "WEST": {

switch (true) do {

case (__OAVer): {

if (__ACEVer) then {

Greetz, Milan.

Share this post


Link to post
Share on other sites

I still need help to get the code to run right to allow only pilots to fly. I followed what MR. Xeon told me to do but I must be doing something wrong like always:butbut: if i put the class names or the editor name of the units within the brackets of the code line NOBODy CAN FLY and if empty EVERYONE CAN FLY. Help this should be a simple thing to get to work:confused:

Share this post


Link to post
Share on other sites

ran into the same issue once, did a workaround for it;

place a trigger somewhere (axis 0).

activation: none - repeatedly - present

condition:

vehicle player isKindOf "plane" && typeOf player != "US_Soldier_Pilot_EP1";

activation:

if (player == driver vehicle player) then {player action ["eject",vehicle player]; player groupChat "Class restriction: Pilots only"};

note that this works in this case only for planes. change "plane" to "air" if you want to make the restriction for other air classes too. Not sure, but i guess, the parachute is affected too then :P

Edited by Noricum

Share this post


Link to post
Share on other sites

Having an issue modifying chernarus ace version....i used the mission sqm from the :dom maker" and renamed it but when i load it all up in game it doesnt have all the ACE features...if I depbo chernarus domination i get that garbled miussion sqm again so I used the one from the dom maker...wich is

"mission_west_ace_sqm" renamed to "mission.sqm"..edit it and repack ..loads up all the editing i did at base is their..but without the ACE features...any tips help would be great..Thanks

JC

Share this post


Link to post
Share on other sites

I just tried what you mentioned and still doesnt have the ACE stuff in it..I did however notice something...as I mentioned above I used Eliteness to unpbo tho mission from the 2.60 anniversery pack from DevHeaven....the mission sqm is all garbled so i used the sqm from the dom maker and renamed it (wich is what I did with takistan and worked fine) but I think the versions are different...the dom maker version is 2.12

"briefingName="co@40 DomiA2! ACE West [2.12]";

wich is mission_west_ace.sqm

But I am trying to Edit the 2.6 version...

So I really need the 2.6 version sqm I think...wich when i unpbo isnt readable..if thats the case...is their anyplace to get the 2.6 version sqm?

Share this post


Link to post
Share on other sites

open the mission.sqm with eliteness, copy all the lines, make yourself a mission.sqm and insert the copied files there. replace the dom mission.sqm with your new one, finito ;)

Share this post


Link to post
Share on other sites

Thanks for the reply...I'll give that a try...also when I enable _ACE_ should i do that on every set up.sqf or just the one inside the main folder..Thanks again!

JC

Share this post


Link to post
Share on other sites

run setupcopy.bat from the mission folder. That will copy setup.sqf (and macros.sqf) to everywhere that needs it.

Share this post


Link to post
Share on other sites

But to go ferther : in the RespawnGroups.fsm

before changing and testing we think it could be in the Class Loop2 that the delay between each Respawn Groups could be : so we could change _timenow = time +3.11 to time + 300.

class Loop2

But all this is on a loop to check the condition on a counter.

And the condition counter will respawn new reinforcements group if counter = 0 (all AI kill in the previous respawngroup).

It is at this point that we would like to put a delay around 300 sec.

So after several test in Mp on our R3F_server we have create a random to set the ground reinforcement.

In fsms/RespawnGroups.fsm

between line 88 and 106

if ((count playableUnits) < 13) then {" \n

" _tempo = 1500;" \n

" } else {" \n

" _tempo = 900;" \n

" };" \n

"" \n

" _timenow = time + (_tempo + (random _tempo));" \n

      "if (typeName _onegrpar == ""ARRAY"") then {" \n
      "	_grp = _onegrpar select 0;" \n
      "	if ((isNull _grp || (_grp call d_fnc_GetAliveUnitsGrp) == 0) && (time > (_grp getVariable ""X_CREATED""))) then {" \n
      "		_mg_array = _onegrpar select 1;" \n
      "		_resp_mid = _mg_array select 10;" \n
      "		_rpos = [_resp_mid select 0, 600, 400, _resp_mid select 1] call d_fnc_GetRanPointSquare;" \n
      "		_mg_array set [1, [_rpos]];" \n
      "		d_respawn_ai_groups set [_counter, -1];" \n
      "		_mg_array spawn d_fnc_makegroup;" \n
      "		if ((count playableUnits) < 13) then {" \n
  "			_tempo = 1500;" \n
  "		} else {" \n
  "			_tempo = 900;" \n
  "		};" \n
      "" \n
      "		_timenow = time + (_tempo + (random _tempo));" \n
      "	};" \n

this changes makes reinforcement no more often than every 1500 to 2400sec if less than 13 players

and 900 to 1800 sec if more than 13 players.

It is efficient.

Edited by killjoer3f

Share this post


Link to post
Share on other sites

wow, thanks a lot for sharing!

Tried something too, but i have no plan of fsm.

Ahm, can please post the whole class loop2 code, from beginning to the end, i somehow get critical errors/crashes when i copy and paste the lines above.

Edited by Noricum

Share this post


Link to post
Share on other sites

Got most everything working now..just a few small issues I cant figure out..

1) Added 2 choppers but cant get them to be lift choppers.

2)some choppers/planes I add have AI in them....how do I take all of the AI out?

3)I want this set up for a small 8 person server to do the side missions only..is their anyway to limit the positions availible to Squad Leader,Pilot,Artillary,Rifleman etc etc? so their isnt a huge list to choose from..just 8 player slots? Thanks again for all of the help..learning more stuff all the time!

JC

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

×