Compare commits

...

25 Commits

Author SHA1 Message Date
github-actions
218ffa4fbb v1.0.0 Build 16 2025-05-04 00:34:59 +00:00
Jacob Schmidt
dc72f88327 feat(db): Force save on mission end
All checks were successful
Build / Build (push) Successful in 29s
This commit introduces a mission event handler that forces a database save with backup when the mission ends.

Key changes:

*   **`XEH_preInit_server.sqf`:** Added an "Ended" mission event handler that calls the `ArmaDragonflyClient` extension with the "savedb" command and logs an info message. This ensures that the database is saved when the mission ends, providing a backup in case of unexpected server shutdowns.
2025-05-03 19:34:43 -05:00
github-actions
6857e12d26 v1.0.0 Build 15 2025-04-05 14:07:36 +00:00
Jacob Schmidt
665561e29e feat(db): Implement hash deletion functions
All checks were successful
Build / Build (push) Successful in 1m21s
This commit introduces functionality to delete hash values from the Dragonfly database. It includes two new functions: `hashDelete` for deleting a hash value by key, and `hashDeleteId` for deleting a hash value by both key and ID.

Key changes:

*   **`fnc_processQueue.sqf`:** Added cases for "hdel" and "hdelid" task types to process hash deletion requests, calling the corresponding `FUNC(hashDelete)` and `FUNC(hashDeleteId)` functions.
*   **`XEH_PREP.hpp`:** Added `PREP` definitions for `hashDelete` and `hashDeleteId` to enable event handlers for these functions.
2025-04-05 09:06:46 -05:00
github-actions
ddb7e9ccc3 v1.0.0 Build 14 2025-03-30 22:15:53 +00:00
Jacob Schmidt
c8d81ba3bb docs: Update README.md with detailed documentation
All checks were successful
Build / Build (push) Successful in 39s
This commit significantly enhances the `README.md` file, providing comprehensive documentation for the ArmaDragonflyClient.

Key changes:

*   **Detailed Function Categories:** Categorized functions for better organization (Core, Basic Data Operations, Hash Operations, List Operations).
*   **Usage Examples:** Added clear and concise usage examples for basic operations, hash operations (context and ID-specific), and list operations.
*   **Function Documentation Structure:** Outlined the structure for individual function documentation.
*   **License Information:** Updated the license information.
2025-03-30 17:15:35 -05:00
github-actions
ff9922ae05 v1.0.0 Build 13 2025-03-29 20:35:39 +00:00
Jacob Schmidt
236dec1d35 feat(client): Trim quotes from hashset value
All checks were successful
Build / Build (push) Successful in 30s
This commit enhances the handling of string values in the `DragonflyHashSetAsync` function. Specifically, it adds `.Trim('"')` to the second argument (the value being set) to remove any surrounding quotes. This ensures that the value is correctly stored and retrieved, preventing potential issues with data integrity.

Key changes:

*   **String Value Trimming:** Added `.Trim('"')` to the value argument in `DragonflyHashSetAsync` within `Main.cs`.
*   **Binary Updates:** Updated the compiled DLL and SO files.
2025-03-29 15:35:20 -05:00
github-actions
fb4695a0ee v1.0.0 Build 12 2025-03-28 14:45:33 +00:00
Jacob Schmidt
8c64bfe4a9 feat(db): Enhance debugging and fix NetId handling
All checks were successful
Build / Build (push) Successful in 30s
This commit enhances debugging capabilities and addresses issues related to NetId handling within the DragonflyDB system.

Key changes:

*   **Improved Debugging:** Added more detailed logging in `Utils.cs` to track data chunks and strings, improving the ability to diagnose issues.
*   **NetId Handling Fix:** Modified `fnc_handler.sqf` to correctly handle NetIds, including a fallback mechanism if the target object is null. This ensures that remote execution attempts don't fail silently.
*   **Function Examples:** Updated examples in `fnc_hashSetIdBulk.sqf` and `fnc_hashSetBulk.sqf` to correctly use array syntax for function calls.
*   **Simplified fetch.sqf:** Removed unecessary conversion of the _call variable.
*   **Binary Updates:** Updated the compiled DLL and SO files.
2025-03-28 09:45:16 -05:00
github-actions
b05c76edf2 v1.0.0 Build 11 2025-03-24 04:20:23 +00:00
Jacob Schmidt
ce904a7978 feat(db): Add debug logging to all DragonflyDB functions
All checks were successful
Build / Build (push) Successful in 30s
Enhanced debugging capabilities by adding conditional logging statements to all DragonflyDB functions. These logs include input parameters and return values, providing detailed insights into function execution. The logging is enabled only when the `__A3__DEBUG__` preprocessor directive is defined, ensuring minimal performance impact in production environments. This change improves the ability to diagnose issues and understand the flow of data within the DragonflyDB system.
2025-03-23 23:20:03 -05:00
github-actions
94c6d7f506 v1.0.0 Build 10 2025-03-24 03:32:33 +00:00
Jacob Schmidt
445c836252 Merge branch 'master' of https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly
All checks were successful
Build / Build (push) Successful in 30s
2025-03-23 22:32:23 -05:00
Jacob Schmidt
b23679a8c3 feat(debug): Enhance logging for task management and data handling
Added conditional logging for various functions in the DragonflyDB interface to improve debugging capabilities. This includes detailed logs for task processing, fetching, publishing, and subscribing actions, which are now only active in debug mode. Additionally, updated the buffer size and path handling in the main extension code for better performance and compatibility.
2025-03-23 22:32:18 -05:00
1aee05afa3 Update README.md 2025-03-21 00:31:20 -05:00
github-actions
8733ad20f5 v1.0.0 Build 9 2025-03-21 01:07:15 +00:00
Jacob Schmidt
ee960db132 feat: Update binaries
All checks were successful
Build / Build (push) Successful in 29s
Updates the ArmaDragonflyClient binaries for Windows and Linux. This includes changes to the DLL and SO files in the extension and publish directories.
2025-03-20 20:07:01 -05:00
github-actions
683d587090 v1.0.0 Build 8 2025-03-21 00:58:43 +00:00
Jacob Schmidt
6d6dc81135 Merge branch 'master' of https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly
All checks were successful
Build / Build (push) Successful in 42s
2025-03-20 19:58:34 -05:00
Jacob Schmidt
fa745dde8d fix(db): Update include paths in pub/sub functions
Updates the include paths in `fnc_publish.sqf` and `fnc_subscribe.sqf` to use relative paths. This ensures the correct `script_component.hpp` file is included.
2025-03-20 19:58:30 -05:00
github-actions
a227ed8c80 v1.0.0 Build 7 2025-03-21 00:56:52 +00:00
Jacob Schmidt
033630977a Merge branch 'master' of https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly
Some checks failed
Build / Build (push) Failing after 1m1s
2025-03-20 19:55:52 -05:00
Jacob Schmidt
38639b50c7 feat(db): Add pub/sub interface functions for DragonflyDB
Add two new functions to interface with DragonflyDB pub/sub system:
- fnc_subscribe.sqf: Subscribe to channels with CBA event routing
- fnc_publish.sqf: Publish messages to channels

These functions integrate with the existing pubSubHandler to route
messages through CBA's event system using 'global', 'local', 'server',
and 'remote' event types.

Both functions include proper input validation, error handling, and
detailed documentation with examples.
2025-03-20 19:54:58 -05:00
b83c22601f Update .github/workflows/build.yml 2025-02-22 13:54:01 -06:00
316 changed files with 26769 additions and 2356 deletions

View File

@ -15,7 +15,7 @@ on:
jobs:
build:
name: Build
runs-on: ubuntu-22.04
runs-on: ubuntu-latest
steps:
- name: Checkout Source Code
uses: actions/checkout@v4

24
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,24 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Start Arma 3 Server",
"type": "process",
"command": "wscript.exe",
"args": [
"D:\\SteamLibrary\\steamapps\\common\\Arma 3\\start_serverhub_hidden.vbs"
],
"presentation": {
"reveal": "silent",
"panel": "shared",
"showReuseMessage": false,
"clear": true
},
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

Binary file not shown.

Binary file not shown.

View File

@ -15,7 +15,7 @@ If something is broken, contact **J. Schmidt92** or open a new issue on **[Gitea
</br>
**For more information, [read the Docs.](https://jschmidt92.github.io/ArmaDragonflyClient/#/)**
**For more information, [read the Docs.](https://docs.innovativedevsolutions.org/dragonfly)**
**For Roadmap, [visit the project page.](https://gitea.innovativedevsolutions.org/IDSolutions/dragonfly/projects)** _(WIP)_

View File

@ -3,6 +3,8 @@ PREP(delete);
PREP(fetch);
PREP(get);
PREP(handler);
PREP(hashDelete);
PREP(hashDeleteId);
PREP(hashGet);
PREP(hashGetAll);
PREP(hashGetAllId);
@ -20,8 +22,10 @@ PREP(listSet);
PREP(pubSubFetch);
PREP(pubSubHandler);
PREP(processQueue);
PREP(publish);
PREP(saveDB);
PREP(scheduler);
PREP(set);
PREP(setup);
PREP(subscribe);
PREP(test);

View File

@ -1 +1,6 @@
#include "script_component.hpp"
addMissionEventHandler ["Ended", {
"ArmaDragonflyClient" callExtension ["savedb", []];
INFO("Mission ended - forced save with backup");
}];

View File

@ -39,10 +39,15 @@ params [["_taskType", "", [""]], ["_key", "", [""]], ["_keyField", "", [""]], ["
private _task = [_taskType, _key, _keyField, _index, _value, _function, _call, _netId];
#ifdef __ARMA__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_addTask' Added Task '%1' to Queue", _task];
#endif
GVAR(taskQueue) pushBack _task;
#ifdef __ARMA__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_addTask' Queue: %1", GVAR(taskQueue)];
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_addTask' Queue Size: %1", count GVAR(taskQueue)];
#endif
if !(GVAR(isProcessing)) then { [] spawn FUNC(processQueue); };

View File

@ -30,6 +30,12 @@
params [["_key", "", [""]]];
if (_key == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_delete' Invalid Input for Key '%1'", _key]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_delete' Key: '%1'", _key];
#endif
if (_key == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_delete' Invalid Input for Key '%1'", _key];
};
"ArmaDragonflyClient" callExtension ["del", [_key]];

View File

@ -20,13 +20,15 @@
["uniqueID", "function", "index", "indextotal", "datachunk", "call", "netId"]
*/
diag_log _this;
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_fetch' Input: %1", _this];
#endif
params ["_uniqueID", "_function", "_index", "_total", "_datachunk", "_call", "_netId"];
private _dataString = "";
private _index_array = [];
private _count_total = -1;
private _count_total = 0;
dragonfly_db_fetch_array pushBackUnique [_uniqueID, _function, _index, _total, _datachunk, _call, _netId];
@ -42,11 +44,13 @@ _count_total = {
if (_count_total == _total) then {
_index_array sort true;
for "_i" from 0 to (_total - 1) do {
_dataString = _dataString + ((_index_array select _i) select 1);
};
{
_dataString = _dataString + (_x select 1);
} forEach _index_array;
diag_log _dataString;
#ifdef __ARMA__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_fetch' Data String: %1", _dataString];
#endif
[_uniqueID, _function, _call, (parseSimpleArray _dataString), _netId] call FUNC(handler);

View File

@ -31,19 +31,38 @@
* Public: Yes
*/
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", "", [""]]];
if (_key == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_get' Invalid Input for Key '%1' or Function '%2'", _key, _function]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_get' Key: '%1', Function: '%2', Call: '%3', NetId: '%4'", _key, _function, _call, _netId];
#endif
if (_key == "" || _function == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_get' Invalid Input for Key '%1' or Function '%2'", _key, _function];
};
private _return = "";
if (_netId != "") then {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_get' Using NetId: '%1'", _netId];
#endif
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["get", [_key, _function, _netId, _call]];
[(_return select 0)] call FUNC(scheduler);
} else {
_return = "ArmaDragonflyClient" callExtension ["get", [_key, _function, _netId]];
[(_return select 0)] call FUNC(scheduler);
};
} else {
#ifdef __A3__DEBUG__
diag_log text "ArmaDragonflyClient: 'dragonfly_db_fnc_get' Using current player";
#endif
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["get", [_key, _function, _call]];
} else {
_return = "ArmaDragonflyClient" callExtension ["get", [_key, _function]];
[(_return select 0)] call FUNC(scheduler);
};
};
[(_return select 0)] call FUNC(scheduler);

View File

@ -32,16 +32,46 @@
* Public: Yes
*/
params [["_uniqueID", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_data", [], [[]]], ["_netId", nil, [""]]];
params [["_uniqueID", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_data", [], [[]]], ["_netId", "", [""]]];
if (_function == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_handler' Invalid Input for Function '%1' or Data '%2'", _function, _data]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_handler' UniqueID: '%1', Function: '%2', Call: '%3', Data: '%4', NetId: '%5'", _uniqueID, _function, _call, _data, _netId];
#endif
if (_function == "" || count _data == 0) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_handler' Invalid Input for Function '%1' or Data '%2'", _function, _data];
};
private _func = call compile format ["%1", _function];
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
if (_netId != "") then {
private _target = objectFromNetId _netId;
if (_call) then { _data remoteExecCall [_function, _target, false]; } else { _data remoteExec [_function, _target, false]; };
if (!isNull _target) then {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_handler' Using NetId: '%1'", _netId];
#endif
if (_call) then {
_data remoteExecCall [_function, _target, false];
} else {
if (_call) then { _data call _func; } else { _data spawn _func; };
_data remoteExec [_function, _target, false];
};
} else {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_handler' NetId '%1' resolved to null object, using local execution", _netId];
#endif
if (_call) then {
_data call _func;
} else {
_data spawn _func;
};
};
} else {
if (_call) then {
_data call _func;
} else {
_data spawn _func;
};
};

View File

@ -0,0 +1,41 @@
#include "..\script_component.hpp"
/*
* Function: dragonfly_db_fnc_hashDelete
* Author: Creedcoder, J.Schmidt
* Edit: 07.15.2024
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
*
* Do not edit without permission!
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
* PO Box 1866, Mountain View, CA 94042
*
* [Description]
* Delete field in hash stored at key from DB.
*
* Arguments:
* 0: Name of stored field in hash <STRING> (default: "")
*
* Return Value:
* N/A
*
* Examples:
* ["loadout"] call dragonfly_db_fnc_hashDelete (Server or Singleplayer Only)
* ["loadout"] remoteExecCall ["dragonfly_db_fnc_hashDelete", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
params [["_keyField", "", [""]]];
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashDelete' KeyField: '%1'", _keyField];
#endif
if (_keyField == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashDelete' Invalid Input for KeyField '%1'", _keyField];
};
"ArmaDragonflyClient" callExtension ["hdel", [_keyField]];

View File

@ -0,0 +1,42 @@
#include "..\script_component.hpp"
/*
* Function: dragonfly_db_fnc_hashDeleteId
* Author: Creedcoder, J.Schmidt
* Edit: 07.15.2024
* Copyright © 2024 Creedcoder, J.Schmidt, All rights reserved
*
* Do not edit without permission!
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
* PO Box 1866, Mountain View, CA 94042
*
* [Description]
* Delete field in hash stored at key from DB.
*
* Arguments:
* 0: Key <STRING> (default: "")
* 1: Key Field <STRING> (default: "")
*
* Return Value:
* N/A
*
* Examples:
* [getPlayerUID player, "loadout"] call dragonfly_db_fnc_hashDeleteId (Server or Singleplayer Only)
* [getPlayerUID player, "loadout"] remoteExecCall ["dragonfly_db_fnc_hashDeleteId", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
params [["_key", "", [""]], ["_keyField", "", [""]]];
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashDeleteId' Key: '%1', KeyField: '%2'", _key, _keyField];
#endif
if (_key == "" || _keyField == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashDeleteId' Invalid Input for Key '%1' or KeyField '%2'", _key, _keyField];
};
"ArmaDragonflyClient" callExtension ["hdelid", [_key, _keyField]];

View File

@ -31,19 +31,42 @@
* Public: Yes
*/
params [["_keyField", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
params [["_keyField", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", "", [""]]];
if (_keyField == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGet' Invalid Input for KeyField '%1' or Function '%2'", _keyField, _function]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGet' KeyField: '%1', Function: '%2', Call: '%3', NetId: '%4'", _keyField, _function, _call, _netId];
#endif
if (_keyField == "" || _function == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGet' Invalid Input for KeyField '%1' or Function '%2'", _keyField, _function];
};
private _return = "";
if (_netId != "") then {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGet' Using NetId: '%1'", _netId];
#endif
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["hget", [_keyField, _function, _netId, _call]];
[(_return select 0)] call FUNC(scheduler);
} else {
_return = "ArmaDragonflyClient" callExtension ["hget", [_keyField, _function, _netId]];
[(_return select 0)] call FUNC(scheduler);
};
} else {
#ifdef __A3__DEBUG__
diag_log text "ArmaDragonflyClient: 'dragonfly_db_fnc_hashGet' Using current player";
#endif
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["hget", [_keyField, _function, _call]];
} else {
_return = "ArmaDragonflyClient" callExtension ["hget", [_keyField, _function]];
[(_return select 0)] call FUNC(scheduler);
};
};
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGet' Return: '%1'", _return];
#endif
[(_return select 0)] call FUNC(scheduler);

View File

@ -30,19 +30,42 @@
* Public: Yes
*/
params [["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
params [["_function", "", [""]], ["_call", false, [false]], ["_netId", "", [""]]];
if (_function isEqualTo "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAll' Invalid Input for Function '%1'", _function]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAll' Function: '%1', Call: '%2', NetId: '%3'", _function, _call, _netId];
#endif
if (_function isEqualTo "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAll' Invalid Input for Function '%1'", _function];
};
private _return = "";
if (_netId != "") then {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAll' Using NetId: '%1'", _netId];
#endif
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["hgetall", [_function, _netId, _call]];
[(_return select 0)] call FUNC(scheduler);
} else {
_return = "ArmaDragonflyClient" callExtension ["hgetall", [_function, _netId]];
[(_return select 0)] call FUNC(scheduler);
};
} else {
#ifdef __A3__DEBUG__
diag_log text "ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAll' Using current player";
#endif
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["hgetall", [_function, _call]];
} else {
_return = "ArmaDragonflyClient" callExtension ["hgetall", [_function]];
[(_return select 0)] call FUNC(scheduler);
};
};
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAll' Return: '%1'", _return];
#endif
[(_return select 0)] call FUNC(scheduler);

View File

@ -31,19 +31,42 @@
* Public: Yes
*/
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", "", [""]]];
if (_key == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAllId' Invalid Input for Key '%1' or Function '%2'", _key, _function]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAllId' Key: '%1', Function: '%2', Call: '%3', NetId: '%4'", _key, _function, _call, _netId];
#endif
if (_key == "" || _function == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAllId' Invalid Input for Key '%1' or Function '%2'", _key, _function];
};
private _return = "";
if (_netId != "") then {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAllId' Using NetId: '%1'", _netId];
#endif
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["hgetallid", [_key, _function, _netId, _call]];
[(_return select 0)] call FUNC(scheduler);
} else {
_return = "ArmaDragonflyClient" callExtension ["hgetallid", [_key, _function, _netId]];
[(_return select 0)] call FUNC(scheduler);
};
} else {
#ifdef __A3__DEBUG__
diag_log text "ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAllId' Using current player";
#endif
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["hgetallid", [_key, _function, _call]];
} else {
_return = "ArmaDragonflyClient" callExtension ["hgetallid", [_key, _function]];
[(_return select 0)] call FUNC(scheduler);
};
};
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetAllId' Return: '%1'", _return];
#endif
[(_return select 0)] call FUNC(scheduler);

View File

@ -32,19 +32,42 @@
* Public: Yes
*/
params [["_key", "", [""]], ["_keyField", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
params [["_key", "", [""]], ["_keyField", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", "", [""]]];
if (_key == "" || _keyField == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetId' Invalid Input for Key '%1', KeyField '%2' or Function '%3'", _key, _keyField, _function]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetId' Key: '%1', KeyField: '%2', Function: '%3', Call: '%4', NetId: '%5'", _key, _keyField, _function, _call, _netId];
#endif
if (_key == "" || _keyField == "" || _function == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetId' Invalid Input for Key '%1', KeyField '%2' or Function '%3'", _key, _keyField, _function];
};
private _return = "";
if (_netId != "") then {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetId' Using NetId: '%1'", _netId];
#endif
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["hgetid", [_key, _keyField, _function, _netId, _call]];
[(_return select 0)] call FUNC(scheduler);
} else {
_return = "ArmaDragonflyClient" callExtension ["hgetid", [_key, _keyField, _function, _netId]];
[(_return select 0)] call FUNC(scheduler);
};
} else {
#ifdef __A3__DEBUG__
diag_log text "ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetId' Using current player";
#endif
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["hgetid", [_key, _keyField, _function, _call]];
} else {
_return = "ArmaDragonflyClient" callExtension ["hgetid", [_key, _keyField, _function]];
[(_return select 0)] call FUNC(scheduler);
};
};
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashGetId' Return: '%1'", _return];
#endif
[(_return select 0)] call FUNC(scheduler);

View File

@ -31,6 +31,12 @@
params [["_keyField", "", [""]], ["_data", [], [[]]]];
if (_keyField == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSet' Invalid Input for KeyField '%1' or Data '%2'", _keyField, _data]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSet' KeyField: '%1', Data: '%2'", _keyField, _data];
#endif
if (_keyField == "" || count _data == 0) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSet' Invalid Input for KeyField '%1' or Data '%2'", _keyField, _data];
};
"ArmaDragonflyClient" callExtension ["hset", [_keyField, _data]];

View File

@ -22,14 +22,20 @@
* N/A
*
* Examples:
* ["loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] call dragonfly_db_fnc_hashSetBulk (Server or Singleplayer Only)
* ["loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] remoteExecCall ["dragonfly_db_fnc_hashSetBulk", 2, false] (Multiplayer Only)
* [["loadout", [getUnitLoadout player], "position", [getPosASLVisual player]]] call dragonfly_db_fnc_hashSetBulk (Server or Singleplayer Only)
* [["loadout", [getUnitLoadout player], "position", [getPosASLVisual player]]] remoteExecCall ["dragonfly_db_fnc_hashSetBulk", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
params [["_data", [], [[]]]];
if (count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetBulk' Invalid Input for Data '%1'", _data]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetBulk' Data: %1", _data];
#endif
if (count _data == 0) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetBulk' Invalid Input for Data '%1'", _data];
};
"ArmaDragonflyClient" callExtension ["hset", _data];

View File

@ -32,6 +32,12 @@
params [["_key", "", [""]], ["_keyField", "", [""]], ["_data", [], [[]]]];
if (_key == "" || _keyField == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetId' Invalid Input for Key '%1', KeyField '%2' or Data '%3'", _key, _keyField, _data]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetId' Key: '%1', KeyField: '%2', Data: '%3'", _key, _keyField, _data];
#endif
if (_key == "" || _keyField == "" || count _data == 0) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetId' Invalid Input for Key '%1', KeyField '%2' or Data '%3'", _key, _keyField, _data];
};
"ArmaDragonflyClient" callExtension ["hsetid", [_key, _keyField, _data]];

View File

@ -22,14 +22,20 @@
* N/A
*
* Examples:
* [getPlayerUID player, "loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] call dragonfly_db_fnc_hashSetIdBulk (Server or Singleplayer Only)
* [getPlayerUID player, "loadout", [getUnitLoadout player], "position", [getPosASLVisual player]] remoteExecCall ["dragonfly_db_fnc_hashSetIdBulk", 2, false] (Multiplayer Only)
* [[getPlayerUID player, "loadout", [getUnitLoadout player], "position", [getPosASLVisual player]]] call dragonfly_db_fnc_hashSetIdBulk (Server or Singleplayer Only)
* [[getPlayerUID player, "loadout", [getUnitLoadout player], "position", [getPosASLVisual player]]] remoteExecCall ["dragonfly_db_fnc_hashSetIdBulk", 2, false] (Multiplayer Only)
*
* Public: Yes
*/
params [["_data", [], [[]]]];
if (count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetIdBulk' Invalid Input for Data '%1'", _data]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetIdBulk' Data: %1", _data];
#endif
if (count _data == 0) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_hashSetIdBulk' Invalid Input for Data '%1'", _data];
};
"ArmaDragonflyClient" callExtension ["hsetid", _data];

View File

@ -31,6 +31,12 @@
params [["_key", "", [""]], ["_data", [], [[]]]];
if (_key == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listAdd' Invalid Input for Key '%1' or Data '%2'", _key, _data]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listAdd' Key: '%1', Data: '%2'", _key, _data];
#endif
if (_key == "" || count _data == 0) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listAdd' Invalid Input for Key '%1' or Data '%2'", _key, _data];
};
"ArmaDragonflyClient" callExtension ["listadd", [_key, _data]];

View File

@ -32,19 +32,42 @@
* Public: Yes
*/
params [["_key", "", [""]], ["_index", -1, [0]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
params [["_key", "", [""]], ["_index", -1, [0]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", "", [""]]];
if (_key == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listGet' Invalid Input for Key '%1' or Function '%2'", _key, _function]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listGet' Key: '%1', Index: '%2', Function: '%3', Call: '%4', NetId: '%5'", _key, _index, _function, _call, _netId];
#endif
if (_key == "" || _function == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listGet' Invalid Input for Key '%1' or Function '%2'", _key, _function];
};
private _return = "";
if (_netId != "") then {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listGet' Using NetId: '%1'", _netId];
#endif
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["listidx", [_key, _index, _function, _netId, _call]];
[(_return select 0)] call FUNC(scheduler);
} else {
_return = "ArmaDragonflyClient" callExtension ["listidx", [_key, _index, _function, _netId]];
[(_return select 0)] call FUNC(scheduler);
};
} else {
#ifdef __A3__DEBUG__
diag_log text "ArmaDragonflyClient: 'dragonfly_db_fnc_listGet' Using current player";
#endif
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["listidx", [_key, _index, _function, _call]];
} else {
_return = "ArmaDragonflyClient" callExtension ["listidx", [_key, _index, _function]];
[(_return select 0)] call FUNC(scheduler);
};
};
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listGet' Return: '%1'", _return];
#endif
[(_return select 0)] call FUNC(scheduler);

View File

@ -31,19 +31,42 @@
* Public: Yes
*/
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", nil, [""]]];
params [["_key", "", [""]], ["_function", "", [""]], ["_call", false, [false]], ["_netId", "", [""]]];
if (_key == "" || _function == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listLoad' Invalid Input for Key '%1' or Function '%2'", _key, _function]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listLoad' Key: '%1', Function: '%2', Call: '%3', NetId: '%4'", _key, _function, _call, _netId];
#endif
if (_key == "" || _function == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listLoad' Invalid Input for Key '%1' or Function '%2'", _key, _function];
};
private _return = "";
if (_netId != "") then {
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listLoad' Using NetId: '%1'", _netId];
#endif
if ((!isNil "_netId") and (_netId isNotEqualTo "")) then {
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["listrng", [_key, 0, -1, _function, _netId, _call]];
[(_return select 0)] call FUNC(scheduler);
} else {
_return = "ArmaDragonflyClient" callExtension ["listrng", [_key, 0, -1, _function, _netId]];
[(_return select 0)] call FUNC(scheduler);
};
} else {
#ifdef __A3__DEBUG__
diag_log text "ArmaDragonflyClient: 'dragonfly_db_fnc_listLoad' Using current player";
#endif
if (_call) then {
_return = "ArmaDragonflyClient" callExtension ["listrng", [_key, 0, -1, _function, _call]];
} else {
_return = "ArmaDragonflyClient" callExtension ["listrng", [_key, 0, -1, _function]];
[(_return select 0)] call FUNC(scheduler);
};
};
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listLoad' Return: '%1'", _return];
#endif
[(_return select 0)] call FUNC(scheduler);

View File

@ -31,6 +31,12 @@
params [["_key", "", [""]], ["_index", -1, [0]]];
if (_key == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listRemove' Invalid Input for Key '%1'", _key]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listRemove' Key: '%1', Index: '%2'", _key, _index];
#endif
if (_key == "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listRemove' Invalid Input for Key '%1'", _key];
};
"ArmaDragonflyClient" callExtension ["listrem", [_key, _index]];

View File

@ -32,6 +32,12 @@
params [["_key", "", [""]], ["_index", -1, [0]], ["_data", [], [[]]]];
if (_key == "" || count _data == 0) exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listSet' Invalid Input for Key '%1' or Data '%2'", _key, _data]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listSet' Key: '%1', Index: '%2', Data: '%3'", _key, _index, _data];
#endif
if (_key == "" || count _data == 0) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_listSet' Invalid Input for Key '%1' or Data '%2'", _key, _data];
};
"ArmaDragonflyClient" callExtension ["listset", [_key, _index, _data]];

View File

@ -41,25 +41,137 @@ while { count GVAR(taskQueue) > 0} do {
private _call = _task select 6;
private _netId = _task select 7;
#ifdef __ARMA__DEBUG__
diag_log text format ["Initializing Task: %1", _task];
#endif
switch (_taskType) do {
case "get": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _function, _call, _netId] call FUNC(get); };
case "set": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _value] call FUNC(set); };
case "del": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key] call FUNC(delete); };
case "hget": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_keyField, _function, _call, _netId] call FUNC(hashGet); };
case "hgetid": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _keyField, _function, _call, _netId] call FUNC(hashGetId); };
case "hgetall": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_function, _call, _netId] call FUNC(hashGetAll); };
case "hgetallid": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _function, _call, _netId] call FUNC(hashGetAllId); };
case "hset": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_keyField, _value] call FUNC(hashSet); };
case "hsetbulk": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_value] call FUNC(hashSetBulk); };
case "hsetid": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _keyField, _value] call FUNC(hashSetId); };
case "hsetidbulk": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_value] call FUNC(hashSetIdBulk); };
case "listadd": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _value] call FUNC(listAdd); };
case "listidx": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _index, _function, _call, _netId] call FUNC(listGet); };
case "listrng": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _function, _call, _netId] call FUNC(listLoad); };
case "listrem": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _index] call FUNC(listRemove); };
case "listset": { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType]; [_key, _index, _value] call FUNC(listSet); };
case "get": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _function, _call, _netId] call FUNC(get);
};
case "set": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _value] call FUNC(set);
};
case "del": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key] call FUNC(delete);
};
case "hget": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_keyField, _function, _call, _netId] call FUNC(hashGet);
};
case "hgetid": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _keyField, _function, _call, _netId] call FUNC(hashGetId);
};
case "hgetall": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_function, _call, _netId] call FUNC(hashGetAll);
};
case "hgetallid": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _function, _call, _netId] call FUNC(hashGetAllId);
};
case "hset": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_keyField, _value] call FUNC(hashSet);
};
case "hsetbulk": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_value] call FUNC(hashSetBulk);
};
case "hsetid": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _keyField, _value] call FUNC(hashSetId);
};
case "hsetidbulk": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_value] call FUNC(hashSetIdBulk);
};
case "hdel": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_keyField] call FUNC(hashDelete);
};
case "hdelid": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _keyField] call FUNC(hashDeleteId);
};
case "listadd": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _value] call FUNC(listAdd);
};
case "listidx": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _index, _function, _call, _netId] call FUNC(listGet);
};
case "listrng": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _function, _call, _netId] call FUNC(listLoad);
};
case "listrem": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _index] call FUNC(listRemove);
};
case "listset": {
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_processQueue' Processing Task '%1'", _taskType];
#endif
[_key, _index, _value] call FUNC(listSet);
};
};
sleep 1;

