Jump to content

Kempco

Member
  • Content Count

    147
  • Joined

  • Last visited

  • Medals

Posts posted by Kempco


  1. The below code is from the init.sqf in the HALO folder. The red text near the end indicates the variable that is missing. The Green text shows you where it should be. Do not change this value to anything less than 60. Copy the the red text and paste it where trhe green text indicates. Dont wory about defining it twice. Only matters that the server gets it.

    */
    //==========================OPTIONS===============================//
    //----------------------------------------------------------------//
    //Halo Setup Restrictions 
    JTK_HALO_Command_Unit = leader group player; 
    
    //Minimum HALO Altitude
    _min_alt_C130 = 2000;
    _min_alt_MV22 = 1000;
    
    //Maximum HALO Altitude
    _max_alt_C130 = 10000;
    _max_alt_MV22 = 5000;
    
    //Minimum Altitude Requiring Oxygen 
    JTK_Bailout_02_Altitude = 6000;
    
    //Air speed used to determine the velocity of a unit upon exiting the C130
    _air_speed_C130 = 300;
    _air_speed_MV22 = 175;
    
    //Altitude AI will Deploy Chutes
    JTK_HALO_AI_DeployChuteAlt = 250;
    
    //Margin of Error For JTK Jump computer Altimeter 
    JTK_GPS_Altitude_Error_Margin = 0;
    
    //Class Name for Oxygen Mask ID
    JTK_Oxygen_Mask_ID = "Pilot_Mask_v";
    
    //Define Pilot classes 
    JTK_HALO_Pilot_Type_West = "US_Soldier_Pilot_EP1"; //West
    JTK_HALO_Pilot_Type_East = "TK_Soldier_Pilot_EP1"; //EAST
    
    //Allow JTK Identities (Ignore if using ACE).
    JTK_Use_Identity_Config = true;
    
    //JTK Idenetites with cammo faces (requires JTK_Use_Identity_Config is true.Ignore if using ACE).  
    JTK_Cammo_Faces = true;
    
    //Altitude for Water Insertions
    JTK_HALO_Water_Insertion_Altitude = 500;
    
    //Minimum Distance From Land For Water Insertion
    JTK_HALO_Water_Insertion_MinDistToLand = 350;
    
    //Show arrow that indicate boarding positions.
    JTK_HALO_HideHelpArrows = true;
    
    //--------------ACE Options-----------------//
    //Disable ACE Altimeter.
    JTK_HALO_Disable_ACE_Altimeter = true;
    
    //Disable JTK Jump Computer When Using ACE
    JTK_HALO_Disable_Jump_Computer = false;
    
    //Chute Backpack Model Used in Single Player to simulate Parachute. (NOTE: Do NOT use the "ACE_ParachutePack").
    JTK_ACE_HALO_CHUTE = "ACE_Backpack_US";
    
    //WIP: Set to true to copy And Paste HALO position to clipboard, you can then use that to bypass HALO setup.
    JTK_HALO_Capture = false;
    
    //WIP: Execute ByPass Here
    JTK_ByPassSetUp = false;
    
    [color="#00FF00"]JTK_HALO_Delay = 60; //<==========================================================================Move Here[/color]
    //-----------------------------------------------------------------------------//
    
    //==============================YOU ARE DONE===================================//
    //-----------------------------------------------------------------------------//
    //=============================================================================//
    
    JTK_HALO_Path = "JTK\HALO\";
    
    
    //Server Only
    if (isserver) then {
    JTK_HALO_Aircraft = [];
    _types = ["C130J_US_EP1","C130J","MV22"];
    _static = ["C130J_static_EP1","C130J_static_EP1","MV22"];
    _sounds = ["JTK_C130_doors","JTK_C130_doors","JTK_MV22_doors"];
    _alt_limits = [[_min_alt_C130,_max_alt_C130],[_min_alt_C130,_max_alt_C130],[_min_alt_MV22,_max_alt_MV22]];
    _speed_limits = [[_air_speed_C130,(_air_speed_C130/2)],[_air_speed_C130,(_air_speed_C130/2)],[_air_speed_MV22,(_air_speed_MV22/2)]];
    
    //Needed to confirm
    #include "scripts\Common_Arrays.sqf"
    #include "scripts\Common_Text.sqf"
    
    _air = nearestObjects [[0,0,0],["Air"],20000];
    if (count _air > 0) then {
    	_aircraft_west = [];
    	_aircraft_east = [];
    	for "_i" from 0 to (count _air - 1) do {
    		if (typeOf (_air select _i) in _types) then {
    			if ((_air select _i) getVariable "jtk_halo_aircraft") then {
    
    				_side = if ((format["%1",((_air select _i) getVariable "jtk_halo_aircraft_side")] == "<null>") OR (format["%1",((_air select _i) getVariable "jtk_halo_aircraft_side")] == "west")) then {west}else{east};
    				_isC130 = if ((_static select (_types find (typeof(_air select _i)))) == "C130J_static_EP1") then {true}else{false};
    
    				_attachArays = switch (typeof(_air select _i)) do {
    					case "C130J_US_EP1":{if (isMultiplayer) then {JTK_AttachToArrays_C130}else{JTK_AttachToArrays_C130_AI}};
    					case "C130J":{if (isMultiplayer) then {JTK_AttachToArrays_C130}else{JTK_AttachToArrays_C130_AI}};
    					case "MV22":{if (isMultiplayer) then {JTK_AttachToArrays_MV22}else{JTK_AttachToArrays_MV22_AI}};
    				};
    
    				_dist2mrker = switch (typeof(_air select _i)) do {
    					case "C130J_US_EP1":{if (isMultiplayer) then {400}else{400}};
    					case "C130J":{if (isMultiplayer) then {400}else{400}};
    					case "MV22":{if (isMultiplayer) then {300}else{300}};
    				};
    
    				(_air select _i) setVariable ["side",_side,true];
    				(_air select _i) setVariable ["is a C130",_isC130,true];
    				(_air select _i) setVariable ["door sound",(_sounds select(_types find (typeof(_air select _i))))];
    				(_air select _i) setVariable ["attach arrays",_attachArays];					
    				(_air select _i) setVariable ["altitude limits",(_alt_limits select(_types find (typeof(_air select _i)))),true];
    				(_air select _i) setVariable ["speeds",(_speed_limits select(_types find (typeof(_air select _i)))),true];
    				(_air select _i) setVariable ["Dist2MarkBuffer",_dist2mrker,true];
    				(_air select _i) setVariable ["static type",(_static select (_types find (typeof(_air select _i))))];
    
    
    				if (_side == west)then{_aircraft_west = _aircraft_west + [(_air select _i)]};
    				if (_side == east)then{_aircraft_east = _aircraft_east + [(_air select _i)]};
    			};
    		};
    	};
    	JTK_HALO_Aircraft = JTK_HALO_Aircraft + [_aircraft_west];
    	JTK_HALO_Aircraft = JTK_HALO_Aircraft + [_aircraft_east];
    	//if (count _aircraft_west > 0) then {JTK_HALO_Aircraft = JTK_HALO_Aircraft + [_aircraft_west]};
    	//if (count _aircraft_east > 0) then {JTK_HALO_Aircraft = JTK_HALO_Aircraft + [_aircraft_east]};
    
    	JTK_HALO_Terminate = if (count JTK_HALO_Aircraft > 0)then{false}else{true};
    
    	publicVariable "JTK_HALO_Aircraft";
    	publicVariable "JTK_HALO_Terminate";
    
    	if (count JTK_HALO_Aircraft == 0) exitWith {sleep 5; call JTK_HALO_Error_C130_UnDefined};//Terminate if no aircraft are detected
    
    	#include "CompileFunctions.sqf"
    
    	for "_i" from 0 to (count JTK_HALO_Aircraft - 1) do {
    		for "_j" from 0 to (count (JTK_HALO_Aircraft select _i) - 1) do {
    			[((JTK_HALO_Aircraft select _i) select _j)] execVM (JTK_HALO_Path+"SetUp.sqf");
    			sleep 2;
    		};
    	};
    };
    };
    
    
    
    if (isDedicated) exitWith {};
    if (isserver) then {sleep 5};
    WaitUntil{!isNull player};
    if (JTK_HALO_Terminate) exitWith {player globalChat "HALO Script Terminated"};
    
    if (isNil "JTK_HALO_Funcs_Compiled") then {
    #include "CompileFunctions.sqf"
    };
    
    
    if (!isMultiplayer) then {
    jtk_MrkrsW = [];
    jtk_MrkrsE = [];
    _aircraft_count = count(JTK_HALO_Aircraft select 0) + count(JTK_HALO_Aircraft select 1);
    
    for "_i" from 0 to (count JTK_HALO_Aircraft - 1) do { 
    	for "_j" from 0 to (count (JTK_HALO_Aircraft select _i) - 1) do { 
    		((JTK_HALO_Aircraft select _i) select _j) spawn {
    			While {true} do { 
    				sleep 3;
    				if ((format ["%1",(_this getVariable "JTK_HALO_STATIC")]) != "<null>") exitWith {
    					_static = _this getVariable "JTK_HALO_STATIC";
    					_side = _this getVariable "side";
    					_m = _this getVariable "JTK_HALO_DecoyMarker";
    
    					[player,_this,_static] execFSM (JTK_HALO_Path+"fsms\MonitorCargo.fsm");
    					if (_side == west) then {jtk_MrkrsW = jtk_MrkrsW + [_m]}else{jtk_MrkrsE = jtk_MrkrsE + [_m]};
    				};
    			};
    		};
    	};
    };
    WaitUntil {_aircraft_count == ((count jtk_MrkrsW) + (count jtk_MrkrsE))};
    //hint format ["Markers West: %1\nMarkers East: %2",count jtk_MrkrsW,count jtk_MrkrsE];	
    _markersToHide = if ((side player) == west) then {jtk_MrkrsE}else{jtk_MrkrsW};
    {_x setmarkerType "empty"} foreach _markersToHide;
    }else{
    for "_i" from 0 to (count JTK_HALO_Aircraft - 1) do {
    	for "_j" from 0 to (count (JTK_HALO_Aircraft select _i) - 1) do {
    		((JTK_HALO_Aircraft select _i) select _j) spawn {
    			While {true} do { 
    				sleep 3;
    				if ((format ["%1",(_this getVariable "JTK_HALO_STATIC")]) != "<null>") exitWith {
    					_static = _this getVariable "JTK_HALO_STATIC";
    					_side = _this getVariable "side";
    					//_m = _this getVariable "JTK_HALO_DecoyMarker";
    
    					if (_side == (side player)) then {
    						[player,_this,_static] execFSM (JTK_HALO_Path+"fsms\MonitorCargo.fsm");
    						[_this,"ON"] call JTK_HALO_Boarding_Aircraft_Lights
    					}else{
    						//_m setmarkerTypeLocal "empty";
    					};
    				};
    			}; 
    		};
    	};
    };
    }; 
    
    //Check for ACE
    JTK_ACE_Detected = if (isClass(configFile>>"CfgPatches">>"ace_main")) then {true}else{false};
    
    //Other Vars
    JTK_Debug_Halo = false;
    JTK_HALO_Time_Before_Jump = 30;//Not really aplicable anymore
    [color="#FF0000"]JTK_HALO_Delay = 60; //<=======================================================================================[/color]
    
    if (JTK_Bailout_02_Altitude >= 2000) then {
    JTK_HALO_Mask_Removal_Altitide = JTK_Bailout_02_Altitude - 1000;
    }else{JTK_HALO_Mask_Removal_Altitide = JTK_Bailout_02_Altitude - 500};
    
    //Distance Vars
    JTK_HALO_RP_Min_Radius = 100;
    JTK_HALO_Max_GPS_Zoom = 0.75;
    
    //Check if ACE ID set. If Not Disable ID switch in MP
    if (JTK_ACE_Detected) then {
    _AceIdSet = configFile >> "CfgIdentities" >> "ACE_Original_Identity" >> "name";
    if ((getText(_AceIdSet) == "") OR (getText(_AceIdSet) != name player)) then {
    	if (isMultiplayer) then {JTK_CanChangeID = false}else{JTK_CanChangeID = true};
    }else{JTK_CanChangeID = true};
    }else{
    execVM (JTK_HALO_Path+"rsc\EHs.sqf"); 
    }; 
    
    //Team Switching In Singleplayer
    if (!(isMultiplayer) AND (teamSwitchEnabled)) then {onTeamSwitch {[_from,_to] execVM (JTK_HALO_Path+"scripts\OnTeamSwitch.sqf")}};
    
    //Killed EH to return gear if killed during jump 
    player addEventHandler ["killed", {[] execVM (JTK_HALO_Path+"scripts\Player_Killed.sqf")}];
    
    //Pass as PublicVariable to allow access if they change teams in mission
    if (JTK_ByPassSetUp) then {
    if (player == JTK_HALO_Command_Unit) then {player setVariable ["JTK_HALO_Command_Unit",true,true]};
    }else{
    if (player == JTK_HALO_Command_Unit) then {player setVariable ["JTK_HALO_Setup_Access",true,true]};
    };
    
    //Define Variables For Calculating Min Zoom and Map Center
    [player,false,true] execFSM (JTK_HALO_Path+"fsms\DefineMapVars.fsm");
    
    JTK_HALO_Mask_Layer = 452;
    JTK_HALO_Cinema_Border_Layer = 453;
    JTK_HALO_GPS_Layer = 454;
    JTK_HALO_GPS_Load_Layer = 455;
    JTK_HALO_Action_Layer = 456; 
    JTK_ProgressBar_Layer = 457; 
    JTK_ClientSyncStatus_Layer = 1000;
    
    //Handle Idenites
    _faceType = if (JTK_Cammo_Faces) then {"JTK_Identity_Cammo"}else{"JTK_Identity"};
    if (isMultiplayer) then {
    if ((!JTK_ACE_Detected) AND (JTK_Use_Identity_Config)) then {
    	player setVariable ["JTK_Identities",_faceType call JTK_GetIdentity];
    	player setIdentity ((player getVariable "JTK_Identities") select 0);
    	if (ismultiplayer) then {JTK_Call_PVEH = [[player,((player getVariable "JTK_Identities") select 0)], compile "(_this select 0) setIdentity (_this select 1)"]; publicVariable  "JTK_Call_PVEH"}; 
    	JTK_CanChangeID = true;
    };
    }else{
    if ((!isMultiplayer) AND (JTK_Use_Identity_Config)) then {
    	player setVariable ["JTK_Identities",_faceType call JTK_GetIdentity];
    	player setIdentity ((player getVariable "JTK_Identities") select 0);
    	JTK_CanChangeID = true;
    
    	//Set IDs for AI Squad Members
    	if (count units group player > 1) then {
    		{_x setVariable ["JTK_Identities",_faceType call JTK_GetIdentity];_x setIdentity ((_x getVariable "JTK_Identities") select 0)} foreach (units group player -  [player]);
    		JTK_AI_CanChangeID = true;
    	}else{JTK_AI_CanChangeID = false}; 
    };
    };
    
    if (true) exitWith {};


  2. Tested everything and so far no problems when playing, but I did check my .rpt and getting same error as ssechaud. I did the testing in editor and hosted server.

    On a side note, anyway to get the marker to disappear from the map after the halo is complete and all units are on the ground?

    Look for the MarkDropZone.sqf in the scripts folder, and replace it with the following:

    //by Kempco
    _aircraft 	= _this select 0;
    _DZ 		= _this select 1;
    _side		= _this select 2;
    
    _dropZoneMarker = _aircraft getVariable "JTK_HALO_DropZoneMarker";
    deleteMarker _dropZoneMarker;//Delete Just in case Old One Is Still Active
    _name = format["JTK_HALO_DZ_Marker_%1",_aircraft];
    _m = createMarker [_name,_DZ];
    _m setMarkerColor "COLORGreen";
    _m setmarkerType "mil_end";
    _m setMarkerSize [0.7,0.7];
    _aircraft setVariable ["JTK_HALO_DropZoneMarker",_m,true];
    
    if (typeName(_aircraft getVariable "JTK_HALO_VehDrop") != "BOOL") then {
    _m setmarkerText "";
    _m setMarkerColor "ColorBlue";
    };
    
    [_aircraft] spawn {
    _aircraft = _this select 0;
    WaitUntil {(_aircraft getVariable "JTK_HALO_Takeoff") OR (_aircraft getVariable "JTK_HALO_Cancelled")};
    if (_aircraft getVariable "JTK_HALO_Takeoff") then {
    	sleep 2;
    	_HALO_units = _aircraft getVariable "HALO_Units";
    	{WaitUntil {position _x select 2 > 100}} foreach _HALO_units;
    	{WaitUntil {position _x select 2 <= 50}} foreach _HALO_units;
    };	
    sleep 10;
    _m = _aircraft getVariable "JTK_HALO_DropZoneMarker";
    if (!isNil "_m") then {deletemarker _m};
    };


  3. Thanks for the update! :) I had a quick test with ACE and default settings copying from the example mission, was able to do one jump with each halo vehicle then there was no action menu entry for doing another. RPT had this pop up:

    Error loading control mpmissions\__CUR_MP.Chernarus\description.ext/JTK_HALO_Dlg/Controls/JTK_Confirm_txt_ALTITUDE/
    Error loading control mpmissions\__CUR_MP.Chernarus\description.ext/JTK_HALO_Dlg/Controls/JTK_Confirm_txt_HEADING/
    Error loading control mpmissions\__CUR_MP.Chernarus\description.ext/JTK_HALO_Dlg/Controls/JTK_Confirm_txt_GRID/
    

    Was it a dedicated server? Forgot to define the delay var. Hosted and local not an issue.


  4. Kempco,

    Hey, I have hopefully what's nothing more than a quick question. Is there a class name or some kind of parameter I can use in order to start a mission with the Suppressor already attached to whatever weapon I'm using? The reason I ask is b/c for one, I use ACE pretty much 100% of the time, however, as I mentioned on another topic, I've had an issue using certain functions of that MOD, in particular the "Self Interaction Menu." It just doesn't appear for me and I'm also unable to edit any of the settings, in this case, the key commands. I can go into the settings screen but not only can I not change any of the key settings, I don't even know what some of them are since NONE of them have anything listed. The box is empty.

    For example, the "Self Interaction Menu" is listed, but the box that's to its right, is empty and shows nothing. Its just a white box. So, I'm trying to a least find some shortcuts around the issue for right now. Hence, why I ask about a class name or start up parameter.

    Thank you.

    Not really, the easiest way would be to get the weapon you want from the JTK crate and equip it. Or if your dead set on starting with the suppressed version you could do the following:

    1. Place a weapons crate with all the non-suppressd variants on the map.

    2. Go through and find what weapon you want to start with, without the suppressor.

    3. Use the script to equip the suppressor to said weapon.

    4. Create a trigger: Activation radio ALPHA, repeatable, and in the On Act. field copy and paste the following:

    On Activation:

    MyWeapon = currentWeapon player;
    hintSilent format ["Weapon:\n\n%1\n\nHas been coppied to clipboard.",MyWeapon];
    copyToClipboard str(MyWeapon);

    The above code will copy and paste and the name of your weapon to your clipboard.

    7. Once you have the weapon name copy and paste it into the following script:

    _unit = _this select 0;
    
    _weapon = YOUR_WEAPON_NAME_FROM_CLIPBOARD;//<==============HERE
    _number_of_mags = 5;
    _mag = getArray(configFile >> "CfgWeapons" >> _weapon >> "magazines");
    
    removeAllweapons _unit;
    
    for "_i" from 1 to _number_of_mags do {_unit addmagazine _mag}; 
    _unit addWeapon _weapon; 


  5. UPDATE: v1.5

    I think the last two updates (1.3 and 1.4) may have broken more things then they fixed. Anyway, the following should be a huge improvement, especially for ACE users. Thanks again Nomad, ssechaud, and SirSmok@lot for the heads up.

    Changelog:

    Version 1.5

    Fixed: Info text Spelling Error

    Fixed: (ACE version) player gets hung up on aircraft and does not enter free fall

    Fixed: Hint text replaced with Titletext when called via PVEH. (Hint text is FUBAR'd)

    Fixed: Error in expression <(_this select 0) setIdentity (_this select 1)>.

    Fixed: Water inserts not working when using "Bypass"

    Changed: Distance to marker buffer now is constant in SP and MP.

    Changed: (SP) AI fsm now verifies unit is alive when chute is deployed.

    Added: Two bypass example missions.


  6. The easiest way would be to disableUserInput When a key is pressed and re enable when released. Or Disable on keypressed, spawn a brief sleep, then re-enable.

    _handle_KeyDown = (findDisplay 46) displayAddEventHandler ["KeyDown","disableUserInput true"];

    _handle_KeyUp = (finddisplay 46) displayaddeventhandler ["keyUp","disableUserInput false"];

    OR..

    _handle_KeyDown = (findDisplay 46) displayAddEventHandler ["KeyDown","disableUserInput true; 0.15 spawn {sleep _this;disableUserInput false}"];//This may be the safer approach


  7. The Following script is initialized server side and propagated over the network via a PVEH. It is called from an FSM that loops the following:

    FSM: Loop

    //_commandunit defined HERE
    
    //====Reset Loop======//	
    _nearest_units = nearestObjects [_aircraft,["Man"],25];
    if ((count _nearest_units > 0) AND (!isNil "_commandUnit")) then {
    _nearest_players = [];
    {if (isplayer _x) then {_nearest_players = _nearest_players + [_x]}} foreach _nearest_units;
    if (count _nearest_players > 0) then {
    	_AtBoardPos = [];
    	_new_1 = _nearest_players - _old_1;
    	if (count _new_1 > 0) then {
    		{JTK_Spawn_PVEH = [[_x,_aircraft],JTK_Reset_GetAddActn];publicVariable "JTK_Spawn_PVEH";
    		if (local _x) then {[_x,_aircraft] spawn JTK_Reset_GetAddActn}} foreach _new_1;
    		_old_1 = _old_1 + _new_1;
    	};	
    };
    };	
    if (count _old_1 > 0) then {
    {if ((_x distance _aircraft > 25) OR (_x in _aircraft) OR (_x distance _BoardPos <= 4.25)) then {_old_1 = _old_1 - [_x]}} forEach _old_1;
    };
    
    //====Get In Loop======//
    _nearest_units = nearestObjects [_BoardPos,["Man"],6];
    if (count _nearest_units > 0) then {
    _nearest_players = [];
    {if (isplayer _x) then {_nearest_players = _nearest_players + [_x]}} foreach _nearest_units;
    if (count _nearest_players > 0) then {
    	_AtBoardPos = [];
    	{if (_x distance _BoardPos <= 4.25) then {_AtBoardPos = _AtBoardPos + [_x]}} foreach _nearest_players; 
    	if (count _AtBoardPos > 0) then {
    		_new_2 = _AtBoardPos - _old_2;
    		if (count _new_2 > 0) then {
    			{JTK_Spawn_PVEH = [[_x,_aircraft,_boardPos],JTK_GetIn_GetAddActn];publicVariable "JTK_Spawn_PVEH";
    			if (local _x) then {[_x,_aircraft,_boardPos] spawn JTK_GetIn_GetAddActn}} foreach _new_2;
    			_old_2 = _old_2 + _new_2;
    		};
    	};
    };
    };
    if (count _old_2 > 0) then {
    {if ((_x distance _BoardPos > 4.25) OR (_x in _aircraft) OR (count crew _aircraft > 15)) then {_old_2 = _old_2 - [_x]}} forEach _old_2;
    };
    
    //====Takeoff Loop======//			
    _crew = crew _aircraft;
    if (count _crew > 0) then {
    _players_in_crew = [];
    {if (isplayer _x) then {_players_in_crew = _players_in_crew + [_x]}} foreach _crew;
    if (count _players_in_crew > 0) then {
    	_new_3 = _players_in_crew - _old_3;
    	//_commandUnit = (_aircraft getVariable "JTK_HALO_Command_Unit");
    	if (count _new_3 > 0) then {
    [color="#FF0000"]			{JTK_Spawn_PVEH = [[_x,_aircraft],JTK_TakeOff_GetAddActn];publicVariable "JTK_Spawn_PVEH";
    		if (local _x) then {[_x,_aircraft] spawn JTK_TakeOff_GetAddActn}} foreach _new_3;[/color]
    		_old_3 = _old_3 + _new_3;
    	};
    };
    };
    if (count _old_3 > 0) then {
    {if !(_x in _aircraft) then {_old_3 = _old_3 - [_x]}} forEach _old_3;
    };
    
    
    
    
    _commandUnit = _aircraft getVariable "JTK_HALO_Command_Unit";
    if (!isNil "_commandUnit") then {
    if (!alive _commandunit) then {_aircraft setVariable ["JTK_HALO_Command_Unit",nil,true]};
    _commandUnit = _aircraft getVariable "JTK_HALO_Command_Unit";
    if (isNil "_commandUnit") then {
    	if (count (crew _aircraft) > 0) then {
    		_players = [];
    		{if ((isplayer _x) AND (alive _x)) then {_players = _players + [_x]}} foreach (crew _aircraft);
    		if (count _players == 0) then {_aircraft setVariable ["JTK_HALO_Cancelled",true,true]};
    	}else{_aircraft setVariable ["JTK_HALO_Cancelled",true,true]};
    };
    };

    JTK_TakeOff_GetAddActn Reference from FSM above is highlighted in red (Precompiled as JTK_TakeOff_GetAddActn).

    //by Kempco
    /*
    Takeoff Action is added only to the player who setup the Insertion. 
    If that unit DCs before Takeoff, then delegate action to all units 
    that are in or enter the aircraft.
    */
    
    _unit 	= _this select 0;
    _aircraft	= _this select 1;
    _comandUnit = _aircraft getVariable "JTK_HALO_Command_Unit";
    _isC130 	= _aircraft getVariable "is a C130";
    private ["_Takeoff_Action","_TakeCommand_Action"];
    
    if !(_unit in _aircraft) exitWith {};
    
    _actn_txt = if (_isC130) then {"-Clear for Takeoff-"}else{"-Clear for Dustoff-"};
    
    
    if (isMultiplayer) then {
    if (_unit == _comandUnit) then {
    	//[playerSide,'HQ'] sidechat "Action Wheel Updated";
    	[color="#FF0000"]HintSilent "Action Wheel Updated"; [] spawn {sleep 7; hintSilent ""};[/color] Here where the issue starts, if corrected using Hint instead then problem is kicked down the line to the next hintSilent command.
    	_Takeoff_Action = _aircraft addaction ['<t color="#fadfbe">' + _actn_txt + '</t>',(JTK_HALO_Path+"scripts\Actions\TakeOff.sqf"),[],4,true,true,"","((player == (_target getVariable 'JTK_HALO_Command_Unit')) AND (player in _target))"];
    	While {(!isNil "_comandUnit") AND (_unit in _aircraft) AND !(_aircraft getVariable "JTK_HALO_Takeoff")} do {
    		sleep 1;
    		_comandUnit = _aircraft getVariable "JTK_HALO_Command_Unit";
    	};
    }else{
    	While {(_unit in _aircraft) AND !(_aircraft getVariable "JTK_HALO_Takeoff") AND (!isNil "_comandUnit")} do {
    		sleep 1;
    		_comandUnit = _aircraft getVariable "JTK_HALO_Command_Unit";
    	};
    	if (isNil "_comandUnit") then {
    		_txt = [_aircraft] call JTK_Get_Command_DC_txt;
    		Hint parseText _txt;
    		_aircraft removeAction _Takeoff_Action;
    		_TakeCommand_Action = _aircraft addaction ['<t color="#fadfbe">' + "-Take Command-" + '</t>',(JTK_HALO_Path+"scripts\Actions\TakeCommand.sqf"),[_aircraft],4,true,true,"",""];	
    		While {(_unit in _aircraft) AND !(_aircraft getVariable "JTK_HALO_Takeoff") AND (isNil "_comandUnit")} do {
    			sleep 1;
    			_comandUnit = _aircraft getVariable "JTK_HALO_Command_Unit";
    		};
    	};
    };
    waitUntil {!(_unit in _aircraft) OR (_aircraft getVariable "JTK_HALO_Takeoff")};
    _aircraft removeAction _Takeoff_Action;
    _aircraft removeAction _TakeCommand_Action;
    }else{
    if ((!isplayer _unit) OR !(_unit in _aircraft) OR (_unit != leader group _unit)) exitWith {};
    _static = _aircraft getVariable "JTK_HALO_STATIC";
    _Takeoff_Action = _aircraft addaction ['<t color="#fadfbe">' + _actn_txt + '</t>',(JTK_HALO_Path+"scripts\Actions\TakeOff.sqf"),[],4,true,true,"",""];
    While {(_unit in _aircraft) AND !(_aircraft getVariable "JTK_HALO_Takeoff")} do {
    	if (_unit != player) then {
    		_aircraft removeAction _Takeoff_Action;
    		waitUntil {!(_unit in _aircraft) OR (_aircraft getVariable "JTK_HALO_Takeoff") OR (player == _unit)};
    		if (player == _unit) then {
    			_Takeoff_Action = _aircraft addaction ['<t color="#fadfbe">' + _actn_txt + '</t>',(JTK_HALO_Path+"scripts\Actions\TakeOff.sqf"),[],4,true,true,"",""];
    		};
    	};
    	sleep 1;
    };
    };

    Where the script is going wrong is at the first instance of hintSilent. Fixing one just kicks it down the line too the next hintSilent .

    In addition to the above stated conditions: the issue is unique to remote players.


  8. Has anyone ever had issues with the hintsilent command breaking scripts after re spawning? What happens is I get a script error saying missing ";". Logic would dictate that there is a missing ";" however prior to re spawning, there is no script error, the text appears as it should, and the script runs fine. Oddly enough, replacing the hintSilent commands with side/global/ chats or titletexts fixes the issue but that would require allot of additional work.

    Thoughts?


  9. This is an amazing tool.

    Thank you!!

    Is there a way to have my USEC HALO jumper be the ones who jump and then they change uniform to my patrol uniform???

    Also, could we add something like this

    http://www.military-art.com/mall/images/sb9.jpg

    a gear canister that would be like an ammo crate.

    Cheers,

    Those USEC halo units are amazing, and that very thought crossed my mind, but there are some major issues with replacing the entire unit:

    1. For sake of continuity, you would not be able to remove mask unit you landed.

    2. Replacing entire units is risky: 1 Variables saved to your unit are not transferred your new unit, if you die while you are the "new unit" you cannot respawn (assuming that unit was created post init).

    The gear canister is interesting, problem with ammo crates is getting them to fall without a chute is a pain in the ass because they tend to act like static objects. Would be nice to have smaller chute model as well, like the one shown.


  10. @Genpatton043

    If your chute is not deploying:

    You are probably using a MOD that messes with the parachute configs. To this point the only mod I know that does this is the @Pacific_beta. IF you are using this mod, then you will have issues with parachutes. If you are not using this mod, then its something else you are using that is preventing the player from entering the parachute in the correct position. I can only confirm that the scripts with vanilla and with ACE.

    If Your Chute is Deploying:

    In order for the AI units in your squad land, and have their weapons and gear restored, they are deleted and reset. You are likely team switching to the non-leader position and being deleted the second you land. Since you are the player you are not resetting. Only jump as the team leader. IF you want to team switch, then wait until you have regrouped at the rally point and do so until your hear desires.

    @ssechaud

    That is because you are starting as side west then switching to side east. Start as the east side and you will be fine.


  11. ACE approaches it differently. Instead of the projectile handing the damage, the weapon determines the damage. So, the reason a Suppressed m4 in ACE does less damage is because the M4 SD is weaker then the M4, not because the bullet fired is weaker. I don't think ACE swaps the magazines, instead, I think it adds the SD magazines to the allowed magazine list of each weapon and leaves the damage dealt to the weapon. (Don't quote me on that but I'm assuming that's how its done). What ever voodo they got going on, for what ever reason, ain't going on for the AKMs. The good news is, the "infinite ammo" is not an issue in ACE, since the mags are handled from the cfg directly.


  12. The following should do the trick, have not tested.

    _unit = _this select 0;
    _group = group _unit;
    
    for "_i" from 1 to 9 do {
    _wp = _group addwaypoint [getMarkerPos(format["WP%1",_i]),0];
    _wp setwayPointType "Move";
    if (_i == 9) then {
    	_wp setWaypointStatements ["true","deleteVehicle (vehicle this); {deleteVehicle _x} foreach units group this"];
    };
    };


  13. Yeah, I was using ACE, sorry. I thought ACE was supported.

    ACE is supported, but there are issues with the AKMs: There is one where the magazines are not configured and another where the weapon picture does not match the weapon. (The picture has a scope, while the weapon does not). These have to do with the ACE configs for these weapons, not the script.

×