Skip to content

Commit

Permalink
Arsenal - Add ace_arsenal_fnc_saveLoadout as API to save loadouts (#…
Browse files Browse the repository at this point in the history
…10151)

* Added fnc_saveLoadout

* Changed to toLower for other languages

* GitHub didn't like editing the file in the browser

* Fix case-sensitive _loadoutIndex

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* Unicode support

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>

* setVariable in case no loadouts are saved

* Fix return not happening properly

* Added scripting example

* Update docs/wiki/framework/arsenal-framework.md

---------

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
  • Loading branch information
3 people authored Aug 10, 2024
1 parent 346d56c commit e36363e
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
1 change: 1 addition & 0 deletions addons/arsenal/XEH_PREP.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ PREP(removeStat);
PREP(removeVirtualItems);
PREP(renameDefaultLoadout);
PREP(replaceUniqueItemsLoadout);
PREP(saveLoadout);
PREP(scanConfig);
PREP(showItem);
PREP(sortPanel);
Expand Down
37 changes: 37 additions & 0 deletions addons/arsenal/functions/fnc_saveLoadout.sqf
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#include "..\script_component.hpp"
/*
* Author: DartRuffian
* Saves a given loadout to the client's profile.
*
* Arguments:
* 0: Name of loadout <STRING>
* 1: CBA extended loadout or getUnitLoadout array <ARRAY>
* 2: Replace existing loadout <BOOL> (default: false)
*
* Return Value:
* True if loadout was saved, otherwise false <BOOL>
*
* Example:
* ["Current Loadout", getUnitLoadout ACE_player] call ace_arsenal_fnc_saveLoadout
*
* Public: Yes
*/

params [["_name", "", [""]], ["_loadout", [], [[]]], ["_replaceExisting", false, [false]]];

if (_name == "" || {_loadout isEqualTo []}) exitWith { false };

private _loadouts = profileNamespace getVariable [QGVAR(saved_loadouts), []];
private _loadoutIndex = _loadouts findIf {(_x#0) == _name};

// If a loadout with same name already exists and no overwriting enabled, quit
if (!_replaceExisting && {_loadoutIndex != -1}) exitWith { false };

if (_loadoutIndex == -1) then {
_loadouts pushBack [_name, _loadout];
} else {
_loadouts set [_loadoutIndex, [_name, _loadout]];
};

profileNamespace setVariable [QGVAR(saved_loadouts), _loadouts];
true
9 changes: 9 additions & 0 deletions docs/wiki/framework/arsenal-framework.md
Original file line number Diff line number Diff line change
Expand Up @@ -588,3 +588,12 @@ TAG_my_arsenal_essentials = ["arifle_AK12_F", "LMG_03_F"];
[ace_arsenal_currentBox, TAG_my_arsenal_essentials] call ace_arsenal_fnc_addVirtualItems
}] call CBA_fnc_addEventHandler;
```

### 10.4 Saving loadouts to profile
A loadout can be saved to the player's profile using `ace_arsenal_fnc_saveLoadout`.

```sqf
private _loadout = [ACE_player] call CBA_fnc_getLoadout; // or getUnitLoadout ACE_player
private _replaceExisting = true; // optional, default: false
["Current Loadout", _loadout, _replaceExisting] call ace_arsenal_fnc_saveLoadout;
```

0 comments on commit e36363e

Please sign in to comment.