View File

@ -20,7 +20,9 @@
["uniqueID", "evetnType", "eventName", "index", "indextotal", "datachunk", "target"]
*/
diag_log _this;
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_pubSubFetch' Data: %1", _this];
#endif
params ["_uniqueID", "_eventType", "_eventName", "_index", "_total", "_datachunk", "_target"];
@ -46,7 +48,9 @@ if (_count_total == _total) then {
_dataString = _dataString + ((_index_array select _i) select 1);
};
diag_log _dataString;
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_pubSubFetch' Data String: %1", _dataString];
#endif
[_uniqueID, _eventType, _eventName, (parseSimpleArray _dataString), _target] call FUNC(pubSubHandler);

View File

@ -34,6 +34,10 @@
params [["_uniqueID", "", [""]], ["_eventType", "", [""]], ["_eventName", "", [""]], ["_data", [], [[]]], ["_target", "", [""]]];
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_pubSubHandler' Data: %1", _this];
#endif
switch (_eventType) do {
case "global": {
[_eventName, _data] call CFUNC(globalEvent);

View File

@ -0,0 +1,53 @@
#include "..\script_component.hpp"
/*
* Function: dragonfly_db_fnc_publish
* Author: Creedcoder, J. Schmidt
* Edit: 07.15.2024
* Copyright © 2024 Creedcoder, J. Schmidt, All rights reserved
*
* Do not edit without permission!
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
* PO Box 1866, Mountain View, CA 94042
*
* [Description]
* Publish a message to a DragonflyDB channel.
* The message will be routed through the CBA event system based on the subscription event type.
*
* Arguments:
* 0: STRING - Channel name to publish to (default: "")
* 1: ARRAY|STRING|NUMBER|BOOL - Data to publish (default: [])
*
* Return Value:
* BOOLEAN - True if successful, false otherwise
*
* Examples:
* ["global_chat", "Hello world!"] call dragonfly_db_fnc_publish
* ["mission_updates", ["task_01", "SUCCEEDED", [2, 3, 4]]] call dragonfly_db_fnc_publish
*
* Public: Yes
*/
params [["_channel", "", [""]], ["_message", [], [[], "", 0, true]]];
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_publish' Channel: '%1', Message: '%2'", _channel, _message];
#endif
if (_channel isEqualTo "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_publish' Invalid Input for Channel '%1'", _channel];
false
};
private _args = [_channel, _message];
private _formattedArgs = _args apply { if (_x isEqualType "") then { str _x } else { _x } };
private _extensionArgs = _formattedArgs joinString ",";
private _result = "ArmaDragonflyClient" callExtension ["publish", [_extensionArgs]];
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_publish' Published message to channel '%1': '%2'", _channel, _message];
#endif
true

View File

@ -31,6 +31,12 @@
params [["_key", "", [""]], ["_data", "", [[]]]];
if (_key == "" || _data == "") exitWith { diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_set' Invalid Input for Key '%1' or Data '%2'", _key, _data]; };
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_set' Key: '%1', Data: '%2'", _key, _data];
#endif
if (_key == "" || isNil "_data") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_set' Invalid Input for Key '%1' or Data '%2'", _key, _data];
};
"ArmaDragonflyClient" callExtension ["set", [_key, _data]];

View File

@ -0,0 +1,73 @@
#include "..\script_component.hpp"
/*
* Function: dragonfly_db_fnc_subscribe
* Author: J. Schmidt
* Edit: 07.15.2024
* Copyright © 2024 J. Schmidt, All rights reserved
*
* Do not edit without permission!
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
* To view a copy of this license, vist https://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons,
* PO Box 1866, Mountain View, CA 94042
*
* [Description]
* Subscribe to a DragonflyDB channel for real-time updates.
* Uses CBA event system for message handling.
*
* Arguments:
* 0: STRING - Channel name to subscribe to (default: "")
* 1: STRING - Event type: "global", "local", "server", or "remote" (default: "global")
* 2: STRING - CBA event name to trigger when messages are received (default: "")
* 3: STRING - NetID of target to receive messages (only needed for "remote" event type) (default: nil)
*
* Return Value:
* BOOLEAN - True if successful, false otherwise
*
* Examples:
* ["global_chat", "global", "myChatEvent"] call dragonfly_db_fnc_subscribe
* ["player_notifications", "remote", "playerNotificationEvent", netId player] call dragonfly_db_fnc_subscribe
*
* Public: Yes
*/
params [["_channel", "", [""]], ["_eventType", "global", [""]], ["_eventName", "", [""]], ["_target", nil, [""]]];
#ifdef __A3__DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Channel: '%1', Event Type: '%2', Event Name: '%3', Target: '%4'", _channel, _eventType, _eventName, _target];
#endif
if (_channel isEqualTo "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Invalid Input for Channel '%1'", _channel];
false
};
if (!(_eventType in ["global", "local", "server", "remote"])) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Invalid Input for Event Type '%1'", _eventType];
false
};
if (_eventType isEqualTo "remote" && (isNil "_target" || _target isEqualTo "")) exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Invalid Input for Target NetID '%1'", _target];
false
};
if (_eventName isEqualTo "") exitWith {
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Invalid Input for Event Name '%1'", _eventName];
false
};
private _args = [_channel, _eventType, _eventName];
if (!isNil "_target") then { _args pushBack _target; };
private _formattedArgs = _args apply { if (_x isEqualType "") then { str _x } else { _x } };
private _extensionArgs = _formattedArgs joinString ",";
private _result = "ArmaDragonflyClient" callExtension ["subscribe", [_extensionArgs]];
#ifdef __ARMA_DEBUG__
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_subscribe' Subscribed to channel '%1' with event type '%2' and event name '%3'", _channel, _eventType, _eventName];
#endif
true

View File

@ -32,3 +32,4 @@ _res = _this;
dragonfly_db_test = _res;
hint format ["%1", _res];
diag_log text format ["ArmaDragonflyClient: 'dragonfly_db_fnc_test' Result: '%1'", _res];

View File

@ -1,4 +1,4 @@
#define MAJOR 1
#define MINOR 0
#define PATCH 0
#define BUILD 6
#define BUILD 16

BIN
api.7z Normal file

Binary file not shown.

View File

