/* * 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 [ "Check Storage Status", { 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
Materiel: %1
Ore: %2
Capacity: %3 / %4
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 "Load Materiel", // 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 "Unload Materiel", // 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 "Load Ore", // 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 "Unload Ore", // 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;