Skip to content

Commit

Permalink
1.0.6 Warmfix (#128)
Browse files Browse the repository at this point in the history
* Fix Acre Channel bug, Export Formatting

* Add ACRE Vehicle Preset to vehicle variables

* Fix duplicate Briefing

* Fix itemRandomOrg error

* Fix Endscreen client side

* Fix JIP bug, JIP teleport to vehicles

* Add build number

* Add AI Driver logging

* Fix aiDrivers

* Make game-mastering dependent on mission notes

* Add force removal for vehicle teleport action in edge cases

* Fix for wrong ACRE channels being set (#131)
  • Loading branch information
TheTrainDoctor committed May 8, 2019
1 parent e3262d8 commit b3c2b0d
Show file tree
Hide file tree
Showing 28 changed files with 412 additions and 217 deletions.
19 changes: 19 additions & 0 deletions uo_sys_framework/ACREModule/cfgAttributeCategories/Object.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,5 +102,24 @@ class EGVAR(ACRE,UnitOptions) {
condition = "objectControllable";
defaultValue = "'None'";
};
class EGVAR(ACRE,VehicleACRE_Enabled) {
property = QEGVAR(ACRE,VehicleACRE_Enabled);
displayName = "Enable ACRE Vehicle Settings";
tooltip = "Enable ACRE Vehicle Settings";
control = "CheckBox";
expression = ENTITY_EXPRESSION;
condition = "objectVehicle";
defaultValue = "false";
};
class EGVAR(ACRE,VehicleACREPreset) {
property = QEGVAR(ACRE,VehicleACREPreset);
displayName = "Vehicle Rack Preset";
tooltip = "Will set the vehicles ACRE rack to the selected side. Selecting Default will skip this setting. Requires ACRE Scrambling to be enabled.";
control = QEGVAR(ACRE,VehicleRadioPresetAttribute);
typeName = "STRING";
expression = ENTITY_EXPRESSION;
condition = "objectVehicle";
defaultValue = "''";
};
};
};
3 changes: 2 additions & 1 deletion uo_sys_framework/ACREModule/cfgAttributes.hpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "CfgAttributes\EarSettingAttribute.hpp"
#include "CfgAttributes\RadioSelectAttribute.hpp"
#include "CfgAttributes\ChannelSelectAttribute.hpp"
#include "CfgAttributes\AdditionalLanguageAttribute.hpp"
#include "CfgAttributes\AdditionalLanguageAttribute.hpp"
#include "CfgAttributes\VehicleRadioPresetAttribute.hpp"
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
class EGVAR(ACRE,VehicleRadioPresetAttribute): Combo {
//save the lbData from the selected entry upon exit
attributeSave = "\
private _value = ((_this controlsGroupCtrl 100) lbData lbCurSel (_this controlsGroupCtrl 100));\
private _unit = ((get3denselected 'object') select 0);\
private _name = gettext (_config >> 'property');\
_unit setvariable [_name,_value];\
_value\
";
//_this - config, _value - saved value
attributeLoad="\
private _control = (_this controlsGroupCtrl 100);\
private _name = gettext (_config >> 'property');\
private _unit = ((get3denselected 'object') select 0);\
private _nameArray = ['Default','Blufor','Opfor','Indfor','Civilian'];\
{\
private _index = _control lbadd _x;\
_control lbsetdata [_index,_x];\
_control lbsetValue [_index,_foreachIndex];\
if (_value isEqualto (_control lbData _index)) then {\
_control lbSetCurSel _index;\
_unit setvariable [_name,_value];\
};\
} foreach _nameArray;\
";
class Controls: Controls {
class Title: Title {};
class Value: Value {};
};
};
1 change: 1 addition & 0 deletions uo_sys_framework/ACREModule/cfgXEH/PreInit.hpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
class EGVAR(ACRE,PreInit) {
clientInit = "call compile preProcessFileLineNumbers '\x\UO_FW\addons\Main\ACREModule\cfgXEH\init\ClientPreInit.sqf';";
serverInit = "call compile preProcessFileLineNumbers '\x\UO_FW\addons\Main\ACREModule\cfgXEH\init\ServerPreInit.sqf';";
};
136 changes: 90 additions & 46 deletions uo_sys_framework/ACREModule/cfgXEH/init/ClientPreInit.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@ if !(UO_FW_Server_ACREModule_Allowed) exitwith {};
//Channel names stuff
LOG("ACRE Init");

