Set up and integrated HEMTT for easier dev workflow. Adjusted core addon name 'logistics' to 'main'. Fixed several issues caught by HEMTT

This commit is contained in:
Clarky committed 2026-08-29 14:38:47 +10:00
1 parent 00eee092c3
commit 8ef33973bd
61 files changed
+4002 -82

No files matched your search

@@ -0,0 +1,287 @@
/*
* Author: Clarky
* Usage:
* [this] call CLRK_fnc_initSupplyVehicleInteractions;
*  
* Intended to run locally on each client.
*
*/
params ["_vehicle"];
if (isNull _vehicle) exitWith {hint "VEHICLE ERROR -- SUPPLY";};
if !(_vehicle getVariable ["isSupplyVehicle", false]) exitWith {hint "SUPPLY VEHICLE INIT NOT FOUND";};
// Prevent duplicate actions if script runs again
if (_vehicle getVariable ["supplyInteractionsAdded", false]) exitWith {};
_vehicle setVariable ["supplyInteractionsAdded", true];
//////////////////////////////////////////////////////////////////
// INIT STATUS ACTION
//////////////////////////////////////////////////////////////////
_vehicle addAction [
"<t color='#FFD700'>Check Storage Status</t>",
{
params ["_target", "_caller"];
private _currentMateriel =
_target getVariable ["currentMateriel", 0];
private _currentOre =
_target getVariable ["currentOre", 0];
private _max =
_target getVariable ["maxLoad", 300];
private _rate =
_target getVariable ["transferRate", 50];
[
"CLRK_ShowMessage",
[
3,
1,
format
[
"SUPPLY VEHICLE STORAGE<br />Materiel: %1<br />Ore: %2<br />Capacity: %3 / %4<br />Transfer Rate: %5",
_currentMateriel,
_currentOre,
_currentMateriel + _currentOre,
_max,
_rate
]
],
_caller
] call CBA_fnc_targetEvent;
},
nil,
1,
true,
false,
"",
"true",
6
];
//////////////////////////////////////////////////////////////////
// INIT LOAD ACTION
//////////////////////////////////////////////////////////////////
///////////////////////////////////////
// MATERIEL ACTIONS
///////////////////////////////////////
[
_vehicle, // Object the action is attached to
"<t color='#c4ff22'>Load Materiel</t>", // Title of the action
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_loaddevice_ca.paa", // Idle icon shown on screen
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_loaddevice_ca.paa", // Progress icon shown on screen
"(([_this] call ace_common_fnc_isEngineer) || (missionNamespace getVariable 'allCanUseLogistics')) &&
(
(nearestObjects [_target, [], 15] findIf {
_x getVariable ['isSupplyDepot', false]
}) > -1
) &&
(_target distance _this < 7)", // Condition for the action to be shown
"alive _target", // Condition for the action to progress
{}, // Code executed when action starts
{}, // Code executed on every progress tick
{
params ["_target", "_caller"];
private _depot = (
nearestObjects [_target, [], 15]
select {
_x getVariable ["isSupplyDepot", false]
}
) param [0, objNull];
if (isNull _depot) exitWith {
[
"CLRK_ShowMessage",
[
1,
0,
"No Materiel depot nearby."
],
_caller
] call CBA_fnc_targetEvent;
};
[
"CLRK_VehicleLoadedMateriel",
[_target, _caller, _depot]
] call CBA_fnc_serverEvent;
}, // Code executed on completion
{}, // Code executed on interrupted
[], // Arguments passed to the scripts as _this select 3
5, // Action duration in seconds
0, // Priority
false, // Remove on completion
false, // Show in unconscious state
true // Show on screen
] call BIS_fnc_holdActionAdd;
//////////////////////////////////////////////////////////////////
// INIT UNLOAD ACTION
//////////////////////////////////////////////////////////////////
[
_vehicle, // Object the action is attached to
"<t color='#c4ff22'>Unload Materiel</t>", // Title of the action
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unloaddevice_ca.paa", // Idle icon shown on screen
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unloaddevice_ca.paa", // Progress icon shown on screen
"(([_this] call ace_common_fnc_isEngineer) || (missionNamespace getVariable 'allCanUseLogistics')) &&
(
(nearestObjects [_target, [], 15] findIf {
_x getVariable ['isSupplyDepot', false]
}) > -1
) &&
(_target distance _this < 7)", // Condition for the action to be shown
"alive _target", // Condition for the action to progress
{}, // Code executed when action starts
{}, // Code executed on every progress tick
{
params ["_target", "_caller"];
private _depot = (
nearestObjects [_target, [], 15]
select {
_x getVariable ["isSupplyDepot", false]
}
) param [0, objNull];
if (isNull _depot) exitWith {
[
"CLRK_ShowMessage",
[
1,
0,
"No Materiel depot nearby."
],
_caller
] call CBA_fnc_targetEvent;
};
[
"CLRK_VehicleUnloadedMateriel",
[_target, _caller, _depot]
] call CBA_fnc_serverEvent;
}, // Code executed on completion
{}, // Code executed on interrupted
[], // Arguments passed to the scripts as _this select 3
5, // Action duration in seconds
0, // Priority
false, // Remove on completion
false, // Show in unconscious state
true // Show on screen
] call BIS_fnc_holdActionAdd;
///////////////////////////////////////
// ORE ACTIONS
///////////////////////////////////////
[
_vehicle, // Object the action is attached to
"<t color='#b96331'>Load Ore</t>", // Title of the action
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_loaddevice_ca.paa", // Idle icon shown on screen
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_loaddevice_ca.paa", // Progress icon shown on screen
"(([_this] call ace_common_fnc_isEngineer) || (missionNamespace getVariable 'allCanUseLogistics')) &&
(
(nearestObjects [_target, [], 15] findIf {
_x getVariable ['isOreDepot', false]
}) > -1
) &&
(_target distance _this < 7)", // Condition for the action to be shown
"alive _target", // Condition for the action to progress
{}, // Code executed when action starts
{}, // Code executed on every progress tick
{
params ["_target", "_caller"];
private _depot = (
nearestObjects [_target, [], 15]
select {
_x getVariable ["isOreDepot", false]
}
) param [0, objNull];
if (isNull _depot) exitWith {
[
"CLRK_ShowMessage",
[
1,
0,
"No Ore depot nearby."
],
_caller
] call CBA_fnc_targetEvent;
};
[
"CLRK_VehicleLoadedOre",
[_target, _caller, _depot]
] call CBA_fnc_serverEvent;
}, // Code executed on completion
{}, // Code executed on interrupted
[], // Arguments passed to the scripts as _this select 3
5, // Action duration in seconds
0, // Priority
false, // Remove on completion
false, // Show in unconscious state
true // Show on screen
] call BIS_fnc_holdActionAdd;
//////////////////////////////////////////////////////////////////
// INIT UNLOAD ACTION
//////////////////////////////////////////////////////////////////
[
_vehicle, // Object the action is attached to
"<t color='#b96331'>Unload Ore</t>", // Title of the action
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unloaddevice_ca.paa", // Idle icon shown on screen
"\a3\ui_f\data\IGUI\Cfg\holdactions\holdAction_unloaddevice_ca.paa", // Progress icon shown on screen
"(([_this] call ace_common_fnc_isEngineer) || (missionNamespace getVariable 'allCanUseLogistics')) &&
(
(nearestObjects [_target, [], 15] findIf {
_x getVariable ['isOreDepot', false]
}) > -1
) &&
(_target distance _this < 7)", // Condition for the action to be shown
"alive _target", // Condition for the action to progress
{}, // Code executed when action starts
{}, // Code executed on every progress tick
{
params ["_target", "_caller"];
private _depot = (
nearestObjects [_target, [], 15]
select {
_x getVariable ["isOreDepot", false]
}
) param [0, objNull];
if (isNull _depot) exitWith {
[
"CLRK_ShowMessage",
[
1,
0,
"No Ore depot nearby."
],
_caller
] call CBA_fnc_targetEvent;
};
[
"CLRK_VehicleUnloadedOre",
[_target, _caller, _depot]
] call CBA_fnc_serverEvent;
}, // Code executed on completion
{}, // Code executed on interrupted
[], // Arguments passed to the scripts as _this select 3
5, // Action duration in seconds
0, // Priority
false, // Remove on completion
false, // Show in unconscious state
true // Show on screen
] call BIS_fnc_holdActionAdd;