@ -0,0 +1,84 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue" xml:lang="en-US">
<title>processQueue</title>
<indexterm><primary>processQueue</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md119">
<title>autotoc_md119</title>
<para>title: ArmaDragonflyClient - Process Queue icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md120">
<title>excerpt: Processes a queue of tasks to be executed.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md121">
<title>dragonfly_db_fnc_processQueue</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md122">
<title>Description</title>
<para>Processes the queue of pending database tasks sequentially. This function executes each task in the queue one by one, handling various database operations based on the task type. It continues processing until the queue is empty.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md123">
<title>Syntax</title>
<para><literallayout><computeroutput>[]&#32;spawn&#32;dragonfly_db_fnc_processQueue
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md124">
<title>Parameters</title>
<para>None. This function does not require any parameters.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md125">
<title>Return Value</title>
<para>None. The function processes tasks in the queue and updates the processing state.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md126">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md127">
<title>Start processing the queue manually:</title>
<para><literallayout><computeroutput>[]&#32;spawn&#32;dragonfly_db_fnc_processQueue;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md128">
<title>Trigger queue processing from a client:</title>
<para><literallayout><computeroutput>[]&#32;remoteExec&#32;[&quot;dragonfly_db_fnc_processQueue&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md129">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Sets <computeroutput>GVAR(isProcessing)</computeroutput> to true while running and false when complete</para>
</listitem><listitem>
<para>Processes one task per second to prevent overloading</para>
</listitem><listitem>
<para>Handles a wide range of database operations including:<itemizedlist>
<listitem>
<para>Key-value operations (get, set, delete)</para>
</listitem><listitem>
<para>Hash table operations (hget, hset, hgetall, etc.)</para>
</listitem><listitem>
<para>List operations (listadd, listrng, listset, etc.)</para>
</listitem></itemizedlist>
</para>
</listitem><listitem>
<para>Automatically started by <computeroutput>dragonfly_db_fnc_addTask</computeroutput> when new tasks are added</para>
</listitem><listitem>
<para>Each task execution is logged for debugging purposes</para>
</listitem><listitem>
<para>Should typically be spawned rather than called to avoid blocking</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md130">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_addTask</computeroutput>: Adds tasks to the queue for processing</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_handler</computeroutput>: Handles data returned from database operations</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Manages callback responses from the database</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue_1autotoc_md131">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">Add Task</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">Handler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">Init</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">Print Addon Name</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">Process Queue</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">Scheduler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">Test</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,130 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set" xml:lang="en-US">
<title>hashSet</title>
<indexterm><primary>hashSet</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md219">
<title>autotoc_md219</title>
<para>title: ArmaDragonflyClient - Hash Set icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md220">
<title>excerpt: Set a field value in the current client&apos;s hash table in DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md221">
<title>dragonfly_db_fnc_hashSet</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md222">
<title>Description</title>
<para>Sets the value of a specified field in the hash table associated with the current client/player. This function automatically determines the appropriate hash ID based on the caller&apos;s identity, making it more convenient than <computeroutput>hashSetId</computeroutput> which requires manually specifying an ID. It allows storing various data types (arrays, strings, numbers, or booleans) in a field of the client-specific hash structure.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md223">
<title>Syntax</title>
<para><literallayout><computeroutput>[_keyField,&#32;_data]&#32;call&#32;dragonfly_db_fnc_hashSet
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md224">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_keyField</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the field in the hash to set </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_data</computeroutput> </para>
</entry><entry>
<para>Array, String, Number, or Boolean </para>
</entry><entry>
<para>The value to store in the hash field </para>
</entry><entry>
<para>[] </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md225">
<title>Return Value</title>
<para>None. The operation runs synchronously to store the data.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md226">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md227">
<title>Store a player&apos;s loadout:</title>
<para><literallayout><computeroutput>[&quot;loadout&quot;,&#32;[getUnitLoadout&#32;player]]&#32;call&#32;dragonfly_db_fnc_hashSet;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md228">
<title>Store player preferences:</title>
<para><literallayout><computeroutput>[&quot;settings&quot;,&#32;[true,&#32;30,&#32;&quot;normal&quot;]]&#32;call&#32;dragonfly_db_fnc_hashSet;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md229">
<title>Store data from a client:</title>
<para><literallayout><computeroutput>[&quot;clientInfo&quot;,&#32;[name&#32;player,&#32;getPlayerUID&#32;player]]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_hashSet&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md230">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Stores a single field-value pair in the current client&apos;s hash table</para>
</listitem><listitem>
<para>Both the field name and data parameters are required and validated</para>
</listitem><listitem>
<para>If the field already exists, its value will be overwritten</para>
</listitem><listitem>
<para>Supports various data types: arrays, strings, numbers, and booleans</para>
</listitem><listitem>
<para>This function automatically determines which hash table to use based on the caller&apos;s identity</para>
</listitem><listitem>
<para>Use <computeroutput>hashSetId</computeroutput> when you need to specify a particular hash table by ID</para>
</listitem><listitem>
<para>Complex data structures should be serialized into arrays</para>
</listitem><listitem>
<para>The operation is executed immediately and synchronously</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md231">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_hashSetId</computeroutput>: Sets a field value in a specific hash table (when you need to specify the ID)</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGet</computeroutput>: Retrieves a field value from the current client&apos;s hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAll</computeroutput>: Retrieves all fields from the current client&apos;s hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashSetBulk</computeroutput>: Sets multiple fields in the current client&apos;s hash table</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_1autotoc_md232">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">Hash Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">Hash Get All</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">Hash Get All ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">Hash Get ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">Hash Set</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">Hash Set Bulk</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">Hash Set ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">Hash Set ID Bulk</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,109 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler" xml:lang="en-US">
<title>scheduler</title>
<indexterm><primary>scheduler</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md136">
<title>autotoc_md136</title>
<para>title: ArmaDragonflyClient - Scheduler icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md137">
<title>excerpt: Scheduled Environment for extension.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md138">
<title>dragonfly_db_fnc_scheduler</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md139">
<title>Description</title>
<para>Manages the callback system for the ArmaDragonflyClient extension. This function receives task IDs from the extension&apos;s asynchronous callbacks, parses them, and registers them in a hashmap for later processing. It acts as the bridge between the extension&apos;s asynchronous operations and the game&apos;s execution environment.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md140">
<title>Syntax</title>
<para><literallayout><computeroutput>[_taskID]&#32;call&#32;dragonfly_db_fnc_scheduler
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md141">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_taskID</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Task identifier returned from extension callback </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md142">
<title>Return Value</title>
<para>None. The function registers the task ID in a hashmap for later processing.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md143">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md144">
<title>Process a callback from the extension:</title>
<para><literallayout><computeroutput>[&quot;1689524160123_get&quot;]&#32;call&#32;dragonfly_db_fnc_scheduler;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md145">
<title>Forward a callback to the server:</title>
<para><literallayout><computeroutput>[&quot;1689524160123_hgetall&quot;]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_scheduler&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md146">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Parses the task ID to extract the timestamp and operation type</para>
</listitem><listitem>
<para>Registers the task in a type-specific hashmap using the mission namespace</para>
</listitem><listitem>
<para>Each operation type (get, hgetall, etc.) has its own hashmap for tracking</para>
</listitem><listitem>
<para>The format of task IDs is typically: <computeroutput>[timestamp]_[operation]</computeroutput></para>
</listitem><listitem>
<para>This function is automatically called by the extension callback mechanism</para>
</listitem><listitem>
<para>Creates hashmaps on demand if they don&apos;t already exist</para>
</listitem><listitem>
<para>Critical for handling asynchronous database operations</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md147">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_fetch</computeroutput>: Assembles data chunks for large datasets</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_handler</computeroutput>: Processes the data retrieved from database operations</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_processQueue</computeroutput>: Executes queued database operations</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler_1autotoc_md148">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">Add Task</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">Handler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">Init</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">Print Addon Name</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">Process Queue</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">Scheduler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">Test</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,122 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove" xml:lang="en-US">
<title>listRemove</title>
<indexterm><primary>listRemove</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md318">
<title>autotoc_md318</title>
<para>title: ArmaDragonflyClient - List Remove icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md319">
<title>excerpt: Remove an element from a list stored at a key in DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md320">
<title>dragonfly_db_fnc_listRemove</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md321">
<title>Description</title>
<para>Removes a specific element from a list stored at a specified key in the DragonflyClient database. This function allows for precise control over list content by targeting individual elements by their index, without affecting other elements in the list. This is particularly useful for removing outdated or no longer needed entries.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md322">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_index]&#32;call&#32;dragonfly_db_fnc_listRemove
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md323">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para>_key </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>The key identifying the list from which to remove an element </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para>_index </para>
</entry><entry>
<para>Number </para>
</entry><entry>
<para>The zero-based index of the element to remove from the list </para>
</entry><entry>
<para>-1 </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md324">
<title>Return Value</title>
<para>None. The operation runs synchronously to remove the element immediately.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md325">
<title>Examples</title>
<para><emphasis role="bold">Remove the first element from an event log:</emphasis> <literallayout><computeroutput>[&quot;eventLog&quot;,&#32;0]&#32;call&#32;dragonfly_db_fnc_listRemove;
</computeroutput></literallayout></para>
<para><emphasis role="bold">Remove a specific player record:</emphasis> <literallayout><computeroutput>[&quot;playerRecords&quot;,&#32;5]&#32;call&#32;dragonfly_db_fnc_listRemove;
</computeroutput></literallayout></para>
<para><emphasis role="bold">Remove an element from a multiplayer environment:</emphasis> <literallayout><computeroutput>[&quot;sharedData&quot;,&#32;2]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_listRemove&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md326">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>This function removes only the element at the specified index. All other elements remain unchanged, though their indices may shift.</para>
</listitem><listitem>
<para>The index is zero-based, meaning the first element is at index 0, the second at index 1, and so on.</para>
</listitem><listitem>
<para>If an invalid index is provided (negative or exceeding the list length), the operation will not remove any elements.</para>
</listitem><listitem>
<para>The <computeroutput>_key</computeroutput> parameter must be a non-empty string, otherwise the function will exit without performing any action.</para>
</listitem><listitem>
<para>After removing an element, all subsequent elements shift down by one index to maintain a contiguous list.</para>
</listitem><listitem>
<para>The removal operation is permanent and cannot be undone except by re-adding the element.</para>
</listitem><listitem>
<para>All list operations are logged for debugging purposes.</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md327">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_listAdd</computeroutput>: Adds an element to a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listGet</computeroutput>: Retrieves a specific element from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listLoad</computeroutput>: Retrieves a range of elements from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listSet</computeroutput>: Replaces a specific element in a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove_1autotoc_md328">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add">List Add</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get">List Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load">List Load</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove">List Remove</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set">List Set</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,152 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id" xml:lang="en-US">
<title>hashGetAllId</title>
<indexterm><primary>hashGetAllId</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md191">
<title>autotoc_md191</title>
<para>title: ArmaDragonflyClient - Hash Get All ID icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md192">
<title>excerpt: Get all fields and values from the hash stored at key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md193">
<title>dragonfly_db_fnc_hashGetAllId</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md194">
<title>Description</title>
<para>Retrieves all fields and values from a specific hash table identified by its key. This function returns the complete hash table data for a specific ID through a callback function, allowing access to all stored key-value pairs associated with that ID. It&apos;s particularly useful for retrieving player-specific or entity-specific hash data.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md195">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_function,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_hashGetAllId
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md196">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Identifier of the hash table to retrieve </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the function to receive the retrieved data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry><entry>
<para>false </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>(Optional) NetID of the player to receive the data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md197">
<title>Return Value</title>
<para>None. The retrieved data is passed to the specified callback function asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md198">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md199">
<title>Retrieve a player&apos;s complete hash data:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;&quot;dragonfly_db_fnc_test&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetAllId;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md200">
<title>Retrieve vehicle data with synchronous callback:</title>
<para><literallayout><computeroutput>[&quot;vehicle_123&quot;,&#32;&quot;dragonfly_db_fnc_processVehicleData&quot;,&#32;true]&#32;call&#32;dragonfly_db_fnc_hashGetAllId;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md201">
<title>Retrieve data and send it to a specific client:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;&quot;dragonfly_db_fnc_test&quot;,&#32;false,&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_hashGetAllId&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md202">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Returns the complete hash table with all fields and values as a nested array</para>
</listitem><listitem>
<para>Both the key and callback function parameters are required and validated</para>
</listitem><listitem>
<para>The data is retrieved asynchronously through the extension&apos;s callback system</para>
</listitem><listitem>
<para>When a netId is provided, the data is sent to that specific client</para>
</listitem><listitem>
<para>The <computeroutput>_call</computeroutput> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</para>
</listitem><listitem>
<para>This function retrieves from a specific hash table identified by <computeroutput>_key</computeroutput> - use <computeroutput>hashGetAll</computeroutput> for the global hash table</para>
</listitem><listitem>
<para>Player UIDs are commonly used as keys to store player-specific data</para>
</listitem><listitem>
<para>For large hash tables, retrieving all data may impact performance</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md203">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAll</computeroutput>: Retrieves all fields from the global hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetId</computeroutput>: Retrieves a specific field value from a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGet</computeroutput>: Retrieves a specific field value from the global hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashSetId</computeroutput>: Sets a field value in a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id_1autotoc_md204">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">Hash Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">Hash Get All</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">Hash Get All ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">Hash Get ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">Hash Set</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">Hash Set Bulk</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">Hash Set ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">Hash Set ID Bulk</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,162 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id" xml:lang="en-US">
<title>hashGetId</title>
<indexterm><primary>hashGetId</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md205">
<title>autotoc_md205</title>
<para>title: ArmaDragonflyClient - Hash Get ID icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md206">
<title>excerpt: Get the value associated with field in hash stored at key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md207">
<title>dragonfly_db_fnc_hashGetId</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md208">
<title>Description</title>
<para>Retrieves the value of a specific field from a hash table identified by its key. This function allows targeted access to individual fields within a specific hash table, making it ideal for accessing particular attributes of player or entity data. The retrieved data is returned through a callback function.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md209">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_keyField,&#32;_function,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_hashGetId
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md210">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Identifier of the hash table </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_keyField</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the field in the hash to retrieve </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the function to receive the retrieved data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry><entry>
<para>false </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>(Optional) NetID of the player to receive the data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md211">
<title>Return Value</title>
<para>None. The retrieved data is passed to the specified callback function asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md212">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md213">
<title>Retrieve a player&apos;s loadout field:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;&quot;loadout&quot;,&#32;&quot;dragonfly_db_fnc_test&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetId;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md214">
<title>Retrieve a specific vehicle property with synchronous callback:</title>
<para><literallayout><computeroutput>[&quot;vehicle_123&quot;,&#32;&quot;fuel&quot;,&#32;&quot;dragonfly_db_fnc_processFuelData&quot;,&#32;true]&#32;call&#32;dragonfly_db_fnc_hashGetId;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md215">
<title>Retrieve data and send it to a specific client:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;&quot;stats&quot;,&#32;&quot;dragonfly_db_fnc_test&quot;,&#32;false,&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_hashGetId&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md216">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Retrieves a single field value from a specific hash table</para>
</listitem><listitem>
<para>All three primary parameters (key, keyField, and function) are required and validated</para>
</listitem><listitem>
<para>The data is retrieved asynchronously through the extension&apos;s callback system</para>
</listitem><listitem>
<para>When a netId is provided, the data is sent to that specific client</para>
</listitem><listitem>
<para>The <computeroutput>_call</computeroutput> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</para>
</listitem><listitem>
<para>This function targets both a specific hash table (<computeroutput>_key</computeroutput>) and a specific field (<computeroutput>_keyField</computeroutput>)</para>
</listitem><listitem>
<para>More efficient than retrieving all hash fields when only one is needed</para>
</listitem><listitem>
<para>Player UIDs are commonly used as keys to store player-specific data</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md217">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_hashGet</computeroutput>: Retrieves a field value from the global hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAllId</computeroutput>: Retrieves all fields from a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAll</computeroutput>: Retrieves all fields from the global hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashSetId</computeroutput>: Sets a field value in a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id_1autotoc_md218">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">Hash Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">Hash Get All</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">Hash Get All ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">Hash Get ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">Hash Set</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">Hash Set Bulk</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">Hash Set ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">Hash Set ID Bulk</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,132 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set" xml:lang="en-US">
<title>listSet</title>
<indexterm><primary>listSet</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md329">
<title>autotoc_md329</title>
<para>title: ArmaDragonflyClient - List Set icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md330">
<title>excerpt: Set an element in a list stored at a key in DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md331">
<title>dragonfly_db_fnc_listSet</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md332">
<title>Description</title>
<para>Updates or sets the value of a specific element at a given index in a list stored at a specified key in the DragonflyClient database. This function allows for precise modification of list contents by targeting individual elements without affecting other elements in the list. It is particularly useful for updating record information, modifying configuration data, or correcting entries.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md333">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_index,&#32;_data]&#32;call&#32;dragonfly_db_fnc_listSet
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md334">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para>_key </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>The key identifying the list in which to set an element </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para>_index </para>
</entry><entry>
<para>Number </para>
</entry><entry>
<para>The zero-based index of the element to set in the list </para>
</entry><entry>
<para>-1 </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para>_data </para>
</entry><entry>
<para>Array/String/Number/Boolean </para>
</entry><entry>
<para>The value to set at the specified index </para>
</entry><entry>
<para>[] </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md335">
<title>Return Value</title>
<para>None. The operation runs synchronously to update the element immediately.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md336">
<title>Examples</title>
<para><emphasis role="bold">Update an event log entry:</emphasis> <literallayout><computeroutput>[&quot;eventLog&quot;,&#32;0,&#32;[&quot;Updated&#32;event&#32;information&quot;]]&#32;call&#32;dragonfly_db_fnc_listSet;
</computeroutput></literallayout></para>
<para><emphasis role="bold">Modify player statistics:</emphasis> <literallayout><computeroutput>[&quot;playerStats&quot;,&#32;3,&#32;[name&#32;player,&#32;score&#32;player,&#32;alive&#32;player]]&#32;call&#32;dragonfly_db_fnc_listSet;
</computeroutput></literallayout></para>
<para><emphasis role="bold">Update configuration in multiplayer:</emphasis> <literallayout><computeroutput>[&quot;missionConfig&quot;,&#32;1,&#32;[&quot;difficulty&quot;,&#32;&quot;veteran&quot;]]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_listSet&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md337">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>This function updates only the element at the specified index. All other elements remain unchanged.</para>
</listitem><listitem>
<para>The index is zero-based, meaning the first element is at index 0, the second at index 1, and so on.</para>
</listitem><listitem>
<para>If the specified index does not exist in the list, the operation may fail or have no effect.</para>
</listitem><listitem>
<para>Both the <computeroutput>_key</computeroutput> parameter and <computeroutput>_data</computeroutput> parameter must be valid (non-empty string for key, non-nil for data), otherwise the function will exit without performing any action.</para>
</listitem><listitem>
<para>The function supports various data types, including arrays, strings, numbers, and booleans.</para>
</listitem><listitem>
<para>The update operation is permanent and will overwrite any previous value at the specified index.</para>
</listitem><listitem>
<para>All list operations are logged for debugging purposes.</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md338">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_listAdd</computeroutput>: Adds an element to a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listGet</computeroutput>: Retrieves a specific element from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listLoad</computeroutput>: Retrieves a range of elements from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listRemove</computeroutput>: Removes a specific element from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set_1autotoc_md339">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add">List Add</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get">List Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load">List Load</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove">List Remove</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set">List Set</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,62 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save" xml:lang="en-US">
<title>save</title>
<indexterm><primary>save</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md40">
<title>autotoc_md40</title>
<para>title: ArmaDragonflyClient - Save DB icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md41">
<title>excerpt: Save DB to disc.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md42">
<title>dragonfly_db_fnc_save</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md43">
<title>Description</title>
<para>Saves the entire database to disk storage. This function persists all data (key-value pairs, hash tables, and lists) to a file, allowing it to be retrieved later even after server restart.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md44">
<title>Syntax</title>
<para><literallayout><computeroutput>[]&#32;call&#32;dragonfly_db_fnc_save
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md45">
<title>Parameters</title>
<para>None. The function saves the database without any parameters.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md46">
<title>Return Value</title>
<para>None. The operation runs synchronously and saves the database immediately.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md47">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md48">
<title>Save the database without creating a backup:</title>
<para><literallayout><computeroutput>[]&#32;call&#32;dragonfly_db_fnc_save;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md49">
<title>Call the save function remotely from a client:</title>
<para><literallayout><computeroutput>[]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_save&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md50">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>This function should be called periodically to ensure data persistence</para>
</listitem><listitem>
<para>Saving is a resource-intensive operation, so it shouldn&apos;t be called too frequently</para>
</listitem><listitem>
<para>Consider saving before mission end or during low-activity periods</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md51">
<title>Related Functions</title>
<para>None.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2save_1autotoc_md52">
<title>Links</title>
<para>None. </para>
</section>
</section>
</section>

View File

@ -0,0 +1,124 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get" xml:lang="en-US">
<title>get</title>
<indexterm><primary>get</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md23">
<title>autotoc_md23</title>
<para>title: ArmaDragonflyClient - Get Key icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md24">
<title>excerpt: Get the value of stored key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md25">
<title>dragonfly_db_fnc_get</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md26">
<title>Description</title>
<para>Retrieves the value of a stored key from the database. This function performs an asynchronous request to the database and passes the retrieved data to the specified callback function.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md27">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_function,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_get
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md28">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the stored key to retrieve from the database </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the function to call when data is retrieved </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>(Optional) NetID of the player to whom the data should be returned </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md29">
<title>Return Value</title>
<para>None. When data is retrieved, it will be passed to the specified function. The operation runs asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md30">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md31">
<title>Retrieve data in singleplayer or on the server:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;&quot;dragonfly_db_fnc_test&quot;]&#32;call&#32;dragonfly_db_fnc_get;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md32">
<title>Retrieve data on the server and send to a specific client:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;&quot;dragonfly_db_fnc_test&quot;,&#32;false,&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_get&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md33">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>The function exit with an error if the key or function parameters are empty</para>
</listitem><listitem>
<para>Data is processed through the scheduler system, which manages callback responses</para>
</listitem><listitem>
<para>For large data that exceeds buffer limits, it will be automatically chunked and reassembled</para>
</listitem><listitem>
<para>The callback function must be defined to accept the retrieved data</para>
</listitem><listitem>
<para>The <computeroutput>_call</computeroutput> parameter determines whether the callback is executed directly or spawned in a separate thread</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md34">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_set</computeroutput>: Stores a value by key</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_delete</computeroutput>: Removes a value by key</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback response</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2get_1autotoc_md35">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete">Delete Key</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2get">Get Key</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2set">Set Key</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,162 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get" xml:lang="en-US">
<title>listGet</title>
<indexterm><primary>listGet</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md293">
<title>autotoc_md293</title>
<para>title: ArmaDragonflyClient - List Get icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md294">
<title>excerpt: Get element of list stored at key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md295">
<title>dragonfly_db_fnc_listGet</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md296">
<title>Description</title>
<para>Retrieves a specific element from a list stored in the database by its index. This function accesses a single item from a list using its position number and returns the data through a callback function. It&apos;s useful for accessing individual pieces of data from a sequence without retrieving the entire list.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md297">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_index,&#32;_function,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_listGet
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md298">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the list </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_index</computeroutput> </para>
</entry><entry>
<para>Number </para>
</entry><entry>
<para>Index position of the element to retrieve (0-based) </para>
</entry><entry>
<para>-1 </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the function to receive the retrieved data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry><entry>
<para>false </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>(Optional) NetID of the player to receive the data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md299">
<title>Return Value</title>
<para>None. The retrieved data is passed to the specified callback function asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md300">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md301">
<title>Retrieve a specific event log entry:</title>
<para><literallayout><computeroutput>[&quot;events&quot;,&#32;0,&#32;&quot;dragonfly_db_fnc_test&quot;]&#32;call&#32;dragonfly_db_fnc_listGet;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md302">
<title>Retrieve data with synchronous callback:</title>
<para><literallayout><computeroutput>[&quot;messages&quot;,&#32;5,&#32;&quot;dragonfly_db_fnc_processMessage&quot;,&#32;true]&#32;call&#32;dragonfly_db_fnc_listGet;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md303">
<title>Retrieve data and send it to a specific client:</title>
<para><literallayout><computeroutput>[&quot;notifications&quot;,&#32;0,&#32;&quot;dragonfly_db_fnc_displayNotification&quot;,&#32;false,&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_listGet&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md304">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Retrieves a single element from a list by its index position</para>
</listitem><listitem>
<para>The key, index, and function parameters are required and validated</para>
</listitem><listitem>
<para>Index is zero-based (the first element is at index 0)</para>
</listitem><listitem>
<para>If the index is out of bounds or the list doesn&apos;t exist, no data will be returned</para>
</listitem><listitem>
<para>The data is retrieved asynchronously through the extension&apos;s callback system</para>
</listitem><listitem>
<para>When a netId is provided, the data is sent to that specific client</para>
</listitem><listitem>
<para>The <computeroutput>_call</computeroutput> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</para>
</listitem><listitem>
<para>For retrieving multiple elements, use <computeroutput>listLoad</computeroutput> instead</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md305">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_listAdd</computeroutput>: Adds an element to a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listLoad</computeroutput>: Retrieves a range of elements from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listSet</computeroutput>: Replaces a specific element in a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listRemove</computeroutput>: Removes a specific element from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get_1autotoc_md306">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add">List Add</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get">List Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load">List Load</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove">List Remove</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set">List Set</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,150 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler" xml:lang="en-US">
<title>handler</title>
<indexterm><primary>handler</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md81">
<title>autotoc_md81</title>
<para>title: ArmaDragonflyClient - Handler icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md82">
<title>excerpt: Handle data from DB.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md83">
<title>dragonfly_db_fnc_handler</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md84">
<title>Description</title>
<para>Handles data received from the database and routes it to the appropriate function. This function is a critical component of the callback system, receiving data from database operations and directing it to the specified function, either locally or to a remote client.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md85">
<title>Syntax</title>
<para><literallayout><computeroutput>[_uniqueID,&#32;_function,&#32;_call,&#32;_data,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_handler
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md86">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_uniqueID</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Unique identifier for the data chunk </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of function to receive the data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry><entry>
<para>false </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_data</computeroutput> </para>
</entry><entry>
<para>Array, String, Number, or Boolean </para>
</entry><entry>
<para>The data retrieved from the database </para>
</entry><entry>
<para>[] </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>(Optional) NetID of the player to receive the data </para>
</entry><entry>
<para>nil </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md87">
<title>Return Value</title>
<para>None. The data is passed to the specified function for processing.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md88">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md89">
<title>Process data locally:</title>
<para><literallayout><computeroutput>[&quot;0123456789&quot;,&#32;&quot;dragonfly_db_fnc_test&quot;,&#32;false,&#32;[&quot;Hello&#32;World!&quot;]]&#32;call&#32;dragonfly_db_fnc_handler;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md90">
<title>Send data to a specific client:</title>
<para><literallayout><computeroutput>[&quot;0123456789&quot;,&#32;&quot;dragonfly_db_fnc_test&quot;,&#32;false,&#32;[&quot;Hello&#32;World!&quot;],&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_handler&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md91">
<title>Process data with direct call (synchronous):</title>
<para><literallayout><computeroutput>[&quot;0123456789&quot;,&#32;&quot;dragonfly_db_fnc_processInventory&quot;,&#32;true,&#32;[[&quot;weapon1&quot;,&#32;30],&#32;[&quot;item2&quot;,&#32;5]]]&#32;call&#32;dragonfly_db_fnc_handler;
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md92">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>The function validates that both the function name and data are valid before proceeding</para>
</listitem><listitem>
<para>When a netId is provided, the data is sent to that specific client using remoteExec</para>
</listitem><listitem>
<para>The <computeroutput>_call</computeroutput> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</para>
</listitem><listitem>
<para>This function is typically called by the scheduler or other core components rather than directly by user code</para>
</listitem><listitem>
<para>Each handler call is logged, which is useful for debugging data flow</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md93">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes callbacks from the database extension</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_fetch</computeroutput>: Assembles data chunks for large datasets</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_addTask</computeroutput>: Adds tasks to the database operation queue</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2handler_1autotoc_md94">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">Add Task</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">Handler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">Init</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">Print Addon Name</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">Process Queue</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">Scheduler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">Test</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,70 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name" xml:lang="en-US">
<title>printAddonName</title>
<indexterm><primary>printAddonName</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md106">
<title>autotoc_md106</title>
<para>title: ArmaDragonflyClient - Print Addon Name icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md107">
<title>excerpt: Displays the addon name in system chat.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md108">
<title>dragonfly_db_fnc_printAddonName</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md109">
<title>Description</title>
<para>Displays a thank you message with the addon name in the system chat. This is a simple utility function that can be used to acknowledge the use of the framework or to verify that the addon is properly loaded.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md110">
<title>Syntax</title>
<para><literallayout><computeroutput>[]&#32;call&#32;dragonfly_db_fnc_printAddonName
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md111">
<title>Parameters</title>
<para>None. This function does not require any parameters.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md112">
<title>Return Value</title>
<para>None. The function outputs a message to the system chat.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md113">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md114">
<title>Display the addon name message:</title>
<para><literallayout><computeroutput>[]&#32;call&#32;dragonfly_db_fnc_printAddonName;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md115">
<title>Use in a welcome script:</title>
<para><literallayout><computeroutput>if&#32;(isServer)&#32;then&#32;{
&#32;&#32;&#32;&#32;[]&#32;remoteExec&#32;[&quot;dragonfly_db_fnc_printAddonName&quot;,&#32;0,&#32;true];
};
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md116">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>The function uses the ADDON macro defined in script_component.hpp</para>
</listitem><listitem>
<para>This displays a message directly in the player&apos;s system chat</para>
</listitem><listitem>
<para>Can be useful as a quick verification that the addon is loaded correctly</para>
</listitem><listitem>
<para>Often used during development or for first-time users</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md117">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_init</computeroutput>: Initializes the database system</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name_1autotoc_md118">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">Add Task</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">Handler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">Init</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">Print Addon Name</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">Process Queue</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">Scheduler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">Test</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,140 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch" xml:lang="en-US">
<title>fetch</title>
<indexterm><primary>fetch</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md13">
<title>autotoc_md13</title>
<para>title: ArmaDragonflyClient - Fetch icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md14">
<title>excerpt: Handles data chunks received from the database extension when data is too large to be returned in a single callback.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md15">
<title>dragonfly_db_fnc_fetch</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md16">
<title>Description</title>
<para>Handles data chunks received from the database extension when data is too large to be returned in a single callback. This function collects all chunks of data, reassembles them in the correct order, and then passes the complete data to the handler function.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md17">
<title>Syntax</title>
<para><literallayout><computeroutput>[_uniqueID,&#32;_function,&#32;_index,&#32;_total,&#32;_datachunk,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_fetch
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md18">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_uniqueID</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Unique identifier for this data fetch operation </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the function to call after data is assembled </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_index</computeroutput> </para>
</entry><entry>
<para>Number </para>
</entry><entry>
<para>Current chunk index (0-based) </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_total</computeroutput> </para>
</entry><entry>
<para>Number </para>
</entry><entry>
<para>Total number of chunks expected </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_datachunk</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>The chunk of data being received </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>(Optional) NetID of the player to whom the data belongs </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md19">
<title>Return Value</title>
<para>None. When all chunks are received, the function will:<orderedlist>
<listitem>
<para>Assemble the complete data string</para>
</listitem><listitem>
<para>Parse it as a simple array</para>
</listitem><listitem>
<para>Call the specified handler function with the parsed data</para>
</listitem></orderedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md20">
<title>Examples</title>
<para>This function is typically not called directly but is triggered by the extension&apos;s callback mechanism when large datasets are retrieved.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md21">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>The function stores received chunks in the global array <computeroutput>dragonfly_db_fetch_array</computeroutput></para>
</listitem><listitem>
<para>Chunks are sorted by their index to ensure correct assembly regardless of arrival order</para>
</listitem><listitem>
<para>After successful processing, the chunks for this uniqueID are removed from the array</para>
</listitem><listitem>
<para>This function is essential for handling large datasets that exceed the callback buffer limit</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch_1autotoc_md22">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_handler</computeroutput>: Receives the assembled data and routes it to the appropriate function</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Manages the callback queue and triggers data fetching </para>
</listitem></itemizedlist>
</para>
</section>
</section>
</section>

View File

@ -0,0 +1,140 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id" xml:lang="en-US">
<title>hashSetId</title>
<indexterm><primary>hashSetId</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md247">
<title>autotoc_md247</title>
<para>title: ArmaDragonflyClient - Hash Set ID icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md248">
<title>excerpt: Set the specified field to the respective value in the hash stored at key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md249">
<title>dragonfly_db_fnc_hashSetId</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md250">
<title>Description</title>
<para>Sets the value of a specified field in a specific hash table identified by its key. This function allows storing various data types (arrays, strings, numbers, or booleans) in a targeted hash table, making it ideal for player-specific or entity-specific data storage. It provides a way to organize related data under a common identifier.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md251">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_keyField,&#32;_data]&#32;call&#32;dragonfly_db_fnc_hashSetId
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md252">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Identifier of the hash table </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_keyField</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the field in the hash to set </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_data</computeroutput> </para>
</entry><entry>
<para>Array, String, Number, or Boolean </para>
</entry><entry>
<para>The value to store in the hash field </para>
</entry><entry>
<para>[] </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md253">
<title>Return Value</title>
<para>None. The operation runs synchronously to store the data.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md254">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md255">
<title>Store a player&apos;s loadout under their UID:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;&quot;loadout&quot;,&#32;[getUnitLoadout&#32;player]]&#32;call&#32;dragonfly_db_fnc_hashSetId;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md256">
<title>Store vehicle data:</title>
<para><literallayout><computeroutput>[&quot;vehicle_123&quot;,&#32;&quot;status&quot;,&#32;[true,&#32;100,&#32;75,&#32;&quot;active&quot;]]&#32;call&#32;dragonfly_db_fnc_hashSetId;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md257">
<title>Store player data from a client:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;&quot;stats&quot;,&#32;[rank&#32;player,&#32;score&#32;player,&#32;name&#32;player]]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_hashSetId&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md258">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Stores a single field-value pair in a specific hash table identified by <computeroutput>_key</computeroutput></para>
</listitem><listitem>
<para>All three parameters (key, keyField, and data) are required and validated</para>
</listitem><listitem>
<para>If the hash table doesn&apos;t exist, it will be created automatically</para>
</listitem><listitem>
<para>If the field already exists in the hash table, its value will be overwritten</para>
</listitem><listitem>
<para>Supports various data types: arrays, strings, numbers, and booleans</para>
</listitem><listitem>
<para>Player UIDs are commonly used as keys to store player-specific data</para>
</listitem><listitem>
<para>Complex data structures should be serialized into arrays</para>
</listitem><listitem>
<para>The operation is executed immediately and synchronously</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md259">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_hashSet</computeroutput>: Sets a field value in the global hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetId</computeroutput>: Retrieves a field value from a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAllId</computeroutput>: Retrieves all fields from a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashSetIdBulk</computeroutput>: Sets multiple field-value pairs in multiple hash tables</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_1autotoc_md260">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">Hash Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">Hash Get All</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">Hash Get All ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">Hash Get ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">Hash Set</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">Hash Set Bulk</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">Hash Set ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">Hash Set ID Bulk</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,112 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test" xml:lang="en-US">
<title>test</title>
<indexterm><primary>test</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md149">
<title>autotoc_md149</title>
<para>title: ArmaDragonflyClient - Test icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md150">
<title>excerpt: Test Function.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md151">
<title>dragonfly_db_fnc_test</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md152">
<title>Description</title>
<para>A simple test function for verifying database operations. This function displays the received data in a hint message and logs it to the RPT file. It&apos;s primarily used for testing database retrieval operations and callback functionality.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md153">
<title>Syntax</title>
<para><literallayout><computeroutput>[_value]&#32;spawn&#32;dragonfly_db_fnc_test
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md154">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_value</computeroutput> </para>
</entry><entry>
<para>Array, String, Number, or Boolean </para>
</entry><entry>
<para>The value to display and log </para>
</entry><entry>
<para>[] </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md155">
<title>Return Value</title>
<para>The same value that was passed to the function. Also sets the global variable <computeroutput>dragonfly_db_test</computeroutput> to this value.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md156">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md157">
<title>Test with a simple string:</title>
<para><literallayout><computeroutput>[&quot;Hello&#32;World!&quot;]&#32;spawn&#32;dragonfly_db_fnc_test;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md158">
<title>Test database retrieval by specifying this as callback function:</title>
<para><literallayout><computeroutput>[&quot;playerStats&quot;,&#32;&quot;dragonfly_db_fnc_test&quot;]&#32;call&#32;dragonfly_db_fnc_get;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md159">
<title>Test from client to server:</title>
<para><literallayout><computeroutput>[&quot;Database&#32;is&#32;working!&quot;]&#32;remoteExec&#32;[&quot;dragonfly_db_fnc_test&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md160">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Displays the received value using <computeroutput>hint</computeroutput></para>
</listitem><listitem>
<para>Logs the same value to the RPT file</para>
</listitem><listitem>
<para>Stores the value in the global variable <computeroutput>dragonfly_db_test</computeroutput> for later inspection</para>
</listitem><listitem>
<para>Commonly used as a callback function for database operations</para>
</listitem><listitem>
<para>Useful for debugging and verifying data flow</para>
</listitem><listitem>
<para>Can be called directly or specified as a callback in other functions</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md161">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_get</computeroutput>: Retrieves values from the database</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_handler</computeroutput>: Routes data to callback functions</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Manages the callback system</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2test_1autotoc_md162">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">Add Task</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">Handler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">Init</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">Print Addon Name</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">Process Queue</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">Scheduler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">Test</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,120 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set" xml:lang="en-US">
<title>set</title>
<indexterm><primary>set</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md53">
<title>autotoc_md53</title>
<para>title: ArmaDragonflyClient - Set Key icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md54">
<title>excerpt: Set the value of stored key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md55">
<title>dragonfly_db_fnc_set</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md56">
<title>Description</title>
<para>Stores a value in the database with the specified key. This function allows saving various data types (arrays, strings, numbers, or booleans) that can be retrieved later using the key.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md57">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_data]&#32;call&#32;dragonfly_db_fnc_set
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md58">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the key to store the data under </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_data</computeroutput> </para>
</entry><entry>
<para>Array, String, Number, or Boolean </para>
</entry><entry>
<para>The value to store in the database </para>
</entry><entry>
<para>[] </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md59">
<title>Return Value</title>
<para>None. The operation runs asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md60">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md61">
<title>Store a simple array:</title>
<para><literallayout><computeroutput>[&quot;playerInventory&quot;,&#32;[&quot;item1&quot;,&#32;&quot;item2&quot;,&#32;&quot;item3&quot;]]&#32;call&#32;dragonfly_db_fnc_set;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md62">
<title>Store player data under their UID:</title>
<para><literallayout><computeroutput>[getPlayerUID&#32;player,&#32;[name&#32;player,&#32;getPos&#32;player,&#32;getAllGear&#32;player]]&#32;call&#32;dragonfly_db_fnc_set;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md63">
<title>Call the set function remotely from a client:</title>
<para><literallayout><computeroutput>[&quot;serverSetting&quot;,&#32;[true,&#32;30,&#32;&quot;normal&quot;]]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_set&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md64">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>The function validates both the key and data before attempting to store</para>
</listitem><listitem>
<para>If the key already exists, its value will be overwritten</para>
</listitem><listitem>
<para>Complex data structures should be serialized into arrays</para>
</listitem><listitem>
<para>There are no size limits for data, but extremely large values might impact performance</para>
</listitem><listitem>
<para>For structured data, consider using hash tables instead of key-value pairs</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md65">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_get</computeroutput>: Retrieves a value by key</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_delete</computeroutput>: Removes a value by key</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback response</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2set_1autotoc_md66">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete">Delete Key</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2get">Get Key</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2set">Set Key</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,142 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load" xml:lang="en-US">
<title>listLoad</title>
<indexterm><primary>listLoad</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md307">
<title>autotoc_md307</title>
<para>title: ArmaDragonflyClient - List Load icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md308">
<title>excerpt: Get all elements of a list stored at a key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md309">
<title>dragonfly_db_fnc_listLoad</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md310">
<title>Description</title>
<para>Retrieves all elements of a list stored at a specified key from the DragonflyClient database. This function is useful when you need to access the complete list data rather than individual elements, allowing operations on the entire dataset. The retrieved data is passed to a callback function for processing.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md311">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_function,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_listLoad
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md312">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para>_key </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>The key identifying the list to be retrieved </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para>_function </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>The name of the function that will receive the retrieved data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para>_call </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function in an unscheduled environment </para>
</entry><entry>
<para>false </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para>_netId </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>The NetID of the target to return data from the function (multiplayer only) </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md313">
<title>Return Value</title>
<para>No value is returned directly. The retrieved list data is passed to the specified callback function asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md314">
<title>Examples</title>
<para><emphasis role="bold">Retrieve all event logs:</emphasis> <literallayout><computeroutput>[&quot;events&quot;,&#32;&quot;myProject_fnc_processEventLogs&quot;]&#32;call&#32;dragonfly_db_fnc_listLoad;
</computeroutput></literallayout></para>
<para><emphasis role="bold">Retrieve a player list with synchronous callback:</emphasis> <literallayout><computeroutput>[&quot;playerList&quot;,&#32;&quot;myProject_fnc_processPlayerList&quot;,&#32;true]&#32;call&#32;dragonfly_db_fnc_listLoad;
</computeroutput></literallayout></para>
<para><emphasis role="bold">Send mission data to a specific client:</emphasis> <literallayout><computeroutput>[&quot;missionData&quot;,&#32;&quot;myProject_fnc_processMissionData&quot;,&#32;false,&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_listLoad&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md315">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>This function retrieves the entire list stored at the specified key, making it useful when you need to process multiple elements together.</para>
</listitem><listitem>
<para>Both the <computeroutput>_key</computeroutput> and <computeroutput>_function</computeroutput> parameters are required. The function will exit without action if either is empty.</para>
</listitem><listitem>
<para>The retrieved data is processed asynchronously through the scheduler system and passed to the specified callback function.</para>
</listitem><listitem>
<para>For multiplayer scenarios, you can specify a target client using the <computeroutput>_netId</computeroutput> parameter to send the retrieved data to that specific client.</para>
</listitem><listitem>
<para>The <computeroutput>_call</computeroutput> parameter determines whether the callback function is executed in an unscheduled environment (true) or scheduled environment (false).</para>
</listitem><listitem>
<para>This function uses the underlying &quot;listrng&quot; extension with a range from 0 to -1, which retrieves all elements in the list.</para>
</listitem><listitem>
<para>All list operations are logged for debugging purposes.</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md316">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_listAdd</computeroutput>: Adds an element to a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listGet</computeroutput>: Retrieves a specific element from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listSet</computeroutput>: Replaces a specific element in a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listRemove</computeroutput>: Removes a specific element from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load_1autotoc_md317">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add">List Add</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get">List Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load">List Load</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove">List Remove</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set">List Set</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,152 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get" xml:lang="en-US">
<title>hashGet</title>
<indexterm><primary>hashGet</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md163">
<title>autotoc_md163</title>
<para>title: ArmaDragonflyClient - Hash Get icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md164">
<title>excerpt: Get a field value from the current client&apos;s hash table in DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md165">
<title>dragonfly_db_fnc_hashGet</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md166">
<title>Description</title>
<para>Retrieves the value associated with a specific field in the hash table of the current client/player. This function automatically determines the appropriate hash ID based on the caller&apos;s identity, making it more convenient than <computeroutput>hashGetId</computeroutput> which requires manually specifying an ID. It accesses hash data asynchronously and returns the result through a callback function.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md167">
<title>Syntax</title>
<para><literallayout><computeroutput>[_keyField,&#32;_function,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_hashGet
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md168">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_keyField</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the field in the hash to retrieve </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the function to receive the retrieved data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry><entry>
<para>false </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>(Optional) NetID of the player to receive the data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md169">
<title>Return Value</title>
<para>None. The retrieved data is passed to the specified callback function asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md170">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md171">
<title>Retrieve a player&apos;s loadout:</title>
<para><literallayout><computeroutput>[&quot;loadout&quot;,&#32;&quot;dragonfly_db_fnc_test&quot;]&#32;call&#32;dragonfly_db_fnc_hashGet;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md172">
<title>Retrieve data with synchronous callback:</title>
<para><literallayout><computeroutput>[&quot;playerScore&quot;,&#32;&quot;dragonfly_db_fnc_processScore&quot;,&#32;true]&#32;call&#32;dragonfly_db_fnc_hashGet;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md173">
<title>Retrieve data and send it to a specific client:</title>
<para><literallayout><computeroutput>[&quot;loadout&quot;,&#32;&quot;dragonfly_db_fnc_test&quot;,&#32;false,&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_hashGet&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md174">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Retrieves a value from the current client&apos;s hash table</para>
</listitem><listitem>
<para>The data is retrieved asynchronously through the extension&apos;s callback system</para>
</listitem><listitem>
<para>Both the field name and callback function name must be provided</para>
</listitem><listitem>
<para>Input validation ensures both required parameters are non-empty</para>
</listitem><listitem>
<para>When a netId is provided, the data is sent to that specific client</para>
</listitem><listitem>
<para>The <computeroutput>_call</computeroutput> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</para>
</listitem><listitem>
<para>This function automatically determines which hash table to use based on the caller&apos;s identity</para>
</listitem><listitem>
<para>Use <computeroutput>hashGetId</computeroutput> when you need to specify a particular hash table by ID</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md175">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetId</computeroutput>: Retrieves a field value from a specific hash table (when you need to specify the ID)</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAll</computeroutput>: Retrieves all fields from the current client&apos;s hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAllId</computeroutput>: Retrieves all fields from a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashSet</computeroutput>: Sets a field value in the current client&apos;s hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_1autotoc_md176">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">Hash Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">Hash Get All</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">Hash Get All ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">Hash Get ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">Hash Set</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">Hash Set Bulk</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">Hash Set ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">Hash Set ID Bulk</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,142 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all" xml:lang="en-US">
<title>hashGetAll</title>
<indexterm><primary>hashGetAll</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md177">
<title>autotoc_md177</title>
<para>title: ArmaDragonflyClient - Hash Get All icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md178">
<title>excerpt: Get all fields from the current client&apos;s hash table in DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md179">
<title>dragonfly_db_fnc_hashGetAll</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md180">
<title>Description</title>
<para>Retrieves all fields and values from the hash table associated with the current client/player. This function automatically determines the appropriate hash ID based on the caller&apos;s identity, making it more convenient than <computeroutput>hashGetAllId</computeroutput> which requires manually specifying an ID. It returns the entire hash table data through a callback function, allowing access to all stored key-value pairs at once.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md181">
<title>Syntax</title>
<para><literallayout><computeroutput>[_function,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_hashGetAll
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md182">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the function to receive the retrieved data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry><entry>
<para>false </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>(Optional) NetID of the player to receive the data </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md183">
<title>Return Value</title>
<para>None. The retrieved data is passed to the specified callback function asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md184">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md185">
<title>Retrieve all client hash data:</title>
<para><literallayout><computeroutput>[&quot;dragonfly_db_fnc_test&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetAll;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md186">
<title>Retrieve data with synchronous callback:</title>
<para><literallayout><computeroutput>[&quot;dragonfly_db_fnc_processAllData&quot;,&#32;true]&#32;call&#32;dragonfly_db_fnc_hashGetAll;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md187">
<title>Retrieve data and send it to a specific client:</title>
<para><literallayout><computeroutput>[&quot;dragonfly_db_fnc_test&quot;,&#32;false,&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_hashGetAll&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md188">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Returns the complete hash table for the current client with all fields and values as a nested array</para>
</listitem><listitem>
<para>The data is retrieved asynchronously through the extension&apos;s callback system</para>
</listitem><listitem>
<para>The callback function name must be provided and is validated</para>
</listitem><listitem>
<para>When a netId is provided, the data is sent to that specific client</para>
</listitem><listitem>
<para>The <computeroutput>_call</computeroutput> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</para>
</listitem><listitem>
<para>This function automatically determines which hash table to use based on the caller&apos;s identity</para>
</listitem><listitem>
<para>Use <computeroutput>hashGetAllId</computeroutput> when you need to specify a particular hash table by ID</para>
</listitem><listitem>
<para>For large hash tables, retrieving all data may impact performance</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md189">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_hashGet</computeroutput>: Retrieves a specific field value from the current client&apos;s hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetId</computeroutput>: Retrieves a specific field value from a specific hash table (when you need to specify the ID)</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAllId</computeroutput>: Retrieves all fields from a specific hash table (when you need to specify the ID)</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashSet</computeroutput>: Sets a field value in the current client&apos;s hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_1autotoc_md190">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">Hash Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">Hash Get All</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">Hash Get All ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">Hash Get ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">Hash Set</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">Hash Set Bulk</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">Hash Set ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">Hash Set ID Bulk</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,130 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add" xml:lang="en-US">
<title>listAdd</title>
<indexterm><primary>listAdd</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md279">
<title>autotoc_md279</title>
<para>title: ArmaDragonflyClient - List Add icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md280">
<title>excerpt: Add element to list stored at key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md281">
<title>dragonfly_db_fnc_listAdd</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md282">
<title>Description</title>
<para>Adds an element to a list stored in the database under the specified key. This function appends values to an existing list or creates a new list if it doesn&apos;t exist. It&apos;s particularly useful for logging, event tracking, or maintaining collections of data that grow over time.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md283">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key,&#32;_data]&#32;call&#32;dragonfly_db_fnc_listAdd
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md284">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the list to add the element to </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_data</computeroutput> </para>
</entry><entry>
<para>Array, String, Number, or Boolean </para>
</entry><entry>
<para>The value to insert into the list </para>
</entry><entry>
<para>[] </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md285">
<title>Return Value</title>
<para>None. The operation runs synchronously to add the element to the list.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md286">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md287">
<title>Add an event log entry:</title>
<para><literallayout><computeroutput>[&quot;events&quot;,&#32;[&quot;Server&#32;state&#32;saved&#32;to&#32;DB&#32;&quot;&#32;+&#32;systemTimeUTC]]&#32;call&#32;dragonfly_db_fnc_listAdd;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md288">
<title>Add a player message:</title>
<para><literallayout><computeroutput>[&quot;messages&quot;,&#32;[name&#32;player&#32;+&#32;&quot;:&#32;&quot;&#32;+&#32;_messageText]]&#32;call&#32;dragonfly_db_fnc_listAdd;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md289">
<title>Add data from a client:</title>
<para><literallayout><computeroutput>[&quot;playerActions&quot;,&#32;[getPlayerUID&#32;player,&#32;name&#32;player,&#32;&quot;logged&#32;in&quot;]]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_listAdd&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md290">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Elements are added to the end of the list in the order they are inserted</para>
</listitem><listitem>
<para>If the list doesn&apos;t exist, it will be created automatically</para>
</listitem><listitem>
<para>Both the key and data parameters are required and validated</para>
</listitem><listitem>
<para>Lists can store various data types (arrays, strings, numbers, or booleans)</para>
</listitem><listitem>
<para>Useful for maintaining a history of events, logs, or sequential data</para>
</listitem><listitem>
<para>The operation is executed immediately and synchronously</para>
</listitem><listitem>
<para>New elements are always added to the end of the list</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md291">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_listGet</computeroutput>: Retrieves a specific element from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listLoad</computeroutput>: Retrieves a range of elements from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listSet</computeroutput>: Replaces a specific element in a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_listRemove</computeroutput>: Removes a specific element from a list</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback from the database extension</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add_1autotoc_md292">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add">List Add</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get">List Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load">List Load</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove">List Remove</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set">List Set</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,122 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk" xml:lang="en-US">
<title>hashSetBulk</title>
<indexterm><primary>hashSetBulk</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md233">
<title>autotoc_md233</title>
<para>title: ArmaDragonflyClient - Hash Set Bulk icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md234">
<title>excerpt: Set multiple fields in the current client&apos;s hash table in DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md235">
<title>dragonfly_db_fnc_hashSetBulk</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md236">
<title>Description</title>
<para>Sets multiple field-value pairs in the hash table associated with the current client/player in a single operation. This function automatically determines the appropriate hash ID based on the caller&apos;s identity, making it more convenient than <computeroutput>hashSetIdBulk</computeroutput> which requires manually specifying an ID. It allows efficiently storing multiple related fields at once, reducing the number of separate database calls required.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md237">
<title>Syntax</title>
<para><literallayout><computeroutput>[_data]&#32;call&#32;dragonfly_db_fnc_hashSetBulk
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md238">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_data</computeroutput> </para>
</entry><entry>
<para>Array </para>
</entry><entry>
<para>Array of alternating field names and values to store </para>
</entry><entry>
<para>[] </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md239">
<title>Return Value</title>
<para>None. The operation runs synchronously to store all the data.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md240">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md241">
<title>Store player loadout and position:</title>
<para><literallayout><computeroutput>[[&quot;loadout&quot;,&#32;[getUnitLoadout&#32;player],&#32;&quot;position&quot;,&#32;[getPosASLVisual&#32;player]]]&#32;call&#32;dragonfly_db_fnc_hashSetBulk;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md242">
<title>Store multiple player settings:</title>
<para><literallayout><computeroutput>[[&quot;difficulty&quot;,&#32;[&quot;regular&quot;],&#32;&quot;respawn&quot;,&#32;[true],&#32;&quot;tickets&quot;,&#32;[500]]]&#32;call&#32;dragonfly_db_fnc_hashSetBulk;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md243">
<title>Store player data from a client:</title>
<para><literallayout><computeroutput>[[&quot;name&quot;,&#32;[name&#32;player],&#32;&quot;uid&quot;,&#32;[getPlayerUID&#32;player],&#32;&quot;score&quot;,&#32;[score&#32;player]]]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_hashSetBulk&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md244">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>The data array must be structured as alternating field names and values: <computeroutput>[field1, value1, field2, value2, ...]</computeroutput></para>
</listitem><listitem>
<para>Each field name must be a string</para>
</listitem><listitem>
<para>Values can be arrays, strings, numbers, or booleans</para>
</listitem><listitem>
<para>All field-value pairs are stored in a single database operation</para>
</listitem><listitem>
<para>If any of the fields already exist, their values will be overwritten</para>
</listitem><listitem>
<para>This function automatically determines which hash table to use based on the caller&apos;s identity</para>
</listitem><listitem>
<para>Use <computeroutput>hashSetIdBulk</computeroutput> when you need to specify a particular hash table by ID</para>
</listitem><listitem>
<para>More efficient than multiple individual <computeroutput>hashSet</computeroutput> calls when setting several fields</para>
</listitem><listitem>
<para>The operation is executed immediately and synchronously</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md245">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_hashSet</computeroutput>: Sets a single field value in the current client&apos;s hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashSetIdBulk</computeroutput>: Sets multiple field-value pairs in a specific hash table (when you need to specify the ID)</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAll</computeroutput>: Retrieves all fields from the current client&apos;s hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGet</computeroutput>: Retrieves a specific field value from the current client&apos;s hash table </para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk_1autotoc_md246">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">Hash Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">Hash Get All</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">Hash Get All ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">Hash Get ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">Hash Set</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">Hash Set Bulk</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">Hash Set ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">Hash Set ID Bulk</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,62 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init" xml:lang="en-US">
<title>init</title>
<indexterm><primary>init</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md95">
<title>autotoc_md95</title>
<para>title: ArmaDragonflyClient - Initialization icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md96">
<title>excerpt: Initial Extension settings.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md97">
<title>dragonfly_db_fnc_init</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md98">
<title>Description</title>
<para>Initializes the ArmaDragonflyClient extension and sets up the initial settings. This function loads the extension, checks its version, sets the buffer size, and logs the initialization status. It is automatically called during mission startup.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md99">
<title>Syntax</title>
<para><literallayout><computeroutput>//&#32;This&#32;function&#32;is&#32;automatically&#32;called&#32;during&#32;initialization&#32;and&#32;doesn&apos;t&#32;need&#32;to&#32;be&#32;called&#32;directly
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md100">
<title>Parameters</title>
<para>None. This function does not require any parameters.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md101">
<title>Return Value</title>
<para>None. The function sets up internal variables and logs initialization information.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md102">
<title>Examples</title>
<para>This function is automatically executed during framework initialization and doesn&apos;t need to be called manually.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md103">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Sets the global buffer size to 10240 bytes (10KB)</para>
</listitem><listitem>
<para>Logs the DLL version number for reference</para>
</listitem><listitem>
<para>Confirms successful loading of all functions</para>
</listitem><listitem>
<para>Outputs initialization status to the RPT logs</para>
</listitem><listitem>
<para>This is one of the first functions called when the framework loads</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md104">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_save</computeroutput>: Saves database data to disk</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2init_1autotoc_md105">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">Add Task</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">Handler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">Init</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">Print Addon Name</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">Process Queue</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">Scheduler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">Test</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,180 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task" xml:lang="en-US">
<title>addTask</title>
<indexterm><primary>addTask</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md67">
<title>autotoc_md67</title>
<para>title: ArmaDragonflyClient - Add Task icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md68">
<title>excerpt: Add task to queue.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md69">
<title>dragonfly_db_fnc_addTask</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md70">
<title>Description</title>
<para>Adds a task to the database operation queue. This function is used to schedule database operations that can be processed sequentially, providing a way to manage multiple database requests in an organized manner.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md71">
<title>Syntax</title>
<para><literallayout><computeroutput>[_taskType,&#32;_key,&#32;_keyField,&#32;_index,&#32;_value,&#32;_function,&#32;_call,&#32;_netId]&#32;call&#32;dragonfly_db_fnc_addTask
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md72">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_taskType</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Type of operation to perform (e.g., &quot;hgetall&quot;) </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the stored key </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_keyField</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Field name for hash operations </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_index</computeroutput> </para>
</entry><entry>
<para>Number </para>
</entry><entry>
<para>Index for list operations </para>
</entry><entry>
<para>-1 </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_value</computeroutput> </para>
</entry><entry>
<para>Array, String, Number, or Boolean </para>
</entry><entry>
<para>Value to store (for set operations) </para>
</entry><entry>
<para>[] </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_function</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of function to call with the result </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_call</computeroutput> </para>
</entry><entry>
<para>Boolean </para>
</entry><entry>
<para>Whether to call the function directly (true) or spawn (false) </para>
</entry><entry>
<para>false </para>
</entry></row>
<row class='markdownTableRowEven'>
<entry>
<para><computeroutput>_netId</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>NetID of the target to receive the result </para>
</entry><entry>
<para>&quot;&quot; </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md73">
<title>Return Value</title>
<para>None. The task is added to the queue and processed asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md74">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md75">
<title>Add a hash table retrieval task:</title>
<para><literallayout><computeroutput>[&quot;hgetall&quot;,&#32;&quot;&quot;,&#32;&quot;&quot;,&#32;-1,&#32;[],&#32;&quot;dragonfly_db_fnc_test&quot;]&#32;call&#32;dragonfly_db_fnc_addTask;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md76">
<title>Add a player-specific task that returns data to a specific client:</title>
<para><literallayout><computeroutput>[&quot;hgetallid&quot;,&#32;getPlayerUID&#32;player,&#32;&quot;&quot;,&#32;-1,&#32;[],&#32;&quot;dragonfly_db_fnc_test&quot;,&#32;false,&#32;netId&#32;player]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_addTask&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md77">
<title>Add a list operation task:</title>
<para><literallayout><computeroutput>[&quot;listadd&quot;,&#32;&quot;playerMessages&quot;,&#32;&quot;&quot;,&#32;-1,&#32;[&quot;New&#32;message&#32;content&quot;],&#32;&quot;&quot;]&#32;call&#32;dragonfly_db_fnc_addTask;
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md78">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>Tasks are processed in the order they are added to the queue</para>
</listitem><listitem>
<para>If the queue is not currently being processed, this function will start the processing</para>
</listitem><listitem>
<para>The task type determines which database operation will be performed</para>
</listitem><listitem>
<para>This function is particularly useful for scheduling multiple related operations</para>
</listitem><listitem>
<para>All operations performed through the task queue are logged for debugging</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md79">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_processQueue</computeroutput>: Processes the pending tasks in the queue</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_handler</computeroutput>: Handles the results of completed database operations</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Manages callback responses from the database</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task_1autotoc_md80">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">Add Task</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">Handler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">Init</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">Print Addon Name</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">Process Queue</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">Scheduler</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">Test</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,124 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk" xml:lang="en-US">
<title>hashSetIdBulk</title>
<indexterm><primary>hashSetIdBulk</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md261">
<title>autotoc_md261</title>
<para>title: ArmaDragonflyClient - Hash Set ID Bulk icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md262">
<title>excerpt: Set the specified fields to their respective values in the hash stored at key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md263">
<title>dragonfly_db_fnc_hashSetIdBulk</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md264">
<title>Description</title>
<para>Sets multiple field-value pairs in a specific hash table identified by its key in a single operation. This function allows efficiently storing multiple related fields at once for a specific identifier, reducing the number of separate database calls required. It&apos;s ideal for saving a collection of player-specific or entity-specific data.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md265">
<title>Syntax</title>
<para><literallayout><computeroutput>[_data]&#32;call&#32;dragonfly_db_fnc_hashSetIdBulk
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md266">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="4" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry><entry>
<para>Default </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_data</computeroutput> </para>
</entry><entry>
<para>Array </para>
</entry><entry>
<para>Array with key followed by alternating field names and values </para>
</entry><entry>
<para>[] </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md267">
<title>Return Value</title>
<para>None. The operation runs synchronously to store all the data.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md268">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md269">
<title>Store player loadout and position:</title>
<para><literallayout><computeroutput>[[getPlayerUID&#32;player,&#32;&quot;loadout&quot;,&#32;[getUnitLoadout&#32;player],&#32;&quot;position&quot;,&#32;[getPosASLVisual&#32;player]]]&#32;call&#32;dragonfly_db_fnc_hashSetIdBulk;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md270">
<title>Store multiple vehicle properties:</title>
<para><literallayout><computeroutput>[[&quot;vehicle_123&quot;,&#32;&quot;fuel&quot;,&#32;[0.75],&#32;&quot;damage&quot;,&#32;[0.2],&#32;&quot;crew&quot;,&#32;[[&quot;player1&quot;,&#32;&quot;player2&quot;]]]]&#32;call&#32;dragonfly_db_fnc_hashSetIdBulk;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md271">
<title>Store player data from a client:</title>
<para><literallayout><computeroutput>[[getPlayerUID&#32;player,&#32;&quot;stats&quot;,&#32;[score&#32;player],&#32;&quot;inventory&quot;,&#32;[getAllGear&#32;player]]]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_hashSetIdBulk&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md272">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>The data array must be structured with the key first, followed by alternating field names and values: <computeroutput>[key, field1, value1, field2, value2, ...]</computeroutput></para>
</listitem><listitem>
<para>The key must be a string that identifies the specific hash table</para>
</listitem><listitem>
<para>Each field name must be a string</para>
</listitem><listitem>
<para>Values can be arrays, strings, numbers, or booleans</para>
</listitem><listitem>
<para>All field-value pairs are stored in a single database operation</para>
</listitem><listitem>
<para>If the hash table doesn&apos;t exist, it will be created automatically</para>
</listitem><listitem>
<para>If any of the fields already exist in the hash table, their values will be overwritten</para>
</listitem><listitem>
<para>More efficient than multiple individual <computeroutput>hashSetId</computeroutput> calls when setting several fields</para>
</listitem><listitem>
<para>Player UIDs are commonly used as keys to store player-specific data</para>
</listitem><listitem>
<para>The operation is executed immediately and synchronously</para>
</listitem><listitem>
<para>All operations are logged for debugging purposes</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md273">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_hashSetId</computeroutput>: Sets a single field value in a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashSetBulk</computeroutput>: Sets multiple field-value pairs in the global hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetAllId</computeroutput>: Retrieves all fields from a specific hash table</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_hashGetId</computeroutput>: Retrieves a specific field value from a specific hash table</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk_1autotoc_md274">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">Hash Get</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">Hash Get All</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">Hash Get All ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">Hash Get ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">Hash Set</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">Hash Set Bulk</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">Hash Set ID</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">Hash Set ID Bulk</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,96 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete" xml:lang="en-US">
<title>delete</title>
<indexterm><primary>delete</primary></indexterm>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md0">
<title>autotoc_md0</title>
<para>title: ArmaDragonflyClient - Delete Key icon: mdi:file-text-outline </para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md1">
<title>excerpt: Remove the specified key from DragonflyClient.</title></section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md2">
<title>dragonfly_db_fnc_delete</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md3">
<title>Description</title>
<para>Removes the specified key from the database. This function deletes the key-value pair completely from storage.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md4">
<title>Syntax</title>
<para><literallayout><computeroutput>[_key]&#32;call&#32;dragonfly_db_fnc_delete
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md5">
<title>Parameters</title>
<para><informaltable frame="all">
<tgroup cols="3" align="left" colsep="1" rowsep="1">
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<thead>
<row class='markdownTableHead'>
<entry>
<para>Parameter </para>
</entry><entry>
<para>Type </para>
</entry><entry>
<para>Description </para>
</entry></row>
</thead><tbody>
<row class='markdownTableRowOdd'>
<entry>
<para><computeroutput>_key</computeroutput> </para>
</entry><entry>
<para>String </para>
</entry><entry>
<para>Name of the key to delete from the database </para>
</entry></row>
</tbody>
</tgroup>
</informaltable>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md6">
<title>Return Value</title>
<para>None. The operation runs asynchronously.</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md7">
<title>Examples</title><section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md8">
<title>Delete a key in singleplayer or on the server:</title>
<para><literallayout><computeroutput>[&quot;playerData&quot;]&#32;call&#32;dragonfly_db_fnc_delete;
</computeroutput></literallayout></para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md9">
<title>Delete a key on the server from a client:</title>
<para><literallayout><computeroutput>[&quot;playerData&quot;]&#32;remoteExecCall&#32;[&quot;dragonfly_db_fnc_delete&quot;,&#32;2,&#32;false];
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md10">
<title>Notes</title>
<para><itemizedlist>
<listitem>
<para>This operation is permanent and cannot be undone</para>
</listitem><listitem>
<para>If the key doesn&apos;t exist, the operation will have no effect</para>
</listitem><listitem>
<para>This function only affects specific keys, not hash tables or lists</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md11">
<title>Related Functions</title>
<para><itemizedlist>
<listitem>
<para><computeroutput>dragonfly_db_fnc_get</computeroutput>: Retrieves a value by key</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_set</computeroutput>: Stores a value by key</para>
</listitem><listitem>
<para><computeroutput>dragonfly_db_fnc_scheduler</computeroutput>: Processes the callback response</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete_1autotoc_md12">
<title>Links</title>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete">Delete Key</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2get">Get Key</link> | <link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2set">Set Key</link> </para>
</section>
</section>
</section>

View File

@ -0,0 +1,51 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_dir_10eb6422e80bd721a9a7af022f58c68b" xml:lang="en-US">
<title>G:/ids/dragonfly/docs/core Directory Reference</title>
<indexterm><primary>G:/ids/dragonfly/docs/core Directory Reference</primary></indexterm>
<section>
<title>Detailed Description</title>
<para>This section contains documentation for the core functions of ArmaDragonflyClient that handle initialization, process management, and scheduling.</para>
<section xml:id="_README.md_1autotoc_md133">
<title>Available Functions</title>
<para><itemizedlist>
<listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">addTask</link> - Add a task to the scheduler</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">handler</link> - Handle callbacks from the extension</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">init</link> - Initialize the database system</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">printAddonName</link> - Print the addon name</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">processQueue</link> - Process queued database operations</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">scheduler</link> - Schedule database operations</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">test</link> - Test the database connection</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_README.md_1autotoc_md134">
<title>Example Usage</title>
<para><literallayout><computeroutput>//&#32;Initialize&#32;the&#32;database
[]&#32;call&#32;dragonfly_db_fnc_init;
//&#32;Test&#32;the&#32;database&#32;connection
[]&#32;call&#32;dragonfly_db_fnc_test;
</computeroutput></literallayout></para>
</section>
<section xml:id="_README.md_1autotoc_md135">
<title>Related Categories</title>
<para><itemizedlist>
<listitem>
<para>Basic Data Operations</para>
</listitem><listitem>
<para>Hash Operations</para>
</listitem><listitem>
<para>List Operations </para>
</listitem></itemizedlist>
</para>
</section>
</section>
</section>

View File

@ -0,0 +1,64 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_dir_1d1eabba2c636e67297dc8cee9bc9944" xml:lang="en-US">
<title>G:/ids/dragonfly/docs/hash Directory Reference</title>
<indexterm><primary>G:/ids/dragonfly/docs/hash Directory Reference</primary></indexterm>
<section>
<title>Detailed Description</title>
<para>This section contains documentation for the hash operations of ArmaDragonflyClient that allow for working with hash tables (key-value pairs within a namespace).</para>
<section xml:id="_README.md_1autotoc_md276">
<title>Available Functions</title>
<para><itemizedlist>
<listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">hashGet</link> - Get a field from a hash</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">hashGetAll</link> - Get all fields from a hash</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">hashGetAllId</link> - Get all fields from a hash for a specific ID</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">hashGetId</link> - Get a field from a hash for a specific ID</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">hashSet</link> - Set a field in a hash</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">hashSetBulk</link> - Set multiple fields in a hash in one operation</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">hashSetId</link> - Set a field in a hash for a specific ID</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">hashSetIdBulk</link> - Set multiple fields in a hash for a specific ID in one operation</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_README.md_1autotoc_md277">
<title>Example Usage</title>
<para><literallayout><computeroutput>//&#32;Context&#32;mode&#32;examples
[&quot;myField&quot;,&#32;[myValue]]&#32;call&#32;dragonfly_db_fnc_hashSet;
[&quot;myField&quot;,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_hashGet;
[&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetAll;
//&#32;Set&#32;multiple&#32;hash&#32;fields&#32;in&#32;one&#32;operation
[[
&#32;&#32;&#32;&#32;&quot;loadout&quot;,&#32;[getUnitLoadout&#32;player],
&#32;&#32;&#32;&#32;&quot;position&quot;,&#32;[getPosASL&#32;player],
&#32;&#32;&#32;&#32;&quot;direction&quot;,&#32;[getDir&#32;player]
]]&#32;call&#32;dragonfly_db_fnc_hashSetBulk;
//&#32;ID-specific&#32;examples
[&quot;myHash&quot;,&#32;&quot;myField&quot;,&#32;[myValue]]&#32;call&#32;dragonfly_db_fnc_hashSetId;
[&quot;myHash&quot;,&#32;&quot;myField&quot;,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetId;
[&quot;myHash&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetAllId;
</computeroutput></literallayout></para>
</section>
<section xml:id="_README.md_1autotoc_md278">
<title>Related Categories</title>
<para><itemizedlist>
<listitem>
<para>Core Functions</para>
</listitem><listitem>
<para>Basic Data Operations</para>
</listitem><listitem>
<para>List Operations </para>
</listitem></itemizedlist>
</para>
</section>
</section>
</section>

View File

@ -0,0 +1,208 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_dir_6b1f4820e2481aa5a1ea9b2275f196d9" xml:lang="en-US">
<title>G:/ids/dragonfly/docs Directory Reference</title>
<indexterm><primary>G:/ids/dragonfly/docs Directory Reference</primary></indexterm>
<simplesect>
<title>Directories </title>
<itemizedlist>
<listitem><para>directory <link linkend="_dir_71f12be5768ca2af9c9f300d019944af">basic</link></para>
</listitem>
<listitem><para>directory <link linkend="_dir_10eb6422e80bd721a9a7af022f58c68b">core</link></para>
</listitem>
<listitem><para>directory <link linkend="_dir_1d1eabba2c636e67297dc8cee9bc9944">hash</link></para>
</listitem>
<listitem><para>directory <link linkend="_dir_72c6efb7383bf0530aa073c1e7428252">list</link></para>
</listitem>
</itemizedlist>
</simplesect>
<section>
<title>Detailed Description</title>
<para>This documentation provides details on all functions available in <computeroutput>ArmaDragonflyClient</computeroutput>. These functions allow you to interact with the in-memory database system for Arma 3.</para>
<section xml:id="_README.md_1autotoc_md345">
<title>Function Categories</title>
<para>The functions are categorized by their purpose:</para>
<section xml:id="_README.md_1autotoc_md346">
<title>Core Functions</title>
<para><itemizedlist>
<listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2init">init</link> - Initialize the database system</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2handler">handler</link> - Handle callbacks from the extension</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2process_queue">processQueue</link> - Process queued database operations</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2scheduler">scheduler</link> - Schedule database operations</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2add_task">addTask</link> - Add a task to the scheduler</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name">printAddonName</link> - Print the addon name</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2core_2test">test</link> - Test the database connection</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_README.md_1autotoc_md347">
<title>Basic Data Operations</title>
<para><itemizedlist>
<listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2get">get</link> - Get a value from the database</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2set">set</link> - Set a value in the database</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete">delete</link> - Delete a value from the database</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2save">save</link> - Save the database to disk</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch">fetch</link> - Fetch a value from the database</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_README.md_1autotoc_md348">
<title>Hash Operations</title>
<para><itemizedlist>
<listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get">hashGet</link> - Get a field from a hash</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all">hashGetAll</link> - Get all fields from a hash</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id">hashGetAllId</link> - Get all fields from a hash for a specific ID</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id">hashGetId</link> - Get a field from a hash for a specific ID</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set">hashSet</link> - Set a field in a hash</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk">hashSetBulk</link> - Set multiple fields in a hash in one operation</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id">hashSetId</link> - Set a field in a hash for a specific ID</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk">hashSetIdBulk</link> - Set multiple fields in a hash for a specific ID in one operation</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_README.md_1autotoc_md349">
<title>List Operations</title>
<para><itemizedlist>
<listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add">listAdd</link> - Add an item to a list</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get">listGet</link> - Get items from a list</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load">listLoad</link> - Load a list from the database</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove">listRemove</link> - Remove an item from a list</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set">listSet</link> - Set an item in a list</para>
</listitem></itemizedlist>
</para>
</section>
</section>
<section xml:id="_README.md_1autotoc_md350">
<title>Usage Examples</title><section xml:id="_README.md_1autotoc_md351">
<title>Basic Usage</title>
<para><literallayout><computeroutput>//&#32;Initialize&#32;the&#32;database
[]&#32;call&#32;dragonfly_db_fnc_init;
//&#32;Set&#32;a&#32;value
[&quot;myKey&quot;,&#32;[myValue]]&#32;call&#32;dragonfly_db_fnc_set;
//&#32;Get&#32;a&#32;value
[&quot;myKey&quot;,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_get;
//&#32;Delete&#32;a&#32;key
[&quot;myKey&quot;]&#32;call&#32;dragonfly_db_fnc_delete;
</computeroutput></literallayout></para>
</section>
<section xml:id="_README.md_1autotoc_md352">
<title>Hash Operations</title>
<para><literallayout><computeroutput>//&#32;Set&#32;a&#32;hash&#32;field&#32;(context&#32;mode)
[&quot;myField&quot;,&#32;[myValue]]&#32;call&#32;dragonfly_db_fnc_hashSet;
//&#32;Get&#32;a&#32;hash&#32;field&#32;(context&#32;mode)
[&quot;myField&quot;,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_hashGet;
//&#32;Get&#32;all&#32;hash&#32;fields&#32;(context&#32;mode)
[&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetAll;
//&#32;Set&#32;multiple&#32;hash&#32;fields&#32;(context&#32;mode)
[[
&#32;&#32;&#32;&#32;&quot;loadout&quot;,&#32;[getUnitLoadout&#32;player],
&#32;&#32;&#32;&#32;&quot;position&quot;,&#32;[getPosASL&#32;player],
&#32;&#32;&#32;&#32;&quot;direction&quot;,&#32;[getDir&#32;player],
&#32;&#32;&#32;&#32;&quot;stance&quot;,&#32;[stance&#32;player]
]]&#32;call&#32;dragonfly_db_fnc_hashSetBulk;
//&#32;Remove&#32;a&#32;hash&#32;field&#32;(context&#32;mode)
[&quot;myField&quot;]&#32;call&#32;dragonfly_db_fnc_hashRemove;
//&#32;Delete&#32;a&#32;hash&#32;table&#32;(context&#32;mode)
[]&#32;call&#32;dragonfly_db_fnc_hashDelete;
</computeroutput></literallayout> <literallayout><computeroutput>//&#32;Set&#32;a&#32;hash&#32;field&#32;for&#32;specific&#32;ID
[&quot;myHash&quot;,&#32;&quot;myField&quot;,&#32;[myValue]]&#32;call&#32;dragonfly_db_fnc_hashSetId;
//&#32;Get&#32;a&#32;hash&#32;field&#32;for&#32;specific&#32;ID
[&quot;myHash&quot;,&#32;&quot;myField&quot;,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetId;
//&#32;Get&#32;all&#32;hash&#32;fields&#32;for&#32;specific&#32;ID
[&quot;myHash&quot;]&#32;call&#32;dragonfly_db_fnc_hashGetAllId;
//&#32;Set&#32;multiple&#32;hash&#32;fields&#32;for&#32;specific&#32;ID
[[
&#32;&#32;&#32;&#32;getPlayerUID&#32;player,
&#32;&#32;&#32;&#32;&quot;loadout&quot;,&#32;[getUnitLoadout&#32;player],
&#32;&#32;&#32;&#32;&quot;position&quot;,&#32;[getPosASL&#32;player],
&#32;&#32;&#32;&#32;&quot;direction&quot;,&#32;[getDir&#32;player],
&#32;&#32;&#32;&#32;&quot;stance&quot;,&#32;[stance&#32;player]
]]&#32;call&#32;dragonfly_db_fnc_hashSetIdBulk;
//&#32;Remove&#32;a&#32;hash&#32;field&#32;for&#32;specific&#32;ID
[&quot;myHash&quot;,&#32;&quot;myField&quot;]&#32;call&#32;dragonfly_db_fnc_hashRemoveId;
//&#32;Delete&#32;a&#32;hash&#32;table&#32;for&#32;specific&#32;ID
[&quot;myHash&quot;]&#32;call&#32;dragonfly_db_fnc_hashDeleteId;
</computeroutput></literallayout></para>
</section>
<section xml:id="_README.md_1autotoc_md353">
<title>List Operations</title>
<para><literallayout><computeroutput>//&#32;Add&#32;an&#32;item&#32;to&#32;a&#32;list
[&quot;myList&quot;,&#32;[&quot;myItem&quot;]]&#32;call&#32;dragonfly_db_fnc_listAdd;
//&#32;Set&#32;an&#32;item&#32;from&#32;a&#32;list
[&quot;myList&quot;,&#32;0,&#32;[myNewValue]]&#32;call&#32;dragonfly_db_fnc_listSet;
//&#32;Get&#32;an&#32;item&#32;from&#32;a&#32;list
[&quot;myList&quot;,&#32;0,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_listGet;
//&#32;Get&#32;items&#32;from&#32;a&#32;list
[&quot;myList&quot;,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_listLoad;
//&#32;Remove&#32;an&#32;item&#32;from&#32;a&#32;list
[&quot;myList&quot;,&#32;0]&#32;call&#32;dragonfly_db_fnc_listRemove;
//&#32;Delete&#32;a&#32;list
[&quot;myList&quot;]&#32;call&#32;dragonfly_db_fnc_listDelete;
</computeroutput></literallayout></para>
</section>
</section>
<section xml:id="_README.md_1autotoc_md354">
<title>Function Documentation Structure</title>
<para>Each function documentation includes:<itemizedlist>
<listitem>
<para>Function name and purpose</para>
</listitem><listitem>
<para>Parameters</para>
</listitem><listitem>
<para>Return value</para>
</listitem><listitem>
<para>Examples</para>
</listitem><listitem>
<para>Notes and warnings</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_README.md_1autotoc_md355">
<title>License</title>
<para>This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit <link xlink:href="https://creativecommons.org/licenses/by-nc-sa/4.0/">https://creativecommons.org/licenses/by-nc-sa/4.0/</link> or send a letter to Creative Commons, <?linebreak?>PO Box 1866, Mountain View, CA 94042 </para>
</section>
</section>
</section>

View File

@ -0,0 +1,53 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_dir_71f12be5768ca2af9c9f300d019944af" xml:lang="en-US">
<title>G:/ids/dragonfly/docs/basic Directory Reference</title>
<indexterm><primary>G:/ids/dragonfly/docs/basic Directory Reference</primary></indexterm>
<section>
<title>Detailed Description</title>
<para>This section contains documentation for the basic data operations of ArmaDragonflyClient that allow for simple key-value storage and retrieval.</para>
<section xml:id="_README.md_1autotoc_md37">
<title>Available Functions</title>
<para><itemizedlist>
<listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2delete">delete</link> - Delete a value from the database</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2fetch">fetch</link> - Fetch a value from the database</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2get">get</link> - Get a value from the database</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2save">save</link> - Save the database to disk</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2basic_2set">set</link> - Set a value in the database</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_README.md_1autotoc_md38">
<title>Example Usage</title>
<para><literallayout><computeroutput>//&#32;Set&#32;a&#32;value
[&quot;myKey&quot;,&#32;[myValue]]&#32;call&#32;dragonfly_db_fnc_set;
//&#32;Get&#32;a&#32;value
[&quot;myKey&quot;,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_get;
//&#32;Delete&#32;a&#32;key
[&quot;myKey&quot;]&#32;call&#32;dragonfly_db_fnc_delete;
//&#32;Save&#32;database&#32;to&#32;disk
[]&#32;call&#32;dragonfly_db_fnc_save;
</computeroutput></literallayout></para>
</section>
<section xml:id="_README.md_1autotoc_md39">
<title>Related Categories</title>
<para><itemizedlist>
<listitem>
<para>Core Functions</para>
</listitem><listitem>
<para>Hash Operations</para>
</listitem><listitem>
<para>List Operations </para>
</listitem></itemizedlist>
</para>
</section>
</section>
</section>

View File

@ -0,0 +1,56 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_dir_72c6efb7383bf0530aa073c1e7428252" xml:lang="en-US">
<title>G:/ids/dragonfly/docs/list Directory Reference</title>
<indexterm><primary>G:/ids/dragonfly/docs/list Directory Reference</primary></indexterm>
<section>
<title>Detailed Description</title>
<para>This section contains documentation for the list operations of ArmaDragonflyClient that allow for working with ordered collections of items.</para>
<section xml:id="_README.md_1autotoc_md341">
<title>Available Functions</title>
<para><itemizedlist>
<listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_add">listAdd</link> - Add an item to a list</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_get">listGet</link> - Get items from a list</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_load">listLoad</link> - Load a list from the database</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_remove">listRemove</link> - Remove an item from a list</para>
</listitem><listitem>
<para><link linkend="_md__g_1_2ids_2dragonfly_2docs_2list_2list_set">listSet</link> - Set an item in a list</para>
</listitem></itemizedlist>
</para>
</section>
<section xml:id="_README.md_1autotoc_md342">
<title>Example Usage</title>
<para><literallayout><computeroutput>//&#32;Add&#32;an&#32;item&#32;to&#32;a&#32;list
[&quot;myList&quot;,&#32;[&quot;myItem&quot;]]&#32;call&#32;dragonfly_db_fnc_listAdd;
//&#32;Set&#32;an&#32;item&#32;at&#32;a&#32;specific&#32;index
[&quot;myList&quot;,&#32;0,&#32;[myNewValue]]&#32;call&#32;dragonfly_db_fnc_listSet;
//&#32;Get&#32;an&#32;item&#32;at&#32;a&#32;specific&#32;index
[&quot;myList&quot;,&#32;0,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_listGet;
//&#32;Load&#32;all&#32;items&#32;from&#32;a&#32;list
[&quot;myList&quot;,&#32;&quot;myFunction&quot;]&#32;call&#32;dragonfly_db_fnc_listLoad;
//&#32;Remove&#32;an&#32;item&#32;at&#32;a&#32;specific&#32;index
[&quot;myList&quot;,&#32;0]&#32;call&#32;dragonfly_db_fnc_listRemove;
</computeroutput></literallayout></para>
</section>
<section xml:id="_README.md_1autotoc_md343">
<title>Related Categories</title>
<para><itemizedlist>
<listitem>
<para>Core Functions</para>
</listitem><listitem>
<para>Basic Data Operations</para>
</listitem><listitem>
<para>Hash Operations </para>
</listitem></itemizedlist>
</para>
</section>
</section>
</section>

32
api/docbook/index.xml Normal file
View File

@ -0,0 +1,32 @@
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<book xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_index" xml:lang="en-US">
<info>
<title>ArmaDragonflyClient</title>
</info>
<xi:include href="df/d12/md__g_1_2ids_2dragonfly_2docs_2basic_2delete.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d4/d99/md__g_1_2ids_2dragonfly_2docs_2basic_2fetch.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d3/dcb/md__g_1_2ids_2dragonfly_2docs_2basic_2get.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d2/dce/md__g_1_2ids_2dragonfly_2docs_2basic_2save.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d9/d9c/md__g_1_2ids_2dragonfly_2docs_2basic_2set.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="da/d2c/md__g_1_2ids_2dragonfly_2docs_2list_2list_add.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d3/ddf/md__g_1_2ids_2dragonfly_2docs_2list_2list_get.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d9/db3/md__g_1_2ids_2dragonfly_2docs_2list_2list_load.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d1/d22/md__g_1_2ids_2dragonfly_2docs_2list_2list_remove.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<xi:include href="d2/dc5/md__g_1_2ids_2dragonfly_2docs_2list_2list_set.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
<index/>
</book>

BIN
api/html/bc_s.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 676 B

BIN
api/html/bc_sd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

61
api/html/clipboard.js Normal file
View File

@ -0,0 +1,61 @@
/**
The code below is based on the Doxygen Awesome project, see
https://github.com/jothepro/doxygen-awesome-css
MIT License
Copyright (c) 2021 - 2022 jothepro
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/
let clipboard_title = "Copy to clipboard"
let clipboard_icon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path fill="#888" d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"/></svg>`
let clipboard_successIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z"/></svg>`
let clipboard_successDuration = 1000
$(function() {
if(navigator.clipboard) {
const fragments = document.getElementsByClassName("fragment")
for(const fragment of fragments) {
const clipboard_div = document.createElement("div")
clipboard_div.classList.add("clipboard")
clipboard_div.innerHTML = clipboard_icon
clipboard_div.title = clipboard_title
$(clipboard_div).click(function() {
const content = this.parentNode.cloneNode(true)
// filter out line number and folded fragments from file listings
content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() })
let text = content.textContent
// remove trailing newlines and trailing spaces from empty lines
text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'')
navigator.clipboard.writeText(text);
this.classList.add("success")
this.innerHTML = clipboard_successIcon
window.setTimeout(() => { // switch back to normal icon after timeout
this.classList.remove("success")
this.innerHTML = clipboard_icon
}, clipboard_successDuration);
})
fragment.insertBefore(clipboard_div, fragment.firstChild)
}
}
})

BIN
api/html/closed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

58
api/html/cookie.js Normal file
View File

@ -0,0 +1,58 @@
/*!
Cookie helper functions
Copyright (c) 2023 Dimitri van Heesch
Released under MIT license.
*/
let Cookie = {
cookie_namespace: 'doxygen_',
readSetting(cookie,defVal) {
if (window.chrome) {
const val = localStorage.getItem(this.cookie_namespace+cookie) ||
sessionStorage.getItem(this.cookie_namespace+cookie);
if (val) return val;
} else {
let myCookie = this.cookie_namespace+cookie+"=";
if (document.cookie) {
const index = document.cookie.indexOf(myCookie);
if (index != -1) {
const valStart = index + myCookie.length;
let valEnd = document.cookie.indexOf(";", valStart);
if (valEnd == -1) {
valEnd = document.cookie.length;
}
return document.cookie.substring(valStart, valEnd);
}
}
}
return defVal;
},
writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete
if (window.chrome) {
if (days==0) {
sessionStorage.setItem(this.cookie_namespace+cookie,val);
} else {
localStorage.setItem(this.cookie_namespace+cookie,val);
}
} else {
let date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
const expiration = days!=0 ? "expires="+date.toGMTString()+";" : "";
document.cookie = this.cookie_namespace + cookie + "=" +
val + "; SameSite=Lax;" + expiration + "path=/";
}
},
eraseSetting(cookie) {
if (window.chrome) {
if (localStorage.getItem(this.cookie_namespace+cookie)) {
localStorage.removeItem(this.cookie_namespace+cookie);
} else if (sessionStorage.getItem(this.cookie_namespace+cookie)) {
sessionStorage.removeItem(this.cookie_namespace+cookie);
}
} else {
this.writeSetting(cookie,'',-1);
}
},
}

View File

@ -0,0 +1,170 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: processQueue</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">processQueue</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md119"></a>
autotoc_md119</h2>
<p>title: ArmaDragonflyClient - Process Queue icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md120"></a>
excerpt: Processes a queue of tasks to be executed.</h2>
<h1><a class="anchor" id="autotoc_md121"></a>
dragonfly_db_fnc_processQueue</h1>
<h2><a class="anchor" id="autotoc_md122"></a>
Description</h2>
<p>Processes the queue of pending database tasks sequentially. This function executes each task in the queue one by one, handling various database operations based on the task type. It continues processing until the queue is empty.</p>
<h2><a class="anchor" id="autotoc_md123"></a>
Syntax</h2>
<div class="fragment"><div class="line">[] spawn dragonfly_db_fnc_processQueue</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md124"></a>
Parameters</h2>
<p>None. This function does not require any parameters.</p>
<h2><a class="anchor" id="autotoc_md125"></a>
Return Value</h2>
<p>None. The function processes tasks in the queue and updates the processing state.</p>
<h2><a class="anchor" id="autotoc_md126"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md127"></a>
Start processing the queue manually:</h3>
<div class="fragment"><div class="line">[] spawn dragonfly_db_fnc_processQueue;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md128"></a>
Trigger queue processing from a client:</h3>
<div class="fragment"><div class="line">[] remoteExec [&quot;dragonfly_db_fnc_processQueue&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md129"></a>
Notes</h2>
<ul>
<li>Sets <code>GVAR(isProcessing)</code> to true while running and false when complete</li>
<li>Processes one task per second to prevent overloading</li>
<li>Handles a wide range of database operations including:<ul>
<li>Key-value operations (get, set, delete)</li>
<li>Hash table operations (hget, hset, hgetall, etc.)</li>
<li>List operations (listadd, listrng, listset, etc.)</li>
</ul>
</li>
<li>Automatically started by <code>dragonfly_db_fnc_addTask</code> when new tasks are added</li>
<li>Each task execution is logged for debugging purposes</li>
<li>Should typically be spawned rather than called to avoid blocking</li>
</ul>
<h2><a class="anchor" id="autotoc_md130"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_addTask</code>: Adds tasks to the queue for processing</li>
<li><code>dragonfly_db_fnc_handler</code>: Handles data returned from database operations</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Manages callback responses from the database</li>
</ul>
<h2><a class="anchor" id="autotoc_md131"></a>
Links</h2>
<p><a class="el" href="../../dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html">Add Task</a> | <a class="el" href="../../d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html">Handler</a> | <a class="el" href="../../dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html">Init</a> | <a class="el" href="../../d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html">Print Addon Name</a> | <a class="el" href="../../d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html">Process Queue</a> | <a class="el" href="../../d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html">Scheduler</a> | <a class="el" href="../../d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html">Test</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,179 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: hashSet</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">hashSet</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md219"></a>
autotoc_md219</h2>
<p>title: ArmaDragonflyClient - Hash Set icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md220"></a>
excerpt: Set a field value in the current client's hash table in DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md221"></a>
dragonfly_db_fnc_hashSet</h1>
<h2><a class="anchor" id="autotoc_md222"></a>
Description</h2>
<p>Sets the value of a specified field in the hash table associated with the current client/player. This function automatically determines the appropriate hash ID based on the caller's identity, making it more convenient than <code>hashSetId</code> which requires manually specifying an ID. It allows storing various data types (arrays, strings, numbers, or booleans) in a field of the client-specific hash structure.</p>
<h2><a class="anchor" id="autotoc_md223"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_keyField, _data] call dragonfly_db_fnc_hashSet</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md224"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_keyField</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the field in the hash to set </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_data</code> </td><td class="markdownTableBodyNone">Array, String, Number, or Boolean </td><td class="markdownTableBodyNone">The value to store in the hash field </td><td class="markdownTableBodyNone">[] </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md225"></a>
Return Value</h2>
<p>None. The operation runs synchronously to store the data.</p>
<h2><a class="anchor" id="autotoc_md226"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md227"></a>
Store a player's loadout:</h3>
<div class="fragment"><div class="line">[&quot;loadout&quot;, [getUnitLoadout player]] call dragonfly_db_fnc_hashSet;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md228"></a>
Store player preferences:</h3>
<div class="fragment"><div class="line">[&quot;settings&quot;, [true, 30, &quot;normal&quot;]] call dragonfly_db_fnc_hashSet;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md229"></a>
Store data from a client:</h3>
<div class="fragment"><div class="line">[&quot;clientInfo&quot;, [name player, getPlayerUID player]] remoteExecCall [&quot;dragonfly_db_fnc_hashSet&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md230"></a>
Notes</h2>
<ul>
<li>Stores a single field-value pair in the current client's hash table</li>
<li>Both the field name and data parameters are required and validated</li>
<li>If the field already exists, its value will be overwritten</li>
<li>Supports various data types: arrays, strings, numbers, and booleans</li>
<li>This function automatically determines which hash table to use based on the caller's identity</li>
<li>Use <code>hashSetId</code> when you need to specify a particular hash table by ID</li>
<li>Complex data structures should be serialized into arrays</li>
<li>The operation is executed immediately and synchronously</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md231"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_hashSetId</code>: Sets a field value in a specific hash table (when you need to specify the ID)</li>
<li><code>dragonfly_db_fnc_hashGet</code>: Retrieves a field value from the current client's hash table</li>
<li><code>dragonfly_db_fnc_hashGetAll</code>: Retrieves all fields from the current client's hash table</li>
<li><code>dragonfly_db_fnc_hashSetBulk</code>: Sets multiple fields in the current client's hash table</li>
</ul>
<h2><a class="anchor" id="autotoc_md232"></a>
Links</h2>
<p><a class="el" href="../../d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">Hash Get</a> | <a class="el" href="../../da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">Hash Get All</a> | <a class="el" href="../../d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">Hash Get All ID</a> | <a class="el" href="../../d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">Hash Get ID</a> | <a class="el" href="../../d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">Hash Set</a> | <a class="el" href="../../da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">Hash Set Bulk</a> | <a class="el" href="../../d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">Hash Set ID</a> | <a class="el" href="../../de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">Hash Set ID Bulk</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,171 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: scheduler</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">scheduler</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md136"></a>
autotoc_md136</h2>
<p>title: ArmaDragonflyClient - Scheduler icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md137"></a>
excerpt: Scheduled Environment for extension.</h2>
<h1><a class="anchor" id="autotoc_md138"></a>
dragonfly_db_fnc_scheduler</h1>
<h2><a class="anchor" id="autotoc_md139"></a>
Description</h2>
<p>Manages the callback system for the ArmaDragonflyClient extension. This function receives task IDs from the extension's asynchronous callbacks, parses them, and registers them in a hashmap for later processing. It acts as the bridge between the extension's asynchronous operations and the game's execution environment.</p>
<h2><a class="anchor" id="autotoc_md140"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_taskID] call dragonfly_db_fnc_scheduler</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md141"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_taskID</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Task identifier returned from extension callback </td><td class="markdownTableBodyNone">"" </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md142"></a>
Return Value</h2>
<p>None. The function registers the task ID in a hashmap for later processing.</p>
<h2><a class="anchor" id="autotoc_md143"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md144"></a>
Process a callback from the extension:</h3>
<div class="fragment"><div class="line">[&quot;1689524160123_get&quot;] call dragonfly_db_fnc_scheduler;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md145"></a>
Forward a callback to the server:</h3>
<div class="fragment"><div class="line">[&quot;1689524160123_hgetall&quot;] remoteExecCall [&quot;dragonfly_db_fnc_scheduler&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md146"></a>
Notes</h2>
<ul>
<li>Parses the task ID to extract the timestamp and operation type</li>
<li>Registers the task in a type-specific hashmap using the mission namespace</li>
<li>Each operation type (get, hgetall, etc.) has its own hashmap for tracking</li>
<li>The format of task IDs is typically: <code>[timestamp]_[operation]</code></li>
<li>This function is automatically called by the extension callback mechanism</li>
<li>Creates hashmaps on demand if they don't already exist</li>
<li>Critical for handling asynchronous database operations</li>
</ul>
<h2><a class="anchor" id="autotoc_md147"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_fetch</code>: Assembles data chunks for large datasets</li>
<li><code>dragonfly_db_fnc_handler</code>: Processes the data retrieved from database operations</li>
<li><code>dragonfly_db_fnc_processQueue</code>: Executes queued database operations</li>
</ul>
<h2><a class="anchor" id="autotoc_md148"></a>
Links</h2>
<p><a class="el" href="../../dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html">Add Task</a> | <a class="el" href="../../d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html">Handler</a> | <a class="el" href="../../dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html">Init</a> | <a class="el" href="../../d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html">Print Addon Name</a> | <a class="el" href="../../d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html">Process Queue</a> | <a class="el" href="../../d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html">Scheduler</a> | <a class="el" href="../../d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html">Test</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,172 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: listRemove</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d1/d22/md__g_1_2ids_2dragonfly_2docs_2list_2list_remove.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">listRemove</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md318"></a>
autotoc_md318</h2>
<p>title: ArmaDragonflyClient - List Remove icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md319"></a>
excerpt: Remove an element from a list stored at a key in DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md320"></a>
dragonfly_db_fnc_listRemove</h1>
<h2><a class="anchor" id="autotoc_md321"></a>
Description</h2>
<p>Removes a specific element from a list stored at a specified key in the DragonflyClient database. This function allows for precise control over list content by targeting individual elements by their index, without affecting other elements in the list. This is particularly useful for removing outdated or no longer needed entries.</p>
<h2><a class="anchor" id="autotoc_md322"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _index] call dragonfly_db_fnc_listRemove</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md323"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">_key </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">The key identifying the list from which to remove an element </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">_index </td><td class="markdownTableBodyNone">Number </td><td class="markdownTableBodyNone">The zero-based index of the element to remove from the list </td><td class="markdownTableBodyNone">-1 </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md324"></a>
Return Value</h2>
<p>None. The operation runs synchronously to remove the element immediately.</p>
<h2><a class="anchor" id="autotoc_md325"></a>
Examples</h2>
<p><b>Remove the first element from an event log:</b> </p><div class="fragment"><div class="line">[&quot;eventLog&quot;, 0] call dragonfly_db_fnc_listRemove;</div>
</div><!-- fragment --><p><b>Remove a specific player record:</b> </p><div class="fragment"><div class="line">[&quot;playerRecords&quot;, 5] call dragonfly_db_fnc_listRemove;</div>
</div><!-- fragment --><p><b>Remove an element from a multiplayer environment:</b> </p><div class="fragment"><div class="line">[&quot;sharedData&quot;, 2] remoteExecCall [&quot;dragonfly_db_fnc_listRemove&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md326"></a>
Notes</h2>
<ul>
<li>This function removes only the element at the specified index. All other elements remain unchanged, though their indices may shift.</li>
<li>The index is zero-based, meaning the first element is at index 0, the second at index 1, and so on.</li>
<li>If an invalid index is provided (negative or exceeding the list length), the operation will not remove any elements.</li>
<li>The <code>_key</code> parameter must be a non-empty string, otherwise the function will exit without performing any action.</li>
<li>After removing an element, all subsequent elements shift down by one index to maintain a contiguous list.</li>
<li>The removal operation is permanent and cannot be undone except by re-adding the element.</li>
<li>All list operations are logged for debugging purposes.</li>
</ul>
<h2><a class="anchor" id="autotoc_md327"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_listAdd</code>: Adds an element to a list</li>
<li><code>dragonfly_db_fnc_listGet</code>: Retrieves a specific element from a list</li>
<li><code>dragonfly_db_fnc_listLoad</code>: Retrieves a range of elements from a list</li>
<li><code>dragonfly_db_fnc_listSet</code>: Replaces a specific element in a list</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md328"></a>
Links</h2>
<p><a class="el" href="../../da/d2c/md__g_1_2ids_2dragonfly_2docs_2list_2list_add.html">List Add</a> | <a class="el" href="../../d3/ddf/md__g_1_2ids_2dragonfly_2docs_2list_2list_get.html">List Get</a> | <a class="el" href="../../d9/db3/md__g_1_2ids_2dragonfly_2docs_2list_2list_load.html">List Load</a> | <a class="el" href="../../d1/d22/md__g_1_2ids_2dragonfly_2docs_2list_2list_remove.html">List Remove</a> | <a class="el" href="../../d2/dc5/md__g_1_2ids_2dragonfly_2docs_2list_2list_set.html">List Set</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,184 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: hashGetAllId</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">hashGetAllId</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md191"></a>
autotoc_md191</h2>
<p>title: ArmaDragonflyClient - Hash Get All ID icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md192"></a>
excerpt: Get all fields and values from the hash stored at key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md193"></a>
dragonfly_db_fnc_hashGetAllId</h1>
<h2><a class="anchor" id="autotoc_md194"></a>
Description</h2>
<p>Retrieves all fields and values from a specific hash table identified by its key. This function returns the complete hash table data for a specific ID through a callback function, allowing access to all stored key-value pairs associated with that ID. It's particularly useful for retrieving player-specific or entity-specific hash data.</p>
<h2><a class="anchor" id="autotoc_md195"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _function, _call, _netId] call dragonfly_db_fnc_hashGetAllId</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md196"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Identifier of the hash table to retrieve </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the function to receive the retrieved data </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td><td class="markdownTableBodyNone">false </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">(Optional) NetID of the player to receive the data </td><td class="markdownTableBodyNone">"" </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md197"></a>
Return Value</h2>
<p>None. The retrieved data is passed to the specified callback function asynchronously.</p>
<h2><a class="anchor" id="autotoc_md198"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md199"></a>
Retrieve a player's complete hash data:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, &quot;dragonfly_db_fnc_test&quot;] call dragonfly_db_fnc_hashGetAllId;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md200"></a>
Retrieve vehicle data with synchronous callback:</h3>
<div class="fragment"><div class="line">[&quot;vehicle_123&quot;, &quot;dragonfly_db_fnc_processVehicleData&quot;, true] call dragonfly_db_fnc_hashGetAllId;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md201"></a>
Retrieve data and send it to a specific client:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, &quot;dragonfly_db_fnc_test&quot;, false, netId player] remoteExecCall [&quot;dragonfly_db_fnc_hashGetAllId&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md202"></a>
Notes</h2>
<ul>
<li>Returns the complete hash table with all fields and values as a nested array</li>
<li>Both the key and callback function parameters are required and validated</li>
<li>The data is retrieved asynchronously through the extension's callback system</li>
<li>When a netId is provided, the data is sent to that specific client</li>
<li>The <code>_call</code> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</li>
<li>This function retrieves from a specific hash table identified by <code>_key</code> - use <code>hashGetAll</code> for the global hash table</li>
<li>Player UIDs are commonly used as keys to store player-specific data</li>
<li>For large hash tables, retrieving all data may impact performance</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md203"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_hashGetAll</code>: Retrieves all fields from the global hash table</li>
<li><code>dragonfly_db_fnc_hashGetId</code>: Retrieves a specific field value from a specific hash table</li>
<li><code>dragonfly_db_fnc_hashGet</code>: Retrieves a specific field value from the global hash table</li>
<li><code>dragonfly_db_fnc_hashSetId</code>: Sets a field value in a specific hash table</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md204"></a>
Links</h2>
<p><a class="el" href="../../d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">Hash Get</a> | <a class="el" href="../../da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">Hash Get All</a> | <a class="el" href="../../d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">Hash Get All ID</a> | <a class="el" href="../../d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">Hash Get ID</a> | <a class="el" href="../../d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">Hash Set</a> | <a class="el" href="../../da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">Hash Set Bulk</a> | <a class="el" href="../../d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">Hash Set ID</a> | <a class="el" href="../../de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">Hash Set ID Bulk</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,186 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: hashGetId</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">hashGetId</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md205"></a>
autotoc_md205</h2>
<p>title: ArmaDragonflyClient - Hash Get ID icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md206"></a>
excerpt: Get the value associated with field in hash stored at key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md207"></a>
dragonfly_db_fnc_hashGetId</h1>
<h2><a class="anchor" id="autotoc_md208"></a>
Description</h2>
<p>Retrieves the value of a specific field from a hash table identified by its key. This function allows targeted access to individual fields within a specific hash table, making it ideal for accessing particular attributes of player or entity data. The retrieved data is returned through a callback function.</p>
<h2><a class="anchor" id="autotoc_md209"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _keyField, _function, _call, _netId] call dragonfly_db_fnc_hashGetId</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md210"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Identifier of the hash table </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_keyField</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the field in the hash to retrieve </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the function to receive the retrieved data </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td><td class="markdownTableBodyNone">false </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">(Optional) NetID of the player to receive the data </td><td class="markdownTableBodyNone">"" </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md211"></a>
Return Value</h2>
<p>None. The retrieved data is passed to the specified callback function asynchronously.</p>
<h2><a class="anchor" id="autotoc_md212"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md213"></a>
Retrieve a player's loadout field:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, &quot;loadout&quot;, &quot;dragonfly_db_fnc_test&quot;] call dragonfly_db_fnc_hashGetId;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md214"></a>
Retrieve a specific vehicle property with synchronous callback:</h3>
<div class="fragment"><div class="line">[&quot;vehicle_123&quot;, &quot;fuel&quot;, &quot;dragonfly_db_fnc_processFuelData&quot;, true] call dragonfly_db_fnc_hashGetId;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md215"></a>
Retrieve data and send it to a specific client:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, &quot;stats&quot;, &quot;dragonfly_db_fnc_test&quot;, false, netId player] remoteExecCall [&quot;dragonfly_db_fnc_hashGetId&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md216"></a>
Notes</h2>
<ul>
<li>Retrieves a single field value from a specific hash table</li>
<li>All three primary parameters (key, keyField, and function) are required and validated</li>
<li>The data is retrieved asynchronously through the extension's callback system</li>
<li>When a netId is provided, the data is sent to that specific client</li>
<li>The <code>_call</code> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</li>
<li>This function targets both a specific hash table (<code>_key</code>) and a specific field (<code>_keyField</code>)</li>
<li>More efficient than retrieving all hash fields when only one is needed</li>
<li>Player UIDs are commonly used as keys to store player-specific data</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md217"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_hashGet</code>: Retrieves a field value from the global hash table</li>
<li><code>dragonfly_db_fnc_hashGetAllId</code>: Retrieves all fields from a specific hash table</li>
<li><code>dragonfly_db_fnc_hashGetAll</code>: Retrieves all fields from the global hash table</li>
<li><code>dragonfly_db_fnc_hashSetId</code>: Sets a field value in a specific hash table</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md218"></a>
Links</h2>
<p><a class="el" href="../../d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">Hash Get</a> | <a class="el" href="../../da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">Hash Get All</a> | <a class="el" href="../../d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">Hash Get All ID</a> | <a class="el" href="../../d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">Hash Get ID</a> | <a class="el" href="../../d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">Hash Set</a> | <a class="el" href="../../da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">Hash Set Bulk</a> | <a class="el" href="../../d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">Hash Set ID</a> | <a class="el" href="../../de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">Hash Set ID Bulk</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,174 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: listSet</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d2/dc5/md__g_1_2ids_2dragonfly_2docs_2list_2list_set.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">listSet</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md329"></a>
autotoc_md329</h2>
<p>title: ArmaDragonflyClient - List Set icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md330"></a>
excerpt: Set an element in a list stored at a key in DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md331"></a>
dragonfly_db_fnc_listSet</h1>
<h2><a class="anchor" id="autotoc_md332"></a>
Description</h2>
<p>Updates or sets the value of a specific element at a given index in a list stored at a specified key in the DragonflyClient database. This function allows for precise modification of list contents by targeting individual elements without affecting other elements in the list. It is particularly useful for updating record information, modifying configuration data, or correcting entries.</p>
<h2><a class="anchor" id="autotoc_md333"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _index, _data] call dragonfly_db_fnc_listSet</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md334"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">_key </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">The key identifying the list in which to set an element </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">_index </td><td class="markdownTableBodyNone">Number </td><td class="markdownTableBodyNone">The zero-based index of the element to set in the list </td><td class="markdownTableBodyNone">-1 </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">_data </td><td class="markdownTableBodyNone">Array/String/Number/Boolean </td><td class="markdownTableBodyNone">The value to set at the specified index </td><td class="markdownTableBodyNone">[] </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md335"></a>
Return Value</h2>
<p>None. The operation runs synchronously to update the element immediately.</p>
<h2><a class="anchor" id="autotoc_md336"></a>
Examples</h2>
<p><b>Update an event log entry:</b> </p><div class="fragment"><div class="line">[&quot;eventLog&quot;, 0, [&quot;Updated event information&quot;]] call dragonfly_db_fnc_listSet;</div>
</div><!-- fragment --><p><b>Modify player statistics:</b> </p><div class="fragment"><div class="line">[&quot;playerStats&quot;, 3, [name player, score player, alive player]] call dragonfly_db_fnc_listSet;</div>
</div><!-- fragment --><p><b>Update configuration in multiplayer:</b> </p><div class="fragment"><div class="line">[&quot;missionConfig&quot;, 1, [&quot;difficulty&quot;, &quot;veteran&quot;]] remoteExecCall [&quot;dragonfly_db_fnc_listSet&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md337"></a>
Notes</h2>
<ul>
<li>This function updates only the element at the specified index. All other elements remain unchanged.</li>
<li>The index is zero-based, meaning the first element is at index 0, the second at index 1, and so on.</li>
<li>If the specified index does not exist in the list, the operation may fail or have no effect.</li>
<li>Both the <code>_key</code> parameter and <code>_data</code> parameter must be valid (non-empty string for key, non-nil for data), otherwise the function will exit without performing any action.</li>
<li>The function supports various data types, including arrays, strings, numbers, and booleans.</li>
<li>The update operation is permanent and will overwrite any previous value at the specified index.</li>
<li>All list operations are logged for debugging purposes.</li>
</ul>
<h2><a class="anchor" id="autotoc_md338"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_listAdd</code>: Adds an element to a list</li>
<li><code>dragonfly_db_fnc_listGet</code>: Retrieves a specific element from a list</li>
<li><code>dragonfly_db_fnc_listLoad</code>: Retrieves a range of elements from a list</li>
<li><code>dragonfly_db_fnc_listRemove</code>: Removes a specific element from a list</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md339"></a>
Links</h2>
<p><a class="el" href="../../da/d2c/md__g_1_2ids_2dragonfly_2docs_2list_2list_add.html">List Add</a> | <a class="el" href="../../d3/ddf/md__g_1_2ids_2dragonfly_2docs_2list_2list_get.html">List Get</a> | <a class="el" href="../../d9/db3/md__g_1_2ids_2dragonfly_2docs_2list_2list_load.html">List Load</a> | <a class="el" href="../../d1/d22/md__g_1_2ids_2dragonfly_2docs_2list_2list_remove.html">List Remove</a> | <a class="el" href="../../d2/dc5/md__g_1_2ids_2dragonfly_2docs_2list_2list_set.html">List Set</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,158 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: save</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d2/dce/md__g_1_2ids_2dragonfly_2docs_2basic_2save.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">save</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md40"></a>
autotoc_md40</h2>
<p>title: ArmaDragonflyClient - Save DB icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md41"></a>
excerpt: Save DB to disc.</h2>
<h1><a class="anchor" id="autotoc_md42"></a>
dragonfly_db_fnc_save</h1>
<h2><a class="anchor" id="autotoc_md43"></a>
Description</h2>
<p>Saves the entire database to disk storage. This function persists all data (key-value pairs, hash tables, and lists) to a file, allowing it to be retrieved later even after server restart.</p>
<h2><a class="anchor" id="autotoc_md44"></a>
Syntax</h2>
<div class="fragment"><div class="line">[] call dragonfly_db_fnc_save</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md45"></a>
Parameters</h2>
<p>None. The function saves the database without any parameters.</p>
<h2><a class="anchor" id="autotoc_md46"></a>
Return Value</h2>
<p>None. The operation runs synchronously and saves the database immediately.</p>
<h2><a class="anchor" id="autotoc_md47"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md48"></a>
Save the database without creating a backup:</h3>
<div class="fragment"><div class="line">[] call dragonfly_db_fnc_save;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md49"></a>
Call the save function remotely from a client:</h3>
<div class="fragment"><div class="line">[] remoteExecCall [&quot;dragonfly_db_fnc_save&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md50"></a>
Notes</h2>
<ul>
<li>This function should be called periodically to ensure data persistence</li>
<li>Saving is a resource-intensive operation, so it shouldn't be called too frequently</li>
<li>Consider saving before mission end or during low-activity periods</li>
</ul>
<h2><a class="anchor" id="autotoc_md51"></a>
Related Functions</h2>
<p>None.</p>
<h2><a class="anchor" id="autotoc_md52"></a>
Links</h2>
<p>None. </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,175 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: get</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d3/dcb/md__g_1_2ids_2dragonfly_2docs_2basic_2get.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">get</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md23"></a>
autotoc_md23</h2>
<p>title: ArmaDragonflyClient - Get Key icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md24"></a>
excerpt: Get the value of stored key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md25"></a>
dragonfly_db_fnc_get</h1>
<h2><a class="anchor" id="autotoc_md26"></a>
Description</h2>
<p>Retrieves the value of a stored key from the database. This function performs an asynchronous request to the database and passes the retrieved data to the specified callback function.</p>
<h2><a class="anchor" id="autotoc_md27"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _function, _call, _netId] call dragonfly_db_fnc_get</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md28"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the stored key to retrieve from the database </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the function to call when data is retrieved </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">(Optional) NetID of the player to whom the data should be returned </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md29"></a>
Return Value</h2>
<p>None. When data is retrieved, it will be passed to the specified function. The operation runs asynchronously.</p>
<h2><a class="anchor" id="autotoc_md30"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md31"></a>
Retrieve data in singleplayer or on the server:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, &quot;dragonfly_db_fnc_test&quot;] call dragonfly_db_fnc_get;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md32"></a>
Retrieve data on the server and send to a specific client:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, &quot;dragonfly_db_fnc_test&quot;, false, netId player] remoteExecCall [&quot;dragonfly_db_fnc_get&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md33"></a>
Notes</h2>
<ul>
<li>The function exit with an error if the key or function parameters are empty</li>
<li>Data is processed through the scheduler system, which manages callback responses</li>
<li>For large data that exceeds buffer limits, it will be automatically chunked and reassembled</li>
<li>The callback function must be defined to accept the retrieved data</li>
<li>The <code>_call</code> parameter determines whether the callback is executed directly or spawned in a separate thread</li>
</ul>
<h2><a class="anchor" id="autotoc_md34"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_set</code>: Stores a value by key</li>
<li><code>dragonfly_db_fnc_delete</code>: Removes a value by key</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback response</li>
</ul>
<h2><a class="anchor" id="autotoc_md35"></a>
Links</h2>
<p><a class="el" href="../../df/d12/md__g_1_2ids_2dragonfly_2docs_2basic_2delete.html">Delete Key</a> | <a class="el" href="../../d3/dcb/md__g_1_2ids_2dragonfly_2docs_2basic_2get.html">Get Key</a> | <a class="el" href="../../d9/d9c/md__g_1_2ids_2dragonfly_2docs_2basic_2set.html">Set Key</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,186 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: listGet</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d3/ddf/md__g_1_2ids_2dragonfly_2docs_2list_2list_get.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">listGet</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md293"></a>
autotoc_md293</h2>
<p>title: ArmaDragonflyClient - List Get icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md294"></a>
excerpt: Get element of list stored at key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md295"></a>
dragonfly_db_fnc_listGet</h1>
<h2><a class="anchor" id="autotoc_md296"></a>
Description</h2>
<p>Retrieves a specific element from a list stored in the database by its index. This function accesses a single item from a list using its position number and returns the data through a callback function. It's useful for accessing individual pieces of data from a sequence without retrieving the entire list.</p>
<h2><a class="anchor" id="autotoc_md297"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _index, _function, _call, _netId] call dragonfly_db_fnc_listGet</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md298"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the list </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_index</code> </td><td class="markdownTableBodyNone">Number </td><td class="markdownTableBodyNone">Index position of the element to retrieve (0-based) </td><td class="markdownTableBodyNone">-1 </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the function to receive the retrieved data </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td><td class="markdownTableBodyNone">false </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">(Optional) NetID of the player to receive the data </td><td class="markdownTableBodyNone">"" </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md299"></a>
Return Value</h2>
<p>None. The retrieved data is passed to the specified callback function asynchronously.</p>
<h2><a class="anchor" id="autotoc_md300"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md301"></a>
Retrieve a specific event log entry:</h3>
<div class="fragment"><div class="line">[&quot;events&quot;, 0, &quot;dragonfly_db_fnc_test&quot;] call dragonfly_db_fnc_listGet;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md302"></a>
Retrieve data with synchronous callback:</h3>
<div class="fragment"><div class="line">[&quot;messages&quot;, 5, &quot;dragonfly_db_fnc_processMessage&quot;, true] call dragonfly_db_fnc_listGet;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md303"></a>
Retrieve data and send it to a specific client:</h3>
<div class="fragment"><div class="line">[&quot;notifications&quot;, 0, &quot;dragonfly_db_fnc_displayNotification&quot;, false, netId player] remoteExecCall [&quot;dragonfly_db_fnc_listGet&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md304"></a>
Notes</h2>
<ul>
<li>Retrieves a single element from a list by its index position</li>
<li>The key, index, and function parameters are required and validated</li>
<li>Index is zero-based (the first element is at index 0)</li>
<li>If the index is out of bounds or the list doesn't exist, no data will be returned</li>
<li>The data is retrieved asynchronously through the extension's callback system</li>
<li>When a netId is provided, the data is sent to that specific client</li>
<li>The <code>_call</code> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</li>
<li>For retrieving multiple elements, use <code>listLoad</code> instead</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md305"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_listAdd</code>: Adds an element to a list</li>
<li><code>dragonfly_db_fnc_listLoad</code>: Retrieves a range of elements from a list</li>
<li><code>dragonfly_db_fnc_listSet</code>: Replaces a specific element in a list</li>
<li><code>dragonfly_db_fnc_listRemove</code>: Removes a specific element from a list</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md306"></a>
Links</h2>
<p><a class="el" href="../../da/d2c/md__g_1_2ids_2dragonfly_2docs_2list_2list_add.html">List Add</a> | <a class="el" href="../../d3/ddf/md__g_1_2ids_2dragonfly_2docs_2list_2list_get.html">List Get</a> | <a class="el" href="../../d9/db3/md__g_1_2ids_2dragonfly_2docs_2list_2list_load.html">List Load</a> | <a class="el" href="../../d1/d22/md__g_1_2ids_2dragonfly_2docs_2list_2list_remove.html">List Remove</a> | <a class="el" href="../../d2/dc5/md__g_1_2ids_2dragonfly_2docs_2list_2list_set.html">List Set</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,180 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: handler</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">handler</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md81"></a>
autotoc_md81</h2>
<p>title: ArmaDragonflyClient - Handler icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md82"></a>
excerpt: Handle data from DB.</h2>
<h1><a class="anchor" id="autotoc_md83"></a>
dragonfly_db_fnc_handler</h1>
<h2><a class="anchor" id="autotoc_md84"></a>
Description</h2>
<p>Handles data received from the database and routes it to the appropriate function. This function is a critical component of the callback system, receiving data from database operations and directing it to the specified function, either locally or to a remote client.</p>
<h2><a class="anchor" id="autotoc_md85"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_uniqueID, _function, _call, _data, _netId] call dragonfly_db_fnc_handler</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md86"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_uniqueID</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Unique identifier for the data chunk </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of function to receive the data </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td><td class="markdownTableBodyNone">false </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_data</code> </td><td class="markdownTableBodyNone">Array, String, Number, or Boolean </td><td class="markdownTableBodyNone">The data retrieved from the database </td><td class="markdownTableBodyNone">[] </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">(Optional) NetID of the player to receive the data </td><td class="markdownTableBodyNone">nil </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md87"></a>
Return Value</h2>
<p>None. The data is passed to the specified function for processing.</p>
<h2><a class="anchor" id="autotoc_md88"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md89"></a>
Process data locally:</h3>
<div class="fragment"><div class="line">[&quot;0123456789&quot;, &quot;dragonfly_db_fnc_test&quot;, false, [&quot;Hello World!&quot;]] call dragonfly_db_fnc_handler;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md90"></a>
Send data to a specific client:</h3>
<div class="fragment"><div class="line">[&quot;0123456789&quot;, &quot;dragonfly_db_fnc_test&quot;, false, [&quot;Hello World!&quot;], netId player] remoteExecCall [&quot;dragonfly_db_fnc_handler&quot;, 2, false];</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md91"></a>
Process data with direct call (synchronous):</h3>
<div class="fragment"><div class="line">[&quot;0123456789&quot;, &quot;dragonfly_db_fnc_processInventory&quot;, true, [[&quot;weapon1&quot;, 30], [&quot;item2&quot;, 5]]] call dragonfly_db_fnc_handler;</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md92"></a>
Notes</h2>
<ul>
<li>The function validates that both the function name and data are valid before proceeding</li>
<li>When a netId is provided, the data is sent to that specific client using remoteExec</li>
<li>The <code>_call</code> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</li>
<li>This function is typically called by the scheduler or other core components rather than directly by user code</li>
<li>Each handler call is logged, which is useful for debugging data flow</li>
</ul>
<h2><a class="anchor" id="autotoc_md93"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes callbacks from the database extension</li>
<li><code>dragonfly_db_fnc_fetch</code>: Assembles data chunks for large datasets</li>
<li><code>dragonfly_db_fnc_addTask</code>: Adds tasks to the database operation queue</li>
</ul>
<h2><a class="anchor" id="autotoc_md94"></a>
Links</h2>
<p><a class="el" href="../../dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html">Add Task</a> | <a class="el" href="../../d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html">Handler</a> | <a class="el" href="../../dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html">Init</a> | <a class="el" href="../../d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html">Print Addon Name</a> | <a class="el" href="../../d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html">Process Queue</a> | <a class="el" href="../../d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html">Scheduler</a> | <a class="el" href="../../d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html">Test</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,163 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: printAddonName</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">printAddonName</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md106"></a>
autotoc_md106</h2>
<p>title: ArmaDragonflyClient - Print Addon Name icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md107"></a>
excerpt: Displays the addon name in system chat.</h2>
<h1><a class="anchor" id="autotoc_md108"></a>
dragonfly_db_fnc_printAddonName</h1>
<h2><a class="anchor" id="autotoc_md109"></a>
Description</h2>
<p>Displays a thank you message with the addon name in the system chat. This is a simple utility function that can be used to acknowledge the use of the framework or to verify that the addon is properly loaded.</p>
<h2><a class="anchor" id="autotoc_md110"></a>
Syntax</h2>
<div class="fragment"><div class="line">[] call dragonfly_db_fnc_printAddonName</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md111"></a>
Parameters</h2>
<p>None. This function does not require any parameters.</p>
<h2><a class="anchor" id="autotoc_md112"></a>
Return Value</h2>
<p>None. The function outputs a message to the system chat.</p>
<h2><a class="anchor" id="autotoc_md113"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md114"></a>
Display the addon name message:</h3>
<div class="fragment"><div class="line">[] call dragonfly_db_fnc_printAddonName;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md115"></a>
Use in a welcome script:</h3>
<div class="fragment"><div class="line">if (isServer) then {</div>
<div class="line"> [] remoteExec [&quot;dragonfly_db_fnc_printAddonName&quot;, 0, true];</div>
<div class="line">};</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md116"></a>
Notes</h2>
<ul>
<li>The function uses the ADDON macro defined in script_component.hpp</li>
<li>This displays a message directly in the player's system chat</li>
<li>Can be useful as a quick verification that the addon is loaded correctly</li>
<li>Often used during development or for first-time users</li>
</ul>
<h2><a class="anchor" id="autotoc_md117"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_init</code>: Initializes the database system</li>
</ul>
<h2><a class="anchor" id="autotoc_md118"></a>
Links</h2>
<p><a class="el" href="../../dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html">Add Task</a> | <a class="el" href="../../d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html">Handler</a> | <a class="el" href="../../dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html">Init</a> | <a class="el" href="../../d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html">Print Addon Name</a> | <a class="el" href="../../d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html">Process Queue</a> | <a class="el" href="../../d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html">Scheduler</a> | <a class="el" href="../../d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html">Test</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,175 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: fetch</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d4/d99/md__g_1_2ids_2dragonfly_2docs_2basic_2fetch.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">fetch</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md13"></a>
autotoc_md13</h2>
<p>title: ArmaDragonflyClient - Fetch icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md14"></a>
excerpt: Handles data chunks received from the database extension when data is too large to be returned in a single callback.</h2>
<h1><a class="anchor" id="autotoc_md15"></a>
dragonfly_db_fnc_fetch</h1>
<h2><a class="anchor" id="autotoc_md16"></a>
Description</h2>
<p>Handles data chunks received from the database extension when data is too large to be returned in a single callback. This function collects all chunks of data, reassembles them in the correct order, and then passes the complete data to the handler function.</p>
<h2><a class="anchor" id="autotoc_md17"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_uniqueID, _function, _index, _total, _datachunk, _call, _netId] call dragonfly_db_fnc_fetch</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md18"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_uniqueID</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Unique identifier for this data fetch operation </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the function to call after data is assembled </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_index</code> </td><td class="markdownTableBodyNone">Number </td><td class="markdownTableBodyNone">Current chunk index (0-based) </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_total</code> </td><td class="markdownTableBodyNone">Number </td><td class="markdownTableBodyNone">Total number of chunks expected </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_datachunk</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">The chunk of data being received </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">(Optional) NetID of the player to whom the data belongs </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md19"></a>
Return Value</h2>
<p>None. When all chunks are received, the function will:</p><ol type="1">
<li>Assemble the complete data string</li>
<li>Parse it as a simple array</li>
<li>Call the specified handler function with the parsed data</li>
</ol>
<h2><a class="anchor" id="autotoc_md20"></a>
Examples</h2>
<p>This function is typically not called directly but is triggered by the extension's callback mechanism when large datasets are retrieved.</p>
<h2><a class="anchor" id="autotoc_md21"></a>
Notes</h2>
<ul>
<li>The function stores received chunks in the global array <code>dragonfly_db_fetch_array</code></li>
<li>Chunks are sorted by their index to ensure correct assembly regardless of arrival order</li>
<li>After successful processing, the chunks for this uniqueID are removed from the array</li>
<li>This function is essential for handling large datasets that exceed the callback buffer limit</li>
</ul>
<h2><a class="anchor" id="autotoc_md22"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_handler</code>: Receives the assembled data and routes it to the appropriate function</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Manages the callback queue and triggers data fetching </li>
</ul>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,181 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: hashSetId</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">hashSetId</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md247"></a>
autotoc_md247</h2>
<p>title: ArmaDragonflyClient - Hash Set ID icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md248"></a>
excerpt: Set the specified field to the respective value in the hash stored at key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md249"></a>
dragonfly_db_fnc_hashSetId</h1>
<h2><a class="anchor" id="autotoc_md250"></a>
Description</h2>
<p>Sets the value of a specified field in a specific hash table identified by its key. This function allows storing various data types (arrays, strings, numbers, or booleans) in a targeted hash table, making it ideal for player-specific or entity-specific data storage. It provides a way to organize related data under a common identifier.</p>
<h2><a class="anchor" id="autotoc_md251"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _keyField, _data] call dragonfly_db_fnc_hashSetId</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md252"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Identifier of the hash table </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_keyField</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the field in the hash to set </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_data</code> </td><td class="markdownTableBodyNone">Array, String, Number, or Boolean </td><td class="markdownTableBodyNone">The value to store in the hash field </td><td class="markdownTableBodyNone">[] </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md253"></a>
Return Value</h2>
<p>None. The operation runs synchronously to store the data.</p>
<h2><a class="anchor" id="autotoc_md254"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md255"></a>
Store a player's loadout under their UID:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, &quot;loadout&quot;, [getUnitLoadout player]] call dragonfly_db_fnc_hashSetId;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md256"></a>
Store vehicle data:</h3>
<div class="fragment"><div class="line">[&quot;vehicle_123&quot;, &quot;status&quot;, [true, 100, 75, &quot;active&quot;]] call dragonfly_db_fnc_hashSetId;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md257"></a>
Store player data from a client:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, &quot;stats&quot;, [rank player, score player, name player]] remoteExecCall [&quot;dragonfly_db_fnc_hashSetId&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md258"></a>
Notes</h2>
<ul>
<li>Stores a single field-value pair in a specific hash table identified by <code>_key</code></li>
<li>All three parameters (key, keyField, and data) are required and validated</li>
<li>If the hash table doesn't exist, it will be created automatically</li>
<li>If the field already exists in the hash table, its value will be overwritten</li>
<li>Supports various data types: arrays, strings, numbers, and booleans</li>
<li>Player UIDs are commonly used as keys to store player-specific data</li>
<li>Complex data structures should be serialized into arrays</li>
<li>The operation is executed immediately and synchronously</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md259"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_hashSet</code>: Sets a field value in the global hash table</li>
<li><code>dragonfly_db_fnc_hashGetId</code>: Retrieves a field value from a specific hash table</li>
<li><code>dragonfly_db_fnc_hashGetAllId</code>: Retrieves all fields from a specific hash table</li>
<li><code>dragonfly_db_fnc_hashSetIdBulk</code>: Sets multiple field-value pairs in multiple hash tables</li>
</ul>
<h2><a class="anchor" id="autotoc_md260"></a>
Links</h2>
<p><a class="el" href="../../d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">Hash Get</a> | <a class="el" href="../../da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">Hash Get All</a> | <a class="el" href="../../d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">Hash Get All ID</a> | <a class="el" href="../../d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">Hash Get ID</a> | <a class="el" href="../../d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">Hash Set</a> | <a class="el" href="../../da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">Hash Set Bulk</a> | <a class="el" href="../../d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">Hash Set ID</a> | <a class="el" href="../../de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">Hash Set ID Bulk</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,173 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: test</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">test</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md149"></a>
autotoc_md149</h2>
<p>title: ArmaDragonflyClient - Test icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md150"></a>
excerpt: Test Function.</h2>
<h1><a class="anchor" id="autotoc_md151"></a>
dragonfly_db_fnc_test</h1>
<h2><a class="anchor" id="autotoc_md152"></a>
Description</h2>
<p>A simple test function for verifying database operations. This function displays the received data in a hint message and logs it to the RPT file. It's primarily used for testing database retrieval operations and callback functionality.</p>
<h2><a class="anchor" id="autotoc_md153"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_value] spawn dragonfly_db_fnc_test</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md154"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_value</code> </td><td class="markdownTableBodyNone">Array, String, Number, or Boolean </td><td class="markdownTableBodyNone">The value to display and log </td><td class="markdownTableBodyNone">[] </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md155"></a>
Return Value</h2>
<p>The same value that was passed to the function. Also sets the global variable <code>dragonfly_db_test</code> to this value.</p>
<h2><a class="anchor" id="autotoc_md156"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md157"></a>
Test with a simple string:</h3>
<div class="fragment"><div class="line">[&quot;Hello World!&quot;] spawn dragonfly_db_fnc_test;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md158"></a>
Test database retrieval by specifying this as callback function:</h3>
<div class="fragment"><div class="line">[&quot;playerStats&quot;, &quot;dragonfly_db_fnc_test&quot;] call dragonfly_db_fnc_get;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md159"></a>
Test from client to server:</h3>
<div class="fragment"><div class="line">[&quot;Database is working!&quot;] remoteExec [&quot;dragonfly_db_fnc_test&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md160"></a>
Notes</h2>
<ul>
<li>Displays the received value using <code>hint</code></li>
<li>Logs the same value to the RPT file</li>
<li>Stores the value in the global variable <code>dragonfly_db_test</code> for later inspection</li>
<li>Commonly used as a callback function for database operations</li>
<li>Useful for debugging and verifying data flow</li>
<li>Can be called directly or specified as a callback in other functions</li>
</ul>
<h2><a class="anchor" id="autotoc_md161"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_get</code>: Retrieves values from the database</li>
<li><code>dragonfly_db_fnc_handler</code>: Routes data to callback functions</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Manages the callback system</li>
</ul>
<h2><a class="anchor" id="autotoc_md162"></a>
Links</h2>
<p><a class="el" href="../../dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html">Add Task</a> | <a class="el" href="../../d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html">Handler</a> | <a class="el" href="../../dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html">Init</a> | <a class="el" href="../../d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html">Print Addon Name</a> | <a class="el" href="../../d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html">Process Queue</a> | <a class="el" href="../../d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html">Scheduler</a> | <a class="el" href="../../d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html">Test</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,174 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: set</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d9/d9c/md__g_1_2ids_2dragonfly_2docs_2basic_2set.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">set</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md53"></a>
autotoc_md53</h2>
<p>title: ArmaDragonflyClient - Set Key icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md54"></a>
excerpt: Set the value of stored key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md55"></a>
dragonfly_db_fnc_set</h1>
<h2><a class="anchor" id="autotoc_md56"></a>
Description</h2>
<p>Stores a value in the database with the specified key. This function allows saving various data types (arrays, strings, numbers, or booleans) that can be retrieved later using the key.</p>
<h2><a class="anchor" id="autotoc_md57"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _data] call dragonfly_db_fnc_set</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md58"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the key to store the data under </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_data</code> </td><td class="markdownTableBodyNone">Array, String, Number, or Boolean </td><td class="markdownTableBodyNone">The value to store in the database </td><td class="markdownTableBodyNone">[] </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md59"></a>
Return Value</h2>
<p>None. The operation runs asynchronously.</p>
<h2><a class="anchor" id="autotoc_md60"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md61"></a>
Store a simple array:</h3>
<div class="fragment"><div class="line">[&quot;playerInventory&quot;, [&quot;item1&quot;, &quot;item2&quot;, &quot;item3&quot;]] call dragonfly_db_fnc_set;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md62"></a>
Store player data under their UID:</h3>
<div class="fragment"><div class="line">[getPlayerUID player, [name player, getPos player, getAllGear player]] call dragonfly_db_fnc_set;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md63"></a>
Call the set function remotely from a client:</h3>
<div class="fragment"><div class="line">[&quot;serverSetting&quot;, [true, 30, &quot;normal&quot;]] remoteExecCall [&quot;dragonfly_db_fnc_set&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md64"></a>
Notes</h2>
<ul>
<li>The function validates both the key and data before attempting to store</li>
<li>If the key already exists, its value will be overwritten</li>
<li>Complex data structures should be serialized into arrays</li>
<li>There are no size limits for data, but extremely large values might impact performance</li>
<li>For structured data, consider using hash tables instead of key-value pairs</li>
</ul>
<h2><a class="anchor" id="autotoc_md65"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_get</code>: Retrieves a value by key</li>
<li><code>dragonfly_db_fnc_delete</code>: Removes a value by key</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback response</li>
</ul>
<h2><a class="anchor" id="autotoc_md66"></a>
Links</h2>
<p><a class="el" href="../../df/d12/md__g_1_2ids_2dragonfly_2docs_2basic_2delete.html">Delete Key</a> | <a class="el" href="../../d3/dcb/md__g_1_2ids_2dragonfly_2docs_2basic_2get.html">Get Key</a> | <a class="el" href="../../d9/d9c/md__g_1_2ids_2dragonfly_2docs_2basic_2set.html">Set Key</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,176 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: listLoad</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d9/db3/md__g_1_2ids_2dragonfly_2docs_2list_2list_load.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">listLoad</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md307"></a>
autotoc_md307</h2>
<p>title: ArmaDragonflyClient - List Load icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md308"></a>
excerpt: Get all elements of a list stored at a key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md309"></a>
dragonfly_db_fnc_listLoad</h1>
<h2><a class="anchor" id="autotoc_md310"></a>
Description</h2>
<p>Retrieves all elements of a list stored at a specified key from the DragonflyClient database. This function is useful when you need to access the complete list data rather than individual elements, allowing operations on the entire dataset. The retrieved data is passed to a callback function for processing.</p>
<h2><a class="anchor" id="autotoc_md311"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _function, _call, _netId] call dragonfly_db_fnc_listLoad</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md312"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">_key </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">The key identifying the list to be retrieved </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">_function </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">The name of the function that will receive the retrieved data </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone">_call </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function in an unscheduled environment </td><td class="markdownTableBodyNone">false </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone">_netId </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">The NetID of the target to return data from the function (multiplayer only) </td><td class="markdownTableBodyNone">"" </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md313"></a>
Return Value</h2>
<p>No value is returned directly. The retrieved list data is passed to the specified callback function asynchronously.</p>
<h2><a class="anchor" id="autotoc_md314"></a>
Examples</h2>
<p><b>Retrieve all event logs:</b> </p><div class="fragment"><div class="line">[&quot;events&quot;, &quot;myProject_fnc_processEventLogs&quot;] call dragonfly_db_fnc_listLoad;</div>
</div><!-- fragment --><p><b>Retrieve a player list with synchronous callback:</b> </p><div class="fragment"><div class="line">[&quot;playerList&quot;, &quot;myProject_fnc_processPlayerList&quot;, true] call dragonfly_db_fnc_listLoad;</div>
</div><!-- fragment --><p><b>Send mission data to a specific client:</b> </p><div class="fragment"><div class="line">[&quot;missionData&quot;, &quot;myProject_fnc_processMissionData&quot;, false, netId player] remoteExecCall [&quot;dragonfly_db_fnc_listLoad&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md315"></a>
Notes</h2>
<ul>
<li>This function retrieves the entire list stored at the specified key, making it useful when you need to process multiple elements together.</li>
<li>Both the <code>_key</code> and <code>_function</code> parameters are required. The function will exit without action if either is empty.</li>
<li>The retrieved data is processed asynchronously through the scheduler system and passed to the specified callback function.</li>
<li>For multiplayer scenarios, you can specify a target client using the <code>_netId</code> parameter to send the retrieved data to that specific client.</li>
<li>The <code>_call</code> parameter determines whether the callback function is executed in an unscheduled environment (true) or scheduled environment (false).</li>
<li>This function uses the underlying "listrng" extension with a range from 0 to -1, which retrieves all elements in the list.</li>
<li>All list operations are logged for debugging purposes.</li>
</ul>
<h2><a class="anchor" id="autotoc_md316"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_listAdd</code>: Adds an element to a list</li>
<li><code>dragonfly_db_fnc_listGet</code>: Retrieves a specific element from a list</li>
<li><code>dragonfly_db_fnc_listSet</code>: Replaces a specific element in a list</li>
<li><code>dragonfly_db_fnc_listRemove</code>: Removes a specific element from a list</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md317"></a>
Links</h2>
<p><a class="el" href="../../da/d2c/md__g_1_2ids_2dragonfly_2docs_2list_2list_add.html">List Add</a> | <a class="el" href="../../d3/ddf/md__g_1_2ids_2dragonfly_2docs_2list_2list_get.html">List Get</a> | <a class="el" href="../../d9/db3/md__g_1_2ids_2dragonfly_2docs_2list_2list_load.html">List Load</a> | <a class="el" href="../../d1/d22/md__g_1_2ids_2dragonfly_2docs_2list_2list_remove.html">List Remove</a> | <a class="el" href="../../d2/dc5/md__g_1_2ids_2dragonfly_2docs_2list_2list_set.html">List Set</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,184 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: hashGet</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">hashGet</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md163"></a>
autotoc_md163</h2>
<p>title: ArmaDragonflyClient - Hash Get icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md164"></a>
excerpt: Get a field value from the current client's hash table in DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md165"></a>
dragonfly_db_fnc_hashGet</h1>
<h2><a class="anchor" id="autotoc_md166"></a>
Description</h2>
<p>Retrieves the value associated with a specific field in the hash table of the current client/player. This function automatically determines the appropriate hash ID based on the caller's identity, making it more convenient than <code>hashGetId</code> which requires manually specifying an ID. It accesses hash data asynchronously and returns the result through a callback function.</p>
<h2><a class="anchor" id="autotoc_md167"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_keyField, _function, _call, _netId] call dragonfly_db_fnc_hashGet</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md168"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_keyField</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the field in the hash to retrieve </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the function to receive the retrieved data </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td><td class="markdownTableBodyNone">false </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">(Optional) NetID of the player to receive the data </td><td class="markdownTableBodyNone">"" </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md169"></a>
Return Value</h2>
<p>None. The retrieved data is passed to the specified callback function asynchronously.</p>
<h2><a class="anchor" id="autotoc_md170"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md171"></a>
Retrieve a player's loadout:</h3>
<div class="fragment"><div class="line">[&quot;loadout&quot;, &quot;dragonfly_db_fnc_test&quot;] call dragonfly_db_fnc_hashGet;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md172"></a>
Retrieve data with synchronous callback:</h3>
<div class="fragment"><div class="line">[&quot;playerScore&quot;, &quot;dragonfly_db_fnc_processScore&quot;, true] call dragonfly_db_fnc_hashGet;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md173"></a>
Retrieve data and send it to a specific client:</h3>
<div class="fragment"><div class="line">[&quot;loadout&quot;, &quot;dragonfly_db_fnc_test&quot;, false, netId player] remoteExecCall [&quot;dragonfly_db_fnc_hashGet&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md174"></a>
Notes</h2>
<ul>
<li>Retrieves a value from the current client's hash table</li>
<li>The data is retrieved asynchronously through the extension's callback system</li>
<li>Both the field name and callback function name must be provided</li>
<li>Input validation ensures both required parameters are non-empty</li>
<li>When a netId is provided, the data is sent to that specific client</li>
<li>The <code>_call</code> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</li>
<li>This function automatically determines which hash table to use based on the caller's identity</li>
<li>Use <code>hashGetId</code> when you need to specify a particular hash table by ID</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md175"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_hashGetId</code>: Retrieves a field value from a specific hash table (when you need to specify the ID)</li>
<li><code>dragonfly_db_fnc_hashGetAll</code>: Retrieves all fields from the current client's hash table</li>
<li><code>dragonfly_db_fnc_hashGetAllId</code>: Retrieves all fields from a specific hash table</li>
<li><code>dragonfly_db_fnc_hashSet</code>: Sets a field value in the current client's hash table</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md176"></a>
Links</h2>
<p><a class="el" href="../../d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">Hash Get</a> | <a class="el" href="../../da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">Hash Get All</a> | <a class="el" href="../../d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">Hash Get All ID</a> | <a class="el" href="../../d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">Hash Get ID</a> | <a class="el" href="../../d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">Hash Set</a> | <a class="el" href="../../da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">Hash Set Bulk</a> | <a class="el" href="../../d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">Hash Set ID</a> | <a class="el" href="../../de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">Hash Set ID Bulk</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,182 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: hashGetAll</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">hashGetAll</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md177"></a>
autotoc_md177</h2>
<p>title: ArmaDragonflyClient - Hash Get All icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md178"></a>
excerpt: Get all fields from the current client's hash table in DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md179"></a>
dragonfly_db_fnc_hashGetAll</h1>
<h2><a class="anchor" id="autotoc_md180"></a>
Description</h2>
<p>Retrieves all fields and values from the hash table associated with the current client/player. This function automatically determines the appropriate hash ID based on the caller's identity, making it more convenient than <code>hashGetAllId</code> which requires manually specifying an ID. It returns the entire hash table data through a callback function, allowing access to all stored key-value pairs at once.</p>
<h2><a class="anchor" id="autotoc_md181"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_function, _call, _netId] call dragonfly_db_fnc_hashGetAll</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md182"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the function to receive the retrieved data </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td><td class="markdownTableBodyNone">false </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">(Optional) NetID of the player to receive the data </td><td class="markdownTableBodyNone">"" </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md183"></a>
Return Value</h2>
<p>None. The retrieved data is passed to the specified callback function asynchronously.</p>
<h2><a class="anchor" id="autotoc_md184"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md185"></a>
Retrieve all client hash data:</h3>
<div class="fragment"><div class="line">[&quot;dragonfly_db_fnc_test&quot;] call dragonfly_db_fnc_hashGetAll;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md186"></a>
Retrieve data with synchronous callback:</h3>
<div class="fragment"><div class="line">[&quot;dragonfly_db_fnc_processAllData&quot;, true] call dragonfly_db_fnc_hashGetAll;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md187"></a>
Retrieve data and send it to a specific client:</h3>
<div class="fragment"><div class="line">[&quot;dragonfly_db_fnc_test&quot;, false, netId player] remoteExecCall [&quot;dragonfly_db_fnc_hashGetAll&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md188"></a>
Notes</h2>
<ul>
<li>Returns the complete hash table for the current client with all fields and values as a nested array</li>
<li>The data is retrieved asynchronously through the extension's callback system</li>
<li>The callback function name must be provided and is validated</li>
<li>When a netId is provided, the data is sent to that specific client</li>
<li>The <code>_call</code> parameter determines whether the function is called directly (synchronous) or spawned (asynchronous)</li>
<li>This function automatically determines which hash table to use based on the caller's identity</li>
<li>Use <code>hashGetAllId</code> when you need to specify a particular hash table by ID</li>
<li>For large hash tables, retrieving all data may impact performance</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md189"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_hashGet</code>: Retrieves a specific field value from the current client's hash table</li>
<li><code>dragonfly_db_fnc_hashGetId</code>: Retrieves a specific field value from a specific hash table (when you need to specify the ID)</li>
<li><code>dragonfly_db_fnc_hashGetAllId</code>: Retrieves all fields from a specific hash table (when you need to specify the ID)</li>
<li><code>dragonfly_db_fnc_hashSet</code>: Sets a field value in the current client's hash table</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md190"></a>
Links</h2>
<p><a class="el" href="../../d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">Hash Get</a> | <a class="el" href="../../da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">Hash Get All</a> | <a class="el" href="../../d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">Hash Get All ID</a> | <a class="el" href="../../d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">Hash Get ID</a> | <a class="el" href="../../d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">Hash Set</a> | <a class="el" href="../../da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">Hash Set Bulk</a> | <a class="el" href="../../d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">Hash Set ID</a> | <a class="el" href="../../de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">Hash Set ID Bulk</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,179 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: listAdd</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('da/d2c/md__g_1_2ids_2dragonfly_2docs_2list_2list_add.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">listAdd</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md279"></a>
autotoc_md279</h2>
<p>title: ArmaDragonflyClient - List Add icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md280"></a>
excerpt: Add element to list stored at key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md281"></a>
dragonfly_db_fnc_listAdd</h1>
<h2><a class="anchor" id="autotoc_md282"></a>
Description</h2>
<p>Adds an element to a list stored in the database under the specified key. This function appends values to an existing list or creates a new list if it doesn't exist. It's particularly useful for logging, event tracking, or maintaining collections of data that grow over time.</p>
<h2><a class="anchor" id="autotoc_md283"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key, _data] call dragonfly_db_fnc_listAdd</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md284"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the list to add the element to </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_data</code> </td><td class="markdownTableBodyNone">Array, String, Number, or Boolean </td><td class="markdownTableBodyNone">The value to insert into the list </td><td class="markdownTableBodyNone">[] </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md285"></a>
Return Value</h2>
<p>None. The operation runs synchronously to add the element to the list.</p>
<h2><a class="anchor" id="autotoc_md286"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md287"></a>
Add an event log entry:</h3>
<div class="fragment"><div class="line">[&quot;events&quot;, [&quot;Server state saved to DB &quot; + systemTimeUTC]] call dragonfly_db_fnc_listAdd;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md288"></a>
Add a player message:</h3>
<div class="fragment"><div class="line">[&quot;messages&quot;, [name player + &quot;: &quot; + _messageText]] call dragonfly_db_fnc_listAdd;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md289"></a>
Add data from a client:</h3>
<div class="fragment"><div class="line">[&quot;playerActions&quot;, [getPlayerUID player, name player, &quot;logged in&quot;]] remoteExecCall [&quot;dragonfly_db_fnc_listAdd&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md290"></a>
Notes</h2>
<ul>
<li>Elements are added to the end of the list in the order they are inserted</li>
<li>If the list doesn't exist, it will be created automatically</li>
<li>Both the key and data parameters are required and validated</li>
<li>Lists can store various data types (arrays, strings, numbers, or booleans)</li>
<li>Useful for maintaining a history of events, logs, or sequential data</li>
<li>The operation is executed immediately and synchronously</li>
<li>New elements are always added to the end of the list</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md291"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_listGet</code>: Retrieves a specific element from a list</li>
<li><code>dragonfly_db_fnc_listLoad</code>: Retrieves a range of elements from a list</li>
<li><code>dragonfly_db_fnc_listSet</code>: Replaces a specific element in a list</li>
<li><code>dragonfly_db_fnc_listRemove</code>: Removes a specific element from a list</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback from the database extension</li>
</ul>
<h2><a class="anchor" id="autotoc_md292"></a>
Links</h2>
<p><a class="el" href="../../da/d2c/md__g_1_2ids_2dragonfly_2docs_2list_2list_add.html">List Add</a> | <a class="el" href="../../d3/ddf/md__g_1_2ids_2dragonfly_2docs_2list_2list_get.html">List Get</a> | <a class="el" href="../../d9/db3/md__g_1_2ids_2dragonfly_2docs_2list_2list_load.html">List Load</a> | <a class="el" href="../../d1/d22/md__g_1_2ids_2dragonfly_2docs_2list_2list_remove.html">List Remove</a> | <a class="el" href="../../d2/dc5/md__g_1_2ids_2dragonfly_2docs_2list_2list_set.html">List Set</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,178 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: hashSetBulk</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">hashSetBulk</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md233"></a>
autotoc_md233</h2>
<p>title: ArmaDragonflyClient - Hash Set Bulk icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md234"></a>
excerpt: Set multiple fields in the current client's hash table in DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md235"></a>
dragonfly_db_fnc_hashSetBulk</h1>
<h2><a class="anchor" id="autotoc_md236"></a>
Description</h2>
<p>Sets multiple field-value pairs in the hash table associated with the current client/player in a single operation. This function automatically determines the appropriate hash ID based on the caller's identity, making it more convenient than <code>hashSetIdBulk</code> which requires manually specifying an ID. It allows efficiently storing multiple related fields at once, reducing the number of separate database calls required.</p>
<h2><a class="anchor" id="autotoc_md237"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_data] call dragonfly_db_fnc_hashSetBulk</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md238"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_data</code> </td><td class="markdownTableBodyNone">Array </td><td class="markdownTableBodyNone">Array of alternating field names and values to store </td><td class="markdownTableBodyNone">[] </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md239"></a>
Return Value</h2>
<p>None. The operation runs synchronously to store all the data.</p>
<h2><a class="anchor" id="autotoc_md240"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md241"></a>
Store player loadout and position:</h3>
<div class="fragment"><div class="line">[[&quot;loadout&quot;, [getUnitLoadout player], &quot;position&quot;, [getPosASLVisual player]]] call dragonfly_db_fnc_hashSetBulk;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md242"></a>
Store multiple player settings:</h3>
<div class="fragment"><div class="line">[[&quot;difficulty&quot;, [&quot;regular&quot;], &quot;respawn&quot;, [true], &quot;tickets&quot;, [500]]] call dragonfly_db_fnc_hashSetBulk;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md243"></a>
Store player data from a client:</h3>
<div class="fragment"><div class="line">[[&quot;name&quot;, [name player], &quot;uid&quot;, [getPlayerUID player], &quot;score&quot;, [score player]]] remoteExecCall [&quot;dragonfly_db_fnc_hashSetBulk&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md244"></a>
Notes</h2>
<ul>
<li>The data array must be structured as alternating field names and values: <code>[field1, value1, field2, value2, ...]</code></li>
<li>Each field name must be a string</li>
<li>Values can be arrays, strings, numbers, or booleans</li>
<li>All field-value pairs are stored in a single database operation</li>
<li>If any of the fields already exist, their values will be overwritten</li>
<li>This function automatically determines which hash table to use based on the caller's identity</li>
<li>Use <code>hashSetIdBulk</code> when you need to specify a particular hash table by ID</li>
<li>More efficient than multiple individual <code>hashSet</code> calls when setting several fields</li>
<li>The operation is executed immediately and synchronously</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md245"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_hashSet</code>: Sets a single field value in the current client's hash table</li>
<li><code>dragonfly_db_fnc_hashSetIdBulk</code>: Sets multiple field-value pairs in a specific hash table (when you need to specify the ID)</li>
<li><code>dragonfly_db_fnc_hashGetAll</code>: Retrieves all fields from the current client's hash table</li>
<li><code>dragonfly_db_fnc_hashGet</code>: Retrieves a specific field value from the current client's hash table </li>
</ul>
<h2><a class="anchor" id="autotoc_md246"></a>
Links</h2>
<p><a class="el" href="../../d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">Hash Get</a> | <a class="el" href="../../da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">Hash Get All</a> | <a class="el" href="../../d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">Hash Get All ID</a> | <a class="el" href="../../d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">Hash Get ID</a> | <a class="el" href="../../d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">Hash Set</a> | <a class="el" href="../../da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">Hash Set Bulk</a> | <a class="el" href="../../d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">Hash Set ID</a> | <a class="el" href="../../de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">Hash Set ID Bulk</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,157 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: init</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">init</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md95"></a>
autotoc_md95</h2>
<p>title: ArmaDragonflyClient - Initialization icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md96"></a>
excerpt: Initial Extension settings.</h2>
<h1><a class="anchor" id="autotoc_md97"></a>
dragonfly_db_fnc_init</h1>
<h2><a class="anchor" id="autotoc_md98"></a>
Description</h2>
<p>Initializes the ArmaDragonflyClient extension and sets up the initial settings. This function loads the extension, checks its version, sets the buffer size, and logs the initialization status. It is automatically called during mission startup.</p>
<h2><a class="anchor" id="autotoc_md99"></a>
Syntax</h2>
<div class="fragment"><div class="line">// This function is automatically called during initialization and doesn&#39;t need to be called directly</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md100"></a>
Parameters</h2>
<p>None. This function does not require any parameters.</p>
<h2><a class="anchor" id="autotoc_md101"></a>
Return Value</h2>
<p>None. The function sets up internal variables and logs initialization information.</p>
<h2><a class="anchor" id="autotoc_md102"></a>
Examples</h2>
<p>This function is automatically executed during framework initialization and doesn't need to be called manually.</p>
<h2><a class="anchor" id="autotoc_md103"></a>
Notes</h2>
<ul>
<li>Sets the global buffer size to 10240 bytes (10KB)</li>
<li>Logs the DLL version number for reference</li>
<li>Confirms successful loading of all functions</li>
<li>Outputs initialization status to the RPT logs</li>
<li>This is one of the first functions called when the framework loads</li>
</ul>
<h2><a class="anchor" id="autotoc_md104"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_save</code>: Saves database data to disk</li>
</ul>
<h2><a class="anchor" id="autotoc_md105"></a>
Links</h2>
<p><a class="el" href="../../dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html">Add Task</a> | <a class="el" href="../../d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html">Handler</a> | <a class="el" href="../../dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html">Init</a> | <a class="el" href="../../d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html">Print Addon Name</a> | <a class="el" href="../../d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html">Process Queue</a> | <a class="el" href="../../d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html">Scheduler</a> | <a class="el" href="../../d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html">Test</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,186 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: addTask</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">addTask</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md67"></a>
autotoc_md67</h2>
<p>title: ArmaDragonflyClient - Add Task icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md68"></a>
excerpt: Add task to queue.</h2>
<h1><a class="anchor" id="autotoc_md69"></a>
dragonfly_db_fnc_addTask</h1>
<h2><a class="anchor" id="autotoc_md70"></a>
Description</h2>
<p>Adds a task to the database operation queue. This function is used to schedule database operations that can be processed sequentially, providing a way to manage multiple database requests in an organized manner.</p>
<h2><a class="anchor" id="autotoc_md71"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_taskType, _key, _keyField, _index, _value, _function, _call, _netId] call dragonfly_db_fnc_addTask</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md72"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_taskType</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Type of operation to perform (e.g., "hgetall") </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the stored key </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_keyField</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Field name for hash operations </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_index</code> </td><td class="markdownTableBodyNone">Number </td><td class="markdownTableBodyNone">Index for list operations </td><td class="markdownTableBodyNone">-1 </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_value</code> </td><td class="markdownTableBodyNone">Array, String, Number, or Boolean </td><td class="markdownTableBodyNone">Value to store (for set operations) </td><td class="markdownTableBodyNone">[] </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_function</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of function to call with the result </td><td class="markdownTableBodyNone">"" </td></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_call</code> </td><td class="markdownTableBodyNone">Boolean </td><td class="markdownTableBodyNone">Whether to call the function directly (true) or spawn (false) </td><td class="markdownTableBodyNone">false </td></tr>
<tr class="markdownTableRowEven">
<td class="markdownTableBodyNone"><code>_netId</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">NetID of the target to receive the result </td><td class="markdownTableBodyNone">"" </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md73"></a>
Return Value</h2>
<p>None. The task is added to the queue and processed asynchronously.</p>
<h2><a class="anchor" id="autotoc_md74"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md75"></a>
Add a hash table retrieval task:</h3>
<div class="fragment"><div class="line">[&quot;hgetall&quot;, &quot;&quot;, &quot;&quot;, -1, [], &quot;dragonfly_db_fnc_test&quot;] call dragonfly_db_fnc_addTask;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md76"></a>
Add a player-specific task that returns data to a specific client:</h3>
<div class="fragment"><div class="line">[&quot;hgetallid&quot;, getPlayerUID player, &quot;&quot;, -1, [], &quot;dragonfly_db_fnc_test&quot;, false, netId player] remoteExecCall [&quot;dragonfly_db_fnc_addTask&quot;, 2, false];</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md77"></a>
Add a list operation task:</h3>
<div class="fragment"><div class="line">[&quot;listadd&quot;, &quot;playerMessages&quot;, &quot;&quot;, -1, [&quot;New message content&quot;], &quot;&quot;] call dragonfly_db_fnc_addTask;</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md78"></a>
Notes</h2>
<ul>
<li>Tasks are processed in the order they are added to the queue</li>
<li>If the queue is not currently being processed, this function will start the processing</li>
<li>The task type determines which database operation will be performed</li>
<li>This function is particularly useful for scheduling multiple related operations</li>
<li>All operations performed through the task queue are logged for debugging</li>
</ul>
<h2><a class="anchor" id="autotoc_md79"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_processQueue</code>: Processes the pending tasks in the queue</li>
<li><code>dragonfly_db_fnc_handler</code>: Handles the results of completed database operations</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Manages callback responses from the database</li>
</ul>
<h2><a class="anchor" id="autotoc_md80"></a>
Links</h2>
<p><a class="el" href="../../dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html">Add Task</a> | <a class="el" href="../../d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html">Handler</a> | <a class="el" href="../../dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html">Init</a> | <a class="el" href="../../d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html">Print Addon Name</a> | <a class="el" href="../../d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html">Process Queue</a> | <a class="el" href="../../d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html">Scheduler</a> | <a class="el" href="../../d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html">Test</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,179 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: hashSetIdBulk</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">hashSetIdBulk</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md261"></a>
autotoc_md261</h2>
<p>title: ArmaDragonflyClient - Hash Set ID Bulk icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md262"></a>
excerpt: Set the specified fields to their respective values in the hash stored at key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md263"></a>
dragonfly_db_fnc_hashSetIdBulk</h1>
<h2><a class="anchor" id="autotoc_md264"></a>
Description</h2>
<p>Sets multiple field-value pairs in a specific hash table identified by its key in a single operation. This function allows efficiently storing multiple related fields at once for a specific identifier, reducing the number of separate database calls required. It's ideal for saving a collection of player-specific or entity-specific data.</p>
<h2><a class="anchor" id="autotoc_md265"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_data] call dragonfly_db_fnc_hashSetIdBulk</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md266"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th><th class="markdownTableHeadNone">Default </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_data</code> </td><td class="markdownTableBodyNone">Array </td><td class="markdownTableBodyNone">Array with key followed by alternating field names and values </td><td class="markdownTableBodyNone">[] </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md267"></a>
Return Value</h2>
<p>None. The operation runs synchronously to store all the data.</p>
<h2><a class="anchor" id="autotoc_md268"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md269"></a>
Store player loadout and position:</h3>
<div class="fragment"><div class="line">[[getPlayerUID player, &quot;loadout&quot;, [getUnitLoadout player], &quot;position&quot;, [getPosASLVisual player]]] call dragonfly_db_fnc_hashSetIdBulk;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md270"></a>
Store multiple vehicle properties:</h3>
<div class="fragment"><div class="line">[[&quot;vehicle_123&quot;, &quot;fuel&quot;, [0.75], &quot;damage&quot;, [0.2], &quot;crew&quot;, [[&quot;player1&quot;, &quot;player2&quot;]]]] call dragonfly_db_fnc_hashSetIdBulk;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md271"></a>
Store player data from a client:</h3>
<div class="fragment"><div class="line">[[getPlayerUID player, &quot;stats&quot;, [score player], &quot;inventory&quot;, [getAllGear player]]] remoteExecCall [&quot;dragonfly_db_fnc_hashSetIdBulk&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md272"></a>
Notes</h2>
<ul>
<li>The data array must be structured with the key first, followed by alternating field names and values: <code>[key, field1, value1, field2, value2, ...]</code></li>
<li>The key must be a string that identifies the specific hash table</li>
<li>Each field name must be a string</li>
<li>Values can be arrays, strings, numbers, or booleans</li>
<li>All field-value pairs are stored in a single database operation</li>
<li>If the hash table doesn't exist, it will be created automatically</li>
<li>If any of the fields already exist in the hash table, their values will be overwritten</li>
<li>More efficient than multiple individual <code>hashSetId</code> calls when setting several fields</li>
<li>Player UIDs are commonly used as keys to store player-specific data</li>
<li>The operation is executed immediately and synchronously</li>
<li>All operations are logged for debugging purposes</li>
</ul>
<h2><a class="anchor" id="autotoc_md273"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_hashSetId</code>: Sets a single field value in a specific hash table</li>
<li><code>dragonfly_db_fnc_hashSetBulk</code>: Sets multiple field-value pairs in the global hash table</li>
<li><code>dragonfly_db_fnc_hashGetAllId</code>: Retrieves all fields from a specific hash table</li>
<li><code>dragonfly_db_fnc_hashGetId</code>: Retrieves a specific field value from a specific hash table</li>
</ul>
<h2><a class="anchor" id="autotoc_md274"></a>
Links</h2>
<p><a class="el" href="../../d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">Hash Get</a> | <a class="el" href="../../da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">Hash Get All</a> | <a class="el" href="../../d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">Hash Get All ID</a> | <a class="el" href="../../d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">Hash Get ID</a> | <a class="el" href="../../d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">Hash Set</a> | <a class="el" href="../../da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">Hash Set Bulk</a> | <a class="el" href="../../d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">Hash Set ID</a> | <a class="el" href="../../de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">Hash Set ID Bulk</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,167 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: delete</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../clipboard.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../cookie.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="../../search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(1); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('df/d12/md__g_1_2ids_2dragonfly_2docs_2basic_2delete.html','../../'); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div><div class="header">
<div class="headertitle"><div class="title">delete</div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h2><a class="anchor" id="autotoc_md0"></a>
autotoc_md0</h2>
<p>title: ArmaDragonflyClient - Delete Key icon: mdi:file-text-outline </p>
<h2><a class="anchor" id="autotoc_md1"></a>
excerpt: Remove the specified key from DragonflyClient.</h2>
<h1><a class="anchor" id="autotoc_md2"></a>
dragonfly_db_fnc_delete</h1>
<h2><a class="anchor" id="autotoc_md3"></a>
Description</h2>
<p>Removes the specified key from the database. This function deletes the key-value pair completely from storage.</p>
<h2><a class="anchor" id="autotoc_md4"></a>
Syntax</h2>
<div class="fragment"><div class="line">[_key] call dragonfly_db_fnc_delete</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md5"></a>
Parameters</h2>
<table class="markdownTable">
<tr class="markdownTableHead">
<th class="markdownTableHeadNone">Parameter </th><th class="markdownTableHeadNone">Type </th><th class="markdownTableHeadNone">Description </th></tr>
<tr class="markdownTableRowOdd">
<td class="markdownTableBodyNone"><code>_key</code> </td><td class="markdownTableBodyNone">String </td><td class="markdownTableBodyNone">Name of the key to delete from the database </td></tr>
</table>
<h2><a class="anchor" id="autotoc_md6"></a>
Return Value</h2>
<p>None. The operation runs asynchronously.</p>
<h2><a class="anchor" id="autotoc_md7"></a>
Examples</h2>
<h3><a class="anchor" id="autotoc_md8"></a>
Delete a key in singleplayer or on the server:</h3>
<div class="fragment"><div class="line">[&quot;playerData&quot;] call dragonfly_db_fnc_delete;</div>
</div><!-- fragment --><h3><a class="anchor" id="autotoc_md9"></a>
Delete a key on the server from a client:</h3>
<div class="fragment"><div class="line">[&quot;playerData&quot;] remoteExecCall [&quot;dragonfly_db_fnc_delete&quot;, 2, false];</div>
</div><!-- fragment --><h2><a class="anchor" id="autotoc_md10"></a>
Notes</h2>
<ul>
<li>This operation is permanent and cannot be undone</li>
<li>If the key doesn't exist, the operation will have no effect</li>
<li>This function only affects specific keys, not hash tables or lists</li>
</ul>
<h2><a class="anchor" id="autotoc_md11"></a>
Related Functions</h2>
<ul>
<li><code>dragonfly_db_fnc_get</code>: Retrieves a value by key</li>
<li><code>dragonfly_db_fnc_set</code>: Stores a value by key</li>
<li><code>dragonfly_db_fnc_scheduler</code>: Processes the callback response</li>
</ul>
<h2><a class="anchor" id="autotoc_md12"></a>
Links</h2>
<p><a class="el" href="../../df/d12/md__g_1_2ids_2dragonfly_2docs_2basic_2delete.html">Delete Key</a> | <a class="el" href="../../d3/dcb/md__g_1_2ids_2dragonfly_2docs_2basic_2get.html">Get Key</a> | <a class="el" href="../../d9/d9c/md__g_1_2ids_2dragonfly_2docs_2basic_2set.html">Set Key</a> </p>
</div></div><!-- contents -->
</div><!-- PageDoc -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,145 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: G:/ids/dragonfly/docs/core Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_10eb6422e80bd721a9a7af022f58c68b.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">core Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This section contains documentation for the core functions of ArmaDragonflyClient that handle initialization, process management, and scheduling.</p>
<h1><a class="anchor" id="autotoc_md133"></a>
Available Functions</h1>
<ul>
<li><a class="el" href="dd/d3b/md__g_1_2ids_2dragonfly_2docs_2core_2add_task.html">addTask</a> - Add a task to the scheduler</li>
<li><a class="el" href="d4/d43/md__g_1_2ids_2dragonfly_2docs_2core_2handler.html">handler</a> - Handle callbacks from the extension</li>
<li><a class="el" href="dc/d36/md__g_1_2ids_2dragonfly_2docs_2core_2init.html">init</a> - Initialize the database system</li>
<li><a class="el" href="d4/d7c/md__g_1_2ids_2dragonfly_2docs_2core_2print_addon_name.html">printAddonName</a> - Print the addon name</li>
<li><a class="el" href="d0/d0e/md__g_1_2ids_2dragonfly_2docs_2core_2process_queue.html">processQueue</a> - Process queued database operations</li>
<li><a class="el" href="d0/df6/md__g_1_2ids_2dragonfly_2docs_2core_2scheduler.html">scheduler</a> - Schedule database operations</li>
<li><a class="el" href="d6/d7e/md__g_1_2ids_2dragonfly_2docs_2core_2test.html">test</a> - Test the database connection</li>
</ul>
<h1><a class="anchor" id="autotoc_md134"></a>
Example Usage</h1>
<div class="fragment"><div class="line">// Initialize the database</div>
<div class="line">[] call dragonfly_db_fnc_init;</div>
<div class="line"> </div>
<div class="line">// Test the database connection</div>
<div class="line">[] call dragonfly_db_fnc_test;</div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md135"></a>
Related Categories</h1>
<ul>
<li>Basic Data Operations</li>
<li>Hash Operations</li>
<li>List Operations </li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_4373328136309bbaba010b91e95ca4c6.html">dragonfly</a></li><li class="navelem"><a class="el" href="dir_6b1f4820e2481aa5a1ea9b2275f196d9.html">docs</a></li><li class="navelem"><a class="el" href="dir_10eb6422e80bd721a9a7af022f58c68b.html">core</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,157 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: G:/ids/dragonfly/docs/hash Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_1d1eabba2c636e67297dc8cee9bc9944.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">hash Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This section contains documentation for the hash operations of ArmaDragonflyClient that allow for working with hash tables (key-value pairs within a namespace).</p>
<h1><a class="anchor" id="autotoc_md276"></a>
Available Functions</h1>
<ul>
<li><a class="el" href="d9/de8/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get.html">hashGet</a> - Get a field from a hash</li>
<li><a class="el" href="da/d08/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all.html">hashGetAll</a> - Get all fields from a hash</li>
<li><a class="el" href="d2/d23/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_all_id.html">hashGetAllId</a> - Get all fields from a hash for a specific ID</li>
<li><a class="el" href="d2/d28/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_get_id.html">hashGetId</a> - Get a field from a hash for a specific ID</li>
<li><a class="el" href="d0/df2/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set.html">hashSet</a> - Set a field in a hash</li>
<li><a class="el" href="da/d74/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_bulk.html">hashSetBulk</a> - Set multiple fields in a hash in one operation</li>
<li><a class="el" href="d4/d99/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id.html">hashSetId</a> - Set a field in a hash for a specific ID</li>
<li><a class="el" href="de/da6/md__g_1_2ids_2dragonfly_2docs_2hash_2hash_set_id_bulk.html">hashSetIdBulk</a> - Set multiple fields in a hash for a specific ID in one operation</li>
</ul>
<h1><a class="anchor" id="autotoc_md277"></a>
Example Usage</h1>
<div class="fragment"><div class="line">// Context mode examples</div>
<div class="line">[&quot;myField&quot;, [myValue]] call dragonfly_db_fnc_hashSet;</div>
<div class="line">[&quot;myField&quot;, &quot;myFunction&quot;] call dragonfly_db_fnc_hashGet;</div>
<div class="line">[&quot;myFunction&quot;] call dragonfly_db_fnc_hashGetAll;</div>
<div class="line"> </div>
<div class="line">// Set multiple hash fields in one operation</div>
<div class="line">[[</div>
<div class="line"> &quot;loadout&quot;, [getUnitLoadout player],</div>
<div class="line"> &quot;position&quot;, [getPosASL player],</div>
<div class="line"> &quot;direction&quot;, [getDir player]</div>
<div class="line">]] call dragonfly_db_fnc_hashSetBulk;</div>
<div class="line"> </div>
<div class="line">// ID-specific examples</div>
<div class="line">[&quot;myHash&quot;, &quot;myField&quot;, [myValue]] call dragonfly_db_fnc_hashSetId;</div>
<div class="line">[&quot;myHash&quot;, &quot;myField&quot;, &quot;myFunction&quot;] call dragonfly_db_fnc_hashGetId;</div>
<div class="line">[&quot;myHash&quot;] call dragonfly_db_fnc_hashGetAllId;</div>
</div><!-- fragment --><h1><a class="anchor" id="autotoc_md278"></a>
Related Categories</h1>
<ul>
<li>Core Functions</li>
<li>Basic Data Operations</li>
<li>List Operations </li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_4373328136309bbaba010b91e95ca4c6.html">dragonfly</a></li><li class="navelem"><a class="el" href="dir_6b1f4820e2481aa5a1ea9b2275f196d9.html">docs</a></li><li class="navelem"><a class="el" href="dir_1d1eabba2c636e67297dc8cee9bc9944.html">hash</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,124 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.13.2"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmaDragonflyClient: G:/ids/dragonfly Directory Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="clipboard.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="cookie.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { init_search(); });
/* @license-end */
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">ArmaDragonflyClient
</div>
</td>
<td> <div id="MSearchBox" class="MSearchBoxInactive">
<span class="left">
<span id="MSearchSelect" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()">&#160;</span>
<input type="text" id="MSearchField" value="" placeholder="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
</span><span class="right">
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.13.2 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() { codefold.init(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function(){initNavTree('dir_4373328136309bbaba010b91e95ca4c6.html',''); initResizable(true); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">dragonfly Directory Reference</div></div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
Directories</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top"><span class="iconfclosed"></span>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_6b1f4820e2481aa5a1ea9b2275f196d9.html">docs</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_4373328136309bbaba010b91e95ca4c6.html">dragonfly</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.13.2 </li>
</ul>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show More