_radioNetNamesBlufor = [(GETMVAR(RADIONET_NAME1_Blufor ,"PLTNET 1")),(GETMVAR(RADIONET_NAME2_Blufor ,"PLTNET 2")),(GETMVAR(RADIONET_NAME3_Blufor ,"PLTNET 3")),
(GETMVAR(RADIONET_NAME4_Blufor ,"PLTNET 4")),(GETMVAR(RADIONET_NAME5_Blufor ,"Coy")),(GETMVAR(RADIONET_NAME6_Blufor ,"Cas")),(GETMVAR(RADIONET_NAME7_Blufor ,"Fires"))];
_radioNetNamesBlufor = [(GETMVAR(RADIONET_NAME1_Blufor,"PLTNET 1")),(GETMVAR(RADIONET_NAME2_Blufor,"PLTNET 2")),(GETMVAR(RADIONET_NAME3_Blufor,"PLTNET 3")),
(GETMVAR(RADIONET_NAME4_Blufor,"PLTNET 4")),(GETMVAR(RADIONET_NAME5_Blufor,"Coy")),(GETMVAR(RADIONET_NAME6_Blufor,"Cas")),(GETMVAR(RADIONET_NAME7_Blufor,"Fires"))];

_radioNetNamesOpfor = [(GETMVAR(RADIONET_NAME1_Opfor ,"PLTNET 1")),(GETMVAR(RADIONET_NAME2_Opfor ,"PLTNET 2")),(GETMVAR(RADIONET_NAME3_Opfor ,"PLTNET 3")),
(GETMVAR(RADIONET_NAME4_Opfor ,"PLTNET 4")),(GETMVAR(RADIONET_NAME5_Opfor ,"Coy")),(GETMVAR(RADIONET_NAME6_Opfor ,"Cas")),(GETMVAR(RADIONET_NAME7_Opfor ,"Fires"))];
_radioNetNamesOpfor = [(GETMVAR(RADIONET_NAME1_Opfor,"PLTNET 1")),(GETMVAR(RADIONET_NAME2_Opfor,"PLTNET 2")),(GETMVAR(RADIONET_NAME3_Opfor,"PLTNET 3")),
(GETMVAR(RADIONET_NAME4_Opfor,"PLTNET 4")),(GETMVAR(RADIONET_NAME5_Opfor,"Coy")),(GETMVAR(RADIONET_NAME6_Opfor,"Cas")),(GETMVAR(RADIONET_NAME7_Opfor,"Fires"))];

_radioNetNamesIndfor = [(GETMVAR(RADIONET_NAME1_Indfor ,"PLTNET 1")),(GETMVAR(RADIONET_NAME2_Indfor ,"PLTNET 2")),(GETMVAR(RADIONET_NAME3_Indfor ,"PLTNET 3")),
(GETMVAR(RADIONET_NAME4_Indfor ,"PLTNET 4")),(GETMVAR(RADIONET_NAME5_Indfor ,"Coy")),(GETMVAR(RADIONET_NAME6_Indfor ,"Cas")),(GETMVAR(RADIONET_NAME7_Indfor ,"Fires"))];
_radioNetNamesIndfor = [(GETMVAR(RADIONET_NAME1_Indfor,"PLTNET 1")),(GETMVAR(RADIONET_NAME2_Indfor,"PLTNET 2")),(GETMVAR(RADIONET_NAME3_Indfor,"PLTNET 3")),
(GETMVAR(RADIONET_NAME4_Indfor,"PLTNET 4")),(GETMVAR(RADIONET_NAME5_Indfor,"Coy")),(GETMVAR(RADIONET_NAME6_Indfor,"Cas")),(GETMVAR(RADIONET_NAME7_Indfor,"Fires"))];

