mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Add "Load Into Cargo" Zeus Module (#5528)
* Initial commit * Finish TODOs * Remove "<BR/>" from showing up on zeus messages * Add check for scheduled environment, cargo enabled
This commit is contained in:
parent
40e4ad3f5a
commit
21e9674ab7
Binary file not shown.
@ -66,7 +66,7 @@ private _statement = {
|
|||||||
[_player, _target] call FUNC(startLoadIn);
|
[_player, _target] call FUNC(startLoadIn);
|
||||||
};
|
};
|
||||||
private _text = localize LSTRING(loadObject);
|
private _text = localize LSTRING(loadObject);
|
||||||
private _icon = QPATHTOF(UI\Icon_load.paa);
|
private _icon = "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa";
|
||||||
|
|
||||||
private _action = [QGVAR(load), _text, _icon, _statement, _condition, {call FUNC(addCargoVehiclesActions)}] call EFUNC(interact_menu,createAction);
|
private _action = [QGVAR(load), _text, _icon, _statement, _condition, {call FUNC(addCargoVehiclesActions)}] call EFUNC(interact_menu,createAction);
|
||||||
if (_canLoadConfig) then {
|
if (_canLoadConfig) then {
|
||||||
|
@ -98,14 +98,14 @@ class CfgVehicles {
|
|||||||
category = QGVAR(Repair);
|
category = QGVAR(Repair);
|
||||||
displayName = CSTRING(ModuleAddSpareTrack_DisplayName);
|
displayName = CSTRING(ModuleAddSpareTrack_DisplayName);
|
||||||
function = QFUNC(moduleAddSpareTrack);
|
function = QFUNC(moduleAddSpareTrack);
|
||||||
icon = QPATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa);//@todo
|
icon = "a3\ui_f\data\IGUI\Cfg\Actions\repair_ca.paa";
|
||||||
};
|
};
|
||||||
class GVAR(moduleAddSpareWheel): GVAR(moduleBase) {
|
class GVAR(moduleAddSpareWheel): GVAR(moduleBase) {
|
||||||
curatorCanAttach = 1;
|
curatorCanAttach = 1;
|
||||||
category = QGVAR(Repair);
|
category = QGVAR(Repair);
|
||||||
displayName = CSTRING(ModuleAddSpareWheel_DisplayName);
|
displayName = CSTRING(ModuleAddSpareWheel_DisplayName);
|
||||||
function = QFUNC(moduleAddSpareWheel);
|
function = QFUNC(moduleAddSpareWheel);
|
||||||
icon = QPATHTOF(UI\Icon_Module_Zeus_Medic_ca.paa);//@todo
|
icon = "a3\ui_f\data\IGUI\Cfg\Actions\repair_ca.paa";
|
||||||
};
|
};
|
||||||
class GVAR(moduleAddOrRemoveFRIES): GVAR(moduleBase) {
|
class GVAR(moduleAddOrRemoveFRIES): GVAR(moduleBase) {
|
||||||
curatorCanAttach = 1;
|
curatorCanAttach = 1;
|
||||||
@ -143,6 +143,13 @@ class CfgVehicles {
|
|||||||
displayName = CSTRING(ModuleGroupSide_DisplayName);
|
displayName = CSTRING(ModuleGroupSide_DisplayName);
|
||||||
curatorInfoType = QGVAR(RscGroupSide);
|
curatorInfoType = QGVAR(RscGroupSide);
|
||||||
};
|
};
|
||||||
|
class GVAR(moduleLoadIntoCargo): GVAR(moduleBase) {
|
||||||
|
curatorCanAttach = 1;
|
||||||
|
category = QGVAR(Utility);
|
||||||
|
displayName = CSTRING(ModuleLoadIntoCargo_DisplayName);
|
||||||
|
function = QFUNC(moduleLoadIntoCargo);
|
||||||
|
icon = "a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa";
|
||||||
|
};
|
||||||
class GVAR(modulePatrolArea): GVAR(moduleBase) {
|
class GVAR(modulePatrolArea): GVAR(moduleBase) {
|
||||||
curatorCanAttach = 1;
|
curatorCanAttach = 1;
|
||||||
category = QGVAR(AI);
|
category = QGVAR(AI);
|
||||||
@ -217,13 +224,13 @@ class CfgVehicles {
|
|||||||
class GVAR(AddFullArsenal): GVAR(moduleBase) {
|
class GVAR(AddFullArsenal): GVAR(moduleBase) {
|
||||||
curatorCanAttach = 1;
|
curatorCanAttach = 1;
|
||||||
category = QGVAR(Utility);
|
category = QGVAR(Utility);
|
||||||
displayName = CSTRING(moduleAddFullArsenal_displayName);
|
displayName = CSTRING(ModuleAddFullArsenal_DisplayName);
|
||||||
function = QFUNC(moduleAddArsenal);
|
function = QFUNC(moduleAddArsenal);
|
||||||
};
|
};
|
||||||
class GVAR(RemoveFullArsenal): GVAR(moduleBase) {
|
class GVAR(RemoveFullArsenal): GVAR(moduleBase) {
|
||||||
curatorCanAttach = 1;
|
curatorCanAttach = 1;
|
||||||
category = QGVAR(Utility);
|
category = QGVAR(Utility);
|
||||||
displayName = CSTRING(moduleRemoveArsenal_displayName);
|
displayName = CSTRING(ModuleRemoveArsenal_DisplayName);
|
||||||
function = QFUNC(moduleRemoveArsenal);
|
function = QFUNC(moduleRemoveArsenal);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -13,6 +13,7 @@ PREP(moduleAddOrRemoveFRIES);
|
|||||||
PREP(moduleCaptive);
|
PREP(moduleCaptive);
|
||||||
PREP(moduleGlobalSetSkill);
|
PREP(moduleGlobalSetSkill);
|
||||||
PREP(moduleGroupSide);
|
PREP(moduleGroupSide);
|
||||||
|
PREP(moduleLoadIntoCargo);
|
||||||
PREP(moduleRemoveArsenal);
|
PREP(moduleRemoveArsenal);
|
||||||
PREP(moduleSearchNearby);
|
PREP(moduleSearchNearby);
|
||||||
PREP(moduleSetMedic);
|
PREP(moduleSetMedic);
|
||||||
|
@ -8,6 +8,7 @@ class CfgPatches {
|
|||||||
QGVAR(moduleEditableObjects),
|
QGVAR(moduleEditableObjects),
|
||||||
QGVAR(moduleGlobalSetSkill),
|
QGVAR(moduleGlobalSetSkill),
|
||||||
QGVAR(moduleGroupSide),
|
QGVAR(moduleGroupSide),
|
||||||
|
QGVAR(moduleLoadIntoCargo),
|
||||||
QGVAR(modulePatrolArea),
|
QGVAR(modulePatrolArea),
|
||||||
QGVAR(moduleSearchArea),
|
QGVAR(moduleSearchArea),
|
||||||
QGVAR(moduleSearchNearby),
|
QGVAR(moduleSearchNearby),
|
||||||
@ -25,6 +26,7 @@ class CfgPatches {
|
|||||||
url = ECSTRING(main,URL);
|
url = ECSTRING(main,URL);
|
||||||
VERSION_CONFIG;
|
VERSION_CONFIG;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Use additional CfgPatches to contextually remove modules from zeus
|
// Use additional CfgPatches to contextually remove modules from zeus
|
||||||
class GVAR(captives): ADDON {
|
class GVAR(captives): ADDON {
|
||||||
units[] = {
|
units[] = {
|
||||||
@ -40,6 +42,11 @@ class CfgPatches {
|
|||||||
QGVAR(moduleSetMedicalFacility)
|
QGVAR(moduleSetMedicalFacility)
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
class GVAR(cargo): ADDON {
|
||||||
|
units[] = {
|
||||||
|
QGVAR(moduleLoadIntoCargo)
|
||||||
|
};
|
||||||
|
};
|
||||||
class GVAR(cargoAndRepair): ADDON {
|
class GVAR(cargoAndRepair): ADDON {
|
||||||
units[] = {
|
units[] = {
|
||||||
QGVAR(moduleAddSpareTrack),
|
QGVAR(moduleAddSpareTrack),
|
||||||
@ -56,6 +63,7 @@ class CfgPatches {
|
|||||||
class ACE_Curator {
|
class ACE_Curator {
|
||||||
GVAR(captives) = "ace_captives";
|
GVAR(captives) = "ace_captives";
|
||||||
GVAR(medical) = "ace_medical";
|
GVAR(medical) = "ace_medical";
|
||||||
|
GVAR(cargo) = "ace_cargo";
|
||||||
GVAR(cargoAndRepair)[] = {"ace_cargo", "ace_repair"};
|
GVAR(cargoAndRepair)[] = {"ace_cargo", "ace_repair"};
|
||||||
GVAR(fastroping) = "ace_fastroping";
|
GVAR(fastroping) = "ace_fastroping";
|
||||||
};
|
};
|
||||||
|
66
addons/zeus/functions/fnc_moduleLoadIntoCargo.sqf
Normal file
66
addons/zeus/functions/fnc_moduleLoadIntoCargo.sqf
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/*
|
||||||
|
* Author: 654wak654
|
||||||
|
* Loads the object module is placed on into selected vehicle.
|
||||||
|
*
|
||||||
|
* Arguments:
|
||||||
|
* 0: Module logic <OBJECT>
|
||||||
|
* 1: Synchronized units <ARRAY>
|
||||||
|
* 2: Activated <BOOL>
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* None
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* [LOGIC, [bob, kevin], true] call ace_zeus_fnc_moduleLoadIntoCargo
|
||||||
|
*
|
||||||
|
* Public: No
|
||||||
|
*/
|
||||||
|
#include "script_component.hpp"
|
||||||
|
|
||||||
|
if (canSuspend) exitWith {[FUNC(moduleSuppressiveFire), _this] call CBA_fnc_directCall;};
|
||||||
|
|
||||||
|
params ["_logic", "_units", "_activated"];
|
||||||
|
|
||||||
|
if !(_activated && {local _logic}) exitWith {};
|
||||||
|
|
||||||
|
private _cargo = attachedTo _logic;
|
||||||
|
|
||||||
|
deleteVehicle _logic;
|
||||||
|
|
||||||
|
if !(missionNamespace getVariable [QEGVAR(cargo,enable), false]) exitWith {
|
||||||
|
[LSTRING(RequiresAddon)] call FUNC(showMessage);
|
||||||
|
};
|
||||||
|
if (isNull _cargo) exitWith {
|
||||||
|
[LSTRING(NothingSelected)] call FUNC(showMessage);
|
||||||
|
};
|
||||||
|
if (!alive _cargo) exitWith {
|
||||||
|
[LSTRING(OnlyAlive)] call FUNC(showMessage);
|
||||||
|
};
|
||||||
|
|
||||||
|
[
|
||||||
|
_cargo,
|
||||||
|
{
|
||||||
|
params ["_successful", "_cargo", "_mousePosASL"];
|
||||||
|
if (!_successful) exitWith {};
|
||||||
|
|
||||||
|
private _holder = (nearestObjects [ASLToAGL _mousePosASL, EGVAR(cargo,cargoHolderTypes), 5]) param [0, objNull];
|
||||||
|
if (isNull _holder) exitWith {
|
||||||
|
[LSTRING(NothingSelected)] call FUNC(showMessage);
|
||||||
|
};
|
||||||
|
if (!alive _holder) exitWith {
|
||||||
|
[LSTRING(OnlyAlive)] call FUNC(showMessage);
|
||||||
|
};
|
||||||
|
|
||||||
|
private _displayName = [_cargo] call EFUNC(common,getName);
|
||||||
|
if ([_cargo, _holder] call EFUNC(cargo,loadItem)) then {
|
||||||
|
private _loadedItem = [localize ELSTRING(cargo,LoadedItem), "<br/>", " "] call CBA_fnc_replace;
|
||||||
|
private _holderDisplayName = [_holder] call EFUNC(common,getName);
|
||||||
|
[_loadedItem, _displayName, _holderDisplayName] call FUNC(showMessage);
|
||||||
|
} else {
|
||||||
|
private _loadingFailed = [localize ELSTRING(cargo,LoadingFailed), "<br/>", " "] call CBA_fnc_replace;
|
||||||
|
[_loadingFailed, _displayName] call FUNC(showMessage);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
localize LSTRING(ModuleLoadIntoCargo_DisplayName),
|
||||||
|
"a3\ui_f\data\IGUI\Cfg\Actions\loadVehicle_ca.paa"
|
||||||
|
] call FUNC(getModuleDestination);
|
@ -3,7 +3,7 @@
|
|||||||
* Commands the selected unit or group to start suppressive fire on the unit, group or location the module is placed on
|
* Commands the selected unit or group to start suppressive fire on the unit, group or location the module is placed on
|
||||||
*
|
*
|
||||||
* Arguments:
|
* Arguments:
|
||||||
* 0: The module logic <OBJECT>
|
* 0: Module logic <OBJECT>
|
||||||
* 1: Synchronized units <ARRAY>
|
* 1: Synchronized units <ARRAY>
|
||||||
* 2: Activated <BOOL>
|
* 2: Activated <BOOL>
|
||||||
*
|
*
|
||||||
@ -22,7 +22,7 @@ if (canSuspend) exitWith {[FUNC(moduleSuppressiveFire), _this] call CBA_fnc_dire
|
|||||||
|
|
||||||
params ["_logic", "_units", "_activated"];
|
params ["_logic", "_units", "_activated"];
|
||||||
|
|
||||||
if !(_activated && local _logic) exitWith {};
|
if !(_activated && {local _logic}) exitWith {};
|
||||||
|
|
||||||
// Validate the module target
|
// Validate the module target
|
||||||
private _unit = effectiveCommander (attachedTo _logic);
|
private _unit = effectiveCommander (attachedTo _logic);
|
||||||
@ -34,7 +34,7 @@ if (isNull _unit) exitWith {
|
|||||||
[LSTRING(NothingSelected)] call FUNC(showMessage);
|
[LSTRING(NothingSelected)] call FUNC(showMessage);
|
||||||
};
|
};
|
||||||
if (!alive _unit) exitWith {
|
if (!alive _unit) exitWith {
|
||||||
[localize LSTRING(OnlyAlive)] call FUNC(showMessage);
|
[LSTRING(OnlyAlive)] call FUNC(showMessage);
|
||||||
};
|
};
|
||||||
if ([_unit] call EFUNC(common,isPlayer)) exitWith {
|
if ([_unit] call EFUNC(common,isPlayer)) exitWith {
|
||||||
["str_a3_cfgvehicles_moduleremotecontrol_f_errorPlayer"] call FUNC(showMessage);
|
["str_a3_cfgvehicles_moduleremotecontrol_f_errorPlayer"] call FUNC(showMessage);
|
||||||
@ -43,8 +43,7 @@ if ([_unit] call EFUNC(common,isPlayer)) exitWith {
|
|||||||
[_unit, {
|
[_unit, {
|
||||||
params ["_successful", "_unit", "_mousePosASL"];
|
params ["_successful", "_unit", "_mousePosASL"];
|
||||||
TRACE_3("getModuleDestination return",_successful,_unit,_mousePosASL);
|
TRACE_3("getModuleDestination return",_successful,_unit,_mousePosASL);
|
||||||
if (!_successful) exitWith {};
|
if !(_successful && {alive _unit}) exitWith {};
|
||||||
if (!alive _unit) exitWith {};
|
|
||||||
private _vehicle = vehicle _unit;
|
private _vehicle = vehicle _unit;
|
||||||
|
|
||||||
private _targetASL = _mousePosASL vectorAdd [0,0,0.6]; // mouse pos is at ground level zero, raise up a bit;
|
private _targetASL = _mousePosASL vectorAdd [0,0,0.6]; // mouse pos is at ground level zero, raise up a bit;
|
||||||
@ -117,4 +116,4 @@ if ([_unit] call EFUNC(common,isPlayer)) exitWith {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}, (localize LSTRING(ModuleSuppressiveFire_DisplayName))] call FUNC(getModuleDestination);
|
}, localize LSTRING(ModuleSuppressiveFire_DisplayName)] call FUNC(getModuleDestination);
|
||||||
|
@ -1017,23 +1017,26 @@
|
|||||||
<Chinese>火力壓制</Chinese>
|
<Chinese>火力壓制</Chinese>
|
||||||
<Polish>Ogień zaporowy</Polish>
|
<Polish>Ogień zaporowy</Polish>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Zeus_moduleAddFullArsenal_displayName">
|
<Key ID="STR_ACE_Zeus_ModuleAddFullArsenal_DisplayName">
|
||||||
<English>Add full arsenal to object</English>
|
<English>Add Full Arsenal</English>
|
||||||
<French>Ajouter arsenal complet à l'objet</French>
|
<French>Ajouter Arsenal Complet</French>
|
||||||
<Italian>Aggiunge arsenale completo all'oggetto</Italian>
|
<Italian>Aggiunge Arsenale Completo</Italian>
|
||||||
<Japanese>オブジェクトに完全なアーセナルを追加</Japanese>
|
<Japanese>オブジェクトに完全なアーセナルを追加</Japanese>
|
||||||
<Chinesesimp>增加完整的虚拟军火库到物件上</Chinesesimp>
|
<Chinesesimp>增加完整的虚拟军火库到物件上</Chinesesimp>
|
||||||
<Chinese>增加完整的虛擬軍火庫到物件上</Chinese>
|
<Chinese>增加完整的虛擬軍火庫到物件上</Chinese>
|
||||||
<Polish>Dodaj Wirtualny Arsenał do obiektu</Polish>
|
<Polish>Dodaj Wirtualny Arsenał</Polish>
|
||||||
</Key>
|
</Key>
|
||||||
<Key ID="STR_ACE_Zeus_moduleRemoveArsenal_displayName">
|
<Key ID="STR_ACE_Zeus_ModuleRemoveArsenal_DisplayName">
|
||||||
<English>Remove arsenal from object</English>
|
<English>Remove Arsenal</English>
|
||||||
<French>Retirer arsenal de l'objet</French>
|
<French>Retirer Arsenal</French>
|
||||||
<Italian>Rimuove arsenale completo dall'oggetto</Italian>
|
<Italian>Rimuove Arsenale</Italian>
|
||||||
<Japanese>オブジェクトからアーセナルを削除</Japanese>
|
<Japanese>オブジェクトからアーセナルを削除</Japanese>
|
||||||
<Chinesesimp>移除物件上的虚拟军火库</Chinesesimp>
|
<Chinesesimp>移除物件上的虚拟军火库</Chinesesimp>
|
||||||
<Chinese>移除物件上的虛擬軍火庫</Chinese>
|
<Chinese>移除物件上的虛擬軍火庫</Chinese>
|
||||||
<Polish>Usuń Wirtualny Arsenał z obiektu</Polish>
|
<Polish>Usuń Wirtualny Arsenał</Polish>
|
||||||
|
</Key>
|
||||||
|
<Key ID="STR_ACE_Zeus_ModuleLoadIntoCargo_DisplayName">
|
||||||
|
<English>Load into Cargo</English>
|
||||||
</Key>
|
</Key>
|
||||||
</Package>
|
</Package>
|
||||||
</Project>
|
</Project>
|
||||||
|
Loading…
Reference in New Issue
Block a user