_radioNetNamesCiv = [(GETMVAR(RADIONET_NAME1_Civ ,"PLTNET 1")),(GETMVAR(RADIONET_NAME2_Civ ,"PLTNET 2")),(GETMVAR(RADIONET_NAME3_Civ ,"PLTNET 3")),
(GETMVAR(RADIONET_NAME4_Civ ,"PLTNET 4")),(GETMVAR(RADIONET_NAME5_Civ ,"Coy")),(GETMVAR(RADIONET_NAME6_Civ ,"Cas")),(GETMVAR(RADIONET_NAME7_Civ ,"Fires"))];
_radioNetNamesCiv = [(GETMVAR(RADIONET_NAME1_Civ,"PLTNET 1")),(GETMVAR(RADIONET_NAME2_Civ,"PLTNET 2")),(GETMVAR(RADIONET_NAME3_Civ,"PLTNET 3")),
(GETMVAR(RADIONET_NAME4_Civ,"PLTNET 4")),(GETMVAR(RADIONET_NAME5_Civ,"Coy")),(GETMVAR(RADIONET_NAME6_Civ,"Cas")),(GETMVAR(RADIONET_NAME7_Civ,"Fires"))];



Expand Down Expand Up @@ -361,49 +361,93 @@ if !(UO_FW_Server_ACREModule_Allowed) exitwith {};
}] call CBA_fnc_addEventHandler;

[QGVAR(SetChannelAndEar_Event),{

[{(CBA_missionTime > 1) && {[] call acre_api_fnc_isInitialized}},{
if (GETPLVAR(UnitSettings_Enable,false)) then {
{
private _radioID = [_x] call acre_api_fnc_getRadioByType;
if (!isNil "_radioID") then {
private _result = (GETPLVAR(SR_RADIO_CHANNEL,1));
if (_result < 1) then {
ERROR_1("%1 is not a valid Channel Number",_result);
} else {
[_radioID, _result] call acre_api_fnc_setRadioChannel;
};

[_radioID, (["LEFT","CENTER", "RIGHT"] select (GETPLVAR(SR_RADIO_EAR,1)))] call acre_api_fnc_setRadioSpatial;
};
} forEach ["ACRE_PRC343", "ACRE_SEM52SL"];

{
private _radioID = [_x] call acre_api_fnc_getRadioByType;
if ( ! isNil "_radioID") then {
private _result = (GETPLVAR(LR_RADIO_CHANNEL,1));
if (_result < 1) then {
ERROR_1("%1 is not a valid Channel Number",_result);
} else {
[_radioID, _result] call acre_api_fnc_setRadioChannel;
};
[_radioID, ([ "LEFT","CENTER", "RIGHT"] select (GETPLVAR(LR_RADIO_EAR,1)))] call acre_api_fnc_setRadioSpatial;
};
} forEach ["ACRE_PRC343", "ACRE_PRC148", "ACRE_PRC152"];
private ["_SRType","_LRType","_PKType"];
switch (side player) do {
case west: {
_SRType = ["NONE","ACRE_PRC343","ACRE_SEM52SL"] select GVAR(SR_Type_BLUFOR);
_LRType = ["NONE","ACRE_PRC343","ACRE_PRC148","ACRE_PRC152"] select GVAR(LR_Type_BLUFOR);
_PKType = ["NONE","ACRE_PRC117F","ACRE_PRC77","ACRE_SEM70"] select GVAR(PK_Type_BLUFOR);
};
case east: {
_SRType = ["NONE","ACRE_PRC343","ACRE_SEM52SL"] select GVAR(SR_Type_OPFOR);
_LRType = ["NONE","ACRE_PRC343","ACRE_PRC148","ACRE_PRC152"] select GVAR(LR_Type_OPFOR);
_PKType = ["NONE","ACRE_PRC117F","ACRE_PRC77","ACRE_SEM70"] select GVAR(PK_Type_OPFOR);
};
case independent: {
_SRType = ["NONE","ACRE_PRC343","ACRE_SEM52SL"] select GVAR(SR_Type_Indfor);
_LRType = ["NONE","ACRE_PRC343","ACRE_PRC148","ACRE_PRC152"] select GVAR(LR_Type_Indfor);
_PKType = ["NONE","ACRE_PRC117F","ACRE_PRC77","ACRE_SEM70"] select GVAR(PK_Type_Indfor);
};
case civilian: {
_SRType = ["NONE","ACRE_PRC343","ACRE_SEM52SL"] select GVAR(SR_Type_Civ);
_LRType = ["NONE","ACRE_PRC343","ACRE_PRC148","ACRE_PRC152"] select GVAR(LR_Type_Civ);
_PKType = ["NONE","ACRE_PRC117F","ACRE_PRC77","ACRE_SEM70"] select GVAR(PK_Type_Civ);
};
default {};
};
if (GETPLVAR(UnitSettings_Enable,false)) then {
private _radioIDs = [] call acre_api_fnc_getCurrentRadioList;
TRACE_1("Found Radios",_radiosIDs);

{
private _radioID = [_x] call acre_api_fnc_getRadioByType;
if (!isNil "_radioID") then {
private _result = (GETPLVAR(PK_RADIO_CHANNEL,1));
if (_result < 1) then {
ERROR_1("%1 is not a valid Channel Number",_result);
} else {
if !(_x isEqualTo "ACRE_PRC77") then {
[_radioID, _result] call acre_api_fnc_setRadioChannel;
if (_SRType != "NONE") then {

{
private _radioId = _x;
if(([_radioId, _SRType] call acre_api_fnc_isKindOf)) exitWith {
private _result = (GETPLVAR(SR_RADIO_CHANNEL,1));
if (_result < 1) then {
ERROR_1("%1 is not a valid Channel Number",_result);
} else {

[_radioId, _result] call acre_api_fnc_setRadioChannel;
LOG_2("Setting SR %1 to channel %2",_radioId,_result);
};
};
[_radioID, (["LEFT","CENTER", "RIGHT"] select (GETPLVAR(PK_RADIO_EAR,1)))] call acre_api_fnc_setRadioSpatial;
};
} forEach ["ACRE_PRC117F", "ACRE_PRC77", "ACRE_SEM70"];
[_radioId, (["LEFT","CENTER", "RIGHT"] select (GETPLVAR(SR_RADIO_EAR,1)))] call acre_api_fnc_setRadioSpatial;
_radioIDs deleteAt _forEachIndex;
};
}forEach _radioIDs;
};

if(_LRType != "NONE") then {
{
private _radioId = _x;
if(([_radioId, _LRType] call acre_api_fnc_isKindOf)) exitWith {
private _result = (GETPLVAR(LR_RADIO_CHANNEL,1));
if (_result < 1) then {
ERROR_1("%1 is not a valid Channel Number",_result);
} else {

[_radioId, _result] call acre_api_fnc_setRadioChannel;
LOG_2("Setting LR %1 to channel %2",_radioId,_result);
};
[_radioId, (["LEFT","CENTER", "RIGHT"] select (GETPLVAR(LR_RADIO_EAR,1)))] call acre_api_fnc_setRadioSpatial;
_radioIDs deleteAt _forEachIndex;
};
}forEach _radioIDs;
};

if(_PKType != "NONE") then {
{
private _radioId = _x;
if(([_radioId, _PKType] call acre_api_fnc_isKindOf)) exitWith {
private _result = (GETPLVAR(PK_RADIO_CHANNEL,1));
if (_result < 1) then {
ERROR_1("%1 is not a valid Channel Number",_result);
} else {

[_radioId, _result] call acre_api_fnc_setRadioChannel;
LOG_2("Setting PK %1 to channel %2",_radioId,_result);
};
[_radioId, (["LEFT","CENTER", "RIGHT"] select (GETPLVAR(PK_RADIO_EAR,1)))] call acre_api_fnc_setRadioSpatial;
_radioIDs deleteAt _forEachIndex;
};
}forEach _radioIDs;
};

};
}] call CBA_fnc_waitUntilAndExecute;
}] call CBA_fnc_addEventHandler;
Expand Down
41 changes: 41 additions & 0 deletions uo_sys_framework/ACREModule/cfgXEH/init/ServerPreInit.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/* Description: Sets ACRE Presets and ACRE unit settings
* Arguments:
* N/A
* Return Value:
* ARRAY
* Author
* PiZZADOX & Sacher
*/

#define COMPONENT ACRE
#include "\x\UO_FW\addons\Main\script_macros.hpp"
EXEC_CHECK(SERVER);
if !(UO_FW_Server_ACREModule_Allowed) exitwith {};

[QEGVAR(Core,SettingsLoaded), {
if(GETMVAR(SCRAMBLE_Enabled,false)) then
{
{
private _vehicle = _x;
if(GETVAR(_vehicle,VehicleACRE_Enabled,false)) then {

private _preset = ["default2", "default3", "default4", "default"];
private _names = ["Default","Blufor","Opfor","Indfor","Civilian"];
private _var = GETVAR(_vehicle,VehicleACREPreset,"Default");
private _index = _names find _var;
//ignore if Default or not found
if(_index > 0) then {
private _selectedPresetIndex = _index - 1;
private _selectedPreset = _preset select _selectedPresetIndex;
LOG_2("Setting vehicle %1 to preset %2",_vehicle,_selectedPreset);
[_vehicle, _selectedPreset] call acre_api_fnc_setVehicleRacksPreset;

};

};


}forEach vehicles;
};

}] call CBA_fnc_addEventHandler;
26 changes: 16 additions & 10 deletions uo_sys_framework/AIDriversModule/cfgFunctions/EH/fn_InitPost.sqf
Original file line number Diff line number Diff line change
@@ -1,28 +1,34 @@
#define COMPONENT AIDrivers
#include "\x\UO_FW\addons\Main\script_macros.hpp"
EXEC_CHECK(ALL);
EXEC_CHECK(SERVER);
if !(UO_FW_Server_AIDRIVERSMODULE_Allowed) exitwith {};

params ["_vehicle"];

//IGNORE_PRIVATE_WARNING ["_thisArgs"];

[QEGVAR(Core,SettingsLoaded), {
private _vehicle = _thisArgs;
[{(CBA_missionTime > 0)},{
params ["_vehicle"];
private _allowNV = GETMVAR(NVEnabled,false);
private _allowFlip = GETMVAR(FlipEnabled,false);
if (GETMVAR(AllVehs,false)) exitwith {
private _allowFlip = GETMVAR(FlipEnabled,false);
private _allVeh = GETMVAR(AllVehs,false);
private _inClasses = (typeOf _vehicle) in (GETMVAR(VehClasses,[]));
private _option = GETVAR(_vehicle,VehEnabled,false);

LOG_4("Trying to add AI Drivers to %1 _allVehicles=%2 _inClasses=%3 _option=%4", _vehicle,_allVeh,_inClasses,_option);

if (_allVeh) exitwith {
[QGVAR(Enabled_Event),[_vehicle,_allowNV,_allowFlip]] call CBA_fnc_globalEventJIP;
[QEGVAR(Core,RegisterModuleEvent), ["AI Drivers", "Module for adding AI Drivers to vehicles", "BlackHawk, PiZZADOX and Sacher"]] call CBA_fnc_globalEventJIP;
};
if ((typeOf _vehicle) in (GETMVAR(VehClasses,[]))) exitwith {
if (_inClasses) exitwith {
[QEGVAR(Core,RegisterModuleEvent), ["AI Drivers", "Module for adding AI Drivers to vehicles", "BlackHawk, PiZZADOX and Sacher"]] call CBA_fnc_globalEventJIP;
[QGVAR(Enabled_Event),[_vehicle,_allowNV,_allowFlip]] call CBA_fnc_globalEventJIP;
};
if (GETVAR(_vehicle,VehEnabled,false)) then {
if (_option) then {
private _allowNV = GETVAR(_vehicle,VehNVEnabled,false);
private _allowFlip = GETVAR(_vehicle,VehFlipEnabled,false);
private _allowFlip = GETVAR(_vehicle,VehFlipEnabled,false);
[QGVAR(Enabled_Event),[_vehicle,_allowNV,_allowFlip]] call CBA_fnc_globalEventJIP;
[QEGVAR(Core,RegisterModuleEvent), ["AI Drivers", "Module for adding AI Drivers to vehicles", "BlackHawk, PiZZADOX and Sacher"]] call CBA_fnc_globalEventJIP;
};
}, _vehicle] call CBA_fnc_addEventHandlerArgs;

}, _vehicle] call CBA_fnc_WaitUntilAndExecute;
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,4 @@ if (_enableNV) then {
[_veh, 1, ["ACE_SelfActions"], _pipNvAction] call ace_interact_menu_fnc_addActionToObject;
};

SETPVAR(_veh,hasActions,true);
SETVAR(_veh,hasActions,true);
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ EXEC_CHECK(CLIENT);

[QGVAR(Enabled_Event), {
params ["_vehicle","_allowNV","_allowFlip"];
LOG_1("Enabling AI Driver for %1",_vehicle);
[_vehicle,_allowNV,_allowFlip] call FUNC(EnableAIDriver);
}] call CBA_fnc_addEventHandler;
12 changes: 6 additions & 6 deletions uo_sys_framework/AOLimitModule/cfgFunctions/common/fn_Init.sqf
Original file line number Diff line number Diff line change
Expand Up @@ -77,15 +77,15 @@ EXEC_CHECK(CLIENT);
_argNested params ["_unit","_args","_startedInside","_outSide","_enteredZone","_arrayname","_softAOMode","_recheckDead","_pos"];
_args params ["","_area","","_entryMode","_airsetting","","_softAOtime","_softAOtimeAir"];

LOG_1("_argNested: %1",_argNested);
LOG_1("_area: %1",_area);
LOG_1("(vehicle _unit): %1",(vehicle _unit));
//LOG_1("_argNested: %1",_argNested);
//LOG_1("_area: %1",_area);
//LOG_1("(vehicle _unit): %1",(vehicle _unit));
private _air = ((vehicle _unit) isKindOf "Air");
if ((_airsetting) && {_air}) exitwith {};

if ((count ((missionNamespace getvariable _arrayname))) isEqualto 1) then {
if ((vehicle _unit) inArea _area) then {
LOG("unit in area");
// LOG("unit in area");
_outSide = false;
_argNested set [3,_outSide];
_enteredZone = true;
Expand Down Expand Up @@ -117,7 +117,7 @@ EXEC_CHECK(CLIENT);
};
} else {
if (({(vehicle _unit) inArea _x} count (missionNamespace getvariable _arrayname)) > 0) then {
LOG("unit in area b");
//LOG("unit in area b");
_enteredZone = true;
_argNested set [4,_enteredZone];
_outSide = false;
Expand Down Expand Up @@ -150,7 +150,7 @@ EXEC_CHECK(CLIENT);
};

SETMVAR(Display,_outSide);
LOG_1("_outSide: %1",_outSide);
//LOG_1("_outSide: %1",_outSide);

if ((count (missionNamespace getvariable _arrayname)) == 1) then {
if ((!(_startedInside) && {!_softAOMode} && {(_entryMode)} && {!((vehicle _unit) inArea _area)}) || {(_recheckDead && !_softAOMode)}) then {
Expand Down

0 comments on commit b3c2b0d

Please sign in to comment.