From c3087bfa0996b37931c4c4cc6216986b8088b396 Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sat, 27 Nov 2021 14:10:35 +0100 Subject: [PATCH 1/9] Add default title and description stringtable reference for tasks --- addons/tasks/functions/fnc_createTask.sqf | 4 ++-- addons/tasks/script_component.hpp | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/tasks/functions/fnc_createTask.sqf b/addons/tasks/functions/fnc_createTask.sqf index d87491e8..e70625bc 100644 --- a/addons/tasks/functions/fnc_createTask.sqf +++ b/addons/tasks/functions/fnc_createTask.sqf @@ -19,8 +19,8 @@ params ["_taskConfigName", "_taskNamespace"]; INFO_1("Creating '%1'",_taskConfigName); -private _title = _taskNamespace getVariable ["title", ""]; -private _description = _taskNamespace getVariable ["description", ""]; +private _title = _taskNamespace getVariable ["title", DEFAULT_CTITLE(_taskConfigName)]; +private _description = _taskNamespace getVariable ["description", DEFAULT_CDESCRIPTION(_taskConfigName)]; private _marker = _taskNamespace getVariable ["marker", ""]; private _object = _taskNamespace getVariable ["object", ""]; private _position = _taskNamespace getVariable ["position", []]; diff --git a/addons/tasks/script_component.hpp b/addons/tasks/script_component.hpp index b236741e..40ae78e8 100644 --- a/addons/tasks/script_component.hpp +++ b/addons/tasks/script_component.hpp @@ -13,4 +13,7 @@ #include "\z\afm\addons\main\script_macros.hpp" +#define DEFAULT_CTITLE(TASK_NAME) format ["$Task_%1_Title", TASK_NAME] +#define DEFAULT_CDESCRIPTION(TASK_NAME) format ["$Task_%1_Description", TASK_NAME] + #define FINISHED_TASK_STATES ["SUCCEEDED", "FAILED", "CANCELED"] From 118e67f979d7b07ff6f59e419fc2189537436142 Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sat, 27 Nov 2021 14:10:53 +0100 Subject: [PATCH 2/9] Fix fnc_createTask arguments description --- addons/tasks/functions/fnc_createTask.sqf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/tasks/functions/fnc_createTask.sqf b/addons/tasks/functions/fnc_createTask.sqf index e70625bc..0b856138 100644 --- a/addons/tasks/functions/fnc_createTask.sqf +++ b/addons/tasks/functions/fnc_createTask.sqf @@ -4,7 +4,8 @@ * Function creates task from given task namespace. * * Arguments: - * 0: Task namespace + * 0: Task config name + * 1: Task namespace * * Return Value: * None From 9c142f942c946cd501aba980847616e32f2f6aa2 Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sat, 27 Nov 2021 14:17:37 +0100 Subject: [PATCH 3/9] Remove `format` in macro --- addons/tasks/script_component.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/tasks/script_component.hpp b/addons/tasks/script_component.hpp index 40ae78e8..5cb59b60 100644 --- a/addons/tasks/script_component.hpp +++ b/addons/tasks/script_component.hpp @@ -13,7 +13,7 @@ #include "\z\afm\addons\main\script_macros.hpp" -#define DEFAULT_CTITLE(TASK_NAME) format ["$Task_%1_Title", TASK_NAME] -#define DEFAULT_CDESCRIPTION(TASK_NAME) format ["$Task_%1_Description", TASK_NAME] +#define DEFAULT_CTITLE(TASK_NAME) "$Task_TASK_NAME_Title" +#define DEFAULT_CDESCRIPTION(TASK_NAME) "$Task_TASK_NAME_Description" #define FINISHED_TASK_STATES ["SUCCEEDED", "FAILED", "CANCELED"] From 1580070dafb53d2a553281f3254d574f1999dc4b Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sat, 27 Nov 2021 14:25:59 +0100 Subject: [PATCH 4/9] Remove `$` from stringtable keys --- addons/tasks/functions/fnc_createTask.sqf | 4 ++-- addons/tasks/script_component.hpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/tasks/functions/fnc_createTask.sqf b/addons/tasks/functions/fnc_createTask.sqf index 0b856138..d1d694ec 100644 --- a/addons/tasks/functions/fnc_createTask.sqf +++ b/addons/tasks/functions/fnc_createTask.sqf @@ -20,8 +20,8 @@ params ["_taskConfigName", "_taskNamespace"]; INFO_1("Creating '%1'",_taskConfigName); -private _title = _taskNamespace getVariable ["title", DEFAULT_CTITLE(_taskConfigName)]; -private _description = _taskNamespace getVariable ["description", DEFAULT_CDESCRIPTION(_taskConfigName)]; +private _title = _taskNamespace getVariable ["title", DEFAULT_TITLE(_taskConfigName)]; +private _description = _taskNamespace getVariable ["description", DEFAULT_DESCRIPTION(_taskConfigName)]; private _marker = _taskNamespace getVariable ["marker", ""]; private _object = _taskNamespace getVariable ["object", ""]; private _position = _taskNamespace getVariable ["position", []]; diff --git a/addons/tasks/script_component.hpp b/addons/tasks/script_component.hpp index 5cb59b60..87218733 100644 --- a/addons/tasks/script_component.hpp +++ b/addons/tasks/script_component.hpp @@ -13,7 +13,7 @@ #include "\z\afm\addons\main\script_macros.hpp" -#define DEFAULT_CTITLE(TASK_NAME) "$Task_TASK_NAME_Title" -#define DEFAULT_CDESCRIPTION(TASK_NAME) "$Task_TASK_NAME_Description" +#define DEFAULT_TITLE(TASK_NAME) "Task_TASK_NAME_Title" +#define DEFAULT_DESCRIPTION(TASK_NAME) "Task_TASK_NAME_Description" #define FINISHED_TASK_STATES ["SUCCEEDED", "FAILED", "CANCELED"] From a7dbe67689ba1366d3340bfdbe2e67f63570bbdd Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sun, 5 Dec 2021 12:51:25 +0100 Subject: [PATCH 5/9] Fix creating default title/description --- addons/tasks/functions/fnc_createTask.sqf | 4 ++-- addons/tasks/script_component.hpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/tasks/functions/fnc_createTask.sqf b/addons/tasks/functions/fnc_createTask.sqf index d1d694ec..e2f095ff 100644 --- a/addons/tasks/functions/fnc_createTask.sqf +++ b/addons/tasks/functions/fnc_createTask.sqf @@ -20,8 +20,8 @@ params ["_taskConfigName", "_taskNamespace"]; INFO_1("Creating '%1'",_taskConfigName); -private _title = _taskNamespace getVariable ["title", DEFAULT_TITLE(_taskConfigName)]; -private _description = _taskNamespace getVariable ["description", DEFAULT_DESCRIPTION(_taskConfigName)]; +private _title = _taskNamespace getVariable ["title", format [DEFAULT_TITLE_FORMAT, _taskConfigName]]; +private _description = _taskNamespace getVariable ["description", format [DEFAULT_DESCRIPTION_FORMAT, _taskConfigName]]; private _marker = _taskNamespace getVariable ["marker", ""]; private _object = _taskNamespace getVariable ["object", ""]; private _position = _taskNamespace getVariable ["position", []]; diff --git a/addons/tasks/script_component.hpp b/addons/tasks/script_component.hpp index 87218733..a3066af5 100644 --- a/addons/tasks/script_component.hpp +++ b/addons/tasks/script_component.hpp @@ -13,7 +13,7 @@ #include "\z\afm\addons\main\script_macros.hpp" -#define DEFAULT_TITLE(TASK_NAME) "Task_TASK_NAME_Title" -#define DEFAULT_DESCRIPTION(TASK_NAME) "Task_TASK_NAME_Description" +#define DEFAULT_TITLE_FORMAT "STR_Task_%1_Title" +#define DEFAULT_DESCRIPTION_FORMAT "STR_Task_%1_Description" #define FINISHED_TASK_STATES ["SUCCEEDED", "FAILED", "CANCELED"] From 9b6db65d5d41860a8b5f8ba680efa619f67875a9 Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sun, 5 Dec 2021 13:26:13 +0100 Subject: [PATCH 6/9] Add ability to specify component for stringtable keys --- addons/tasks/XEH_PREP.hpp | 1 + addons/tasks/XEH_preInit.sqf | 6 +++- addons/tasks/functions/fnc_createTask.sqf | 3 +- .../functions/fnc_readTitleAndDescription.sqf | 34 +++++++++++++++++++ addons/tasks/script_component.hpp | 2 ++ 5 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 addons/tasks/functions/fnc_readTitleAndDescription.sqf diff --git a/addons/tasks/XEH_PREP.hpp b/addons/tasks/XEH_PREP.hpp index 3368bdbb..92a90f1e 100644 --- a/addons/tasks/XEH_PREP.hpp +++ b/addons/tasks/XEH_PREP.hpp @@ -14,3 +14,4 @@ PREP(handleShow); PREP(readDestination); PREP(readOwners); +PREP(readTitleAndDescription); diff --git a/addons/tasks/XEH_preInit.sqf b/addons/tasks/XEH_preInit.sqf index c25541f4..fcc0c8fa 100644 --- a/addons/tasks/XEH_preInit.sqf +++ b/addons/tasks/XEH_preInit.sqf @@ -10,15 +10,19 @@ if (isServer) then { GVAR(tasks) = createHashMap; GVAR(tasksArray) = []; + private _cfgTasks = missionConfigFile >> "CfgTasks"; + private _component = getTextRaw (_cfgTasks >> "component"); + // Load tasks from config { private _taskConfigName = configName _x; private _taskNamespace = [_x] call EFUNC(common,readConfigToNamespace); _taskNamespace setVariable ["taskConfigName", _taskConfigName]; + _taskNamespace setVariable ["taskComponent", _component]; GVAR(tasks) set [_taskConfigName, _taskNamespace]; GVAR(tasksArray) pushBack _taskNamespace; - } forEach ("true" configClasses (missionConfigFile >> "CfgTasks")); + } forEach ("true" configClasses _cfgTasks); }; ADDON = true; diff --git a/addons/tasks/functions/fnc_createTask.sqf b/addons/tasks/functions/fnc_createTask.sqf index e2f095ff..b768c44c 100644 --- a/addons/tasks/functions/fnc_createTask.sqf +++ b/addons/tasks/functions/fnc_createTask.sqf @@ -20,8 +20,7 @@ params ["_taskConfigName", "_taskNamespace"]; INFO_1("Creating '%1'",_taskConfigName); -private _title = _taskNamespace getVariable ["title", format [DEFAULT_TITLE_FORMAT, _taskConfigName]]; -private _description = _taskNamespace getVariable ["description", format [DEFAULT_DESCRIPTION_FORMAT, _taskConfigName]]; +[_taskConfigName, _taskNamespace] call FUNC(readTitleAndDescription) params ["_title", "_description"]; private _marker = _taskNamespace getVariable ["marker", ""]; private _object = _taskNamespace getVariable ["object", ""]; private _position = _taskNamespace getVariable ["position", []]; diff --git a/addons/tasks/functions/fnc_readTitleAndDescription.sqf b/addons/tasks/functions/fnc_readTitleAndDescription.sqf new file mode 100644 index 00000000..c6bf3dfd --- /dev/null +++ b/addons/tasks/functions/fnc_readTitleAndDescription.sqf @@ -0,0 +1,34 @@ +#include "script_component.hpp" +/* + * Author: 3Mydlo3 + * Reads title and description from given task namespace. + * + * Arguments: + * 0: Task config name + * 1: Task namespace + * + * Return Value: + * 0: Mission Title + * 1: Mission Description + * + * Example: + * None + * + * Public: No + */ + +params ["_taskConfigName", "_taskNamespace"]; + +private _component = _taskNamespace getVariable ["taskComponent", ""]; + +if (_component isNotEqualTo "") then { + [ + _taskNamespace getVariable ["title", format [DEFAULT_TITLE_FORMAT_WITH_COMPONENT, _component, _taskConfigName]], + _taskNamespace getVariable ["description", format [DEFAULT_DESCRIPTION_FORMAT_WITH_COMPONENT, _component, _taskConfigName]] + ] +} else { + [ + _taskNamespace getVariable ["title", format [DEFAULT_TITLE_FORMAT, _taskConfigName]], + _taskNamespace getVariable ["description", format [DEFAULT_DESCRIPTION_FORMAT, _taskConfigName]] + ] +}; diff --git a/addons/tasks/script_component.hpp b/addons/tasks/script_component.hpp index a3066af5..f033b989 100644 --- a/addons/tasks/script_component.hpp +++ b/addons/tasks/script_component.hpp @@ -14,6 +14,8 @@ #include "\z\afm\addons\main\script_macros.hpp" #define DEFAULT_TITLE_FORMAT "STR_Task_%1_Title" +#define DEFAULT_TITLE_FORMAT_WITH_COMPONENT "STR_%1_Task_%2_Title" #define DEFAULT_DESCRIPTION_FORMAT "STR_Task_%1_Description" +#define DEFAULT_DESCRIPTION_FORMAT_WITH_COMPONENT "STR_%1_Task_%2_Description" #define FINISHED_TASK_STATES ["SUCCEEDED", "FAILED", "CANCELED"] From 113ea07f15515f7e50a29a8c2b292f473d6100f0 Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sun, 5 Dec 2021 14:07:21 +0100 Subject: [PATCH 7/9] Add section to README --- addons/tasks/README.md | 59 ++++++++++++++++++- addons/tasks/XEH_preInit.sqf | 4 +- .../functions/fnc_readTitleAndDescription.sqf | 8 +-- 3 files changed, 63 insertions(+), 8 deletions(-) diff --git a/addons/tasks/README.md b/addons/tasks/README.md index 68dc44fb..502f463e 100644 --- a/addons/tasks/README.md +++ b/addons/tasks/README.md @@ -12,6 +12,13 @@ If you don't want to use some property it is best to remove it at all, don't lea ```hpp class CfgTasks { + /* Optional tag specification. Used for automatic title/description stringtable references. + For e.g., "MyMission", the autogenerated stringtable refrences will be "STR_MyMission_Task_TASKNAME_Title" and "STR_MyMission_Task_TASKNAME_Description". + When ommitted or empty, the references will be "STR_Task_TASKNAME_Title" and "STR_Task_TASKNAME_Description". + For more details please look at "Using Stringtable" section in README. + */ + tag = ""; + class Soapy_Mission_XD { title = "Soapy Mission XD - Horse Knocked"; // Regular task title description = "Great mission of beating horse."; // Regular description. Cannot use linebreaks (enters), if needed use stringtable. @@ -97,9 +104,57 @@ title = $STR_TAG_TaskOneTitle; title = "STR_TAG_TaskOneTitle"; ``` -If using CBA macros use `LSTRING()` instead of `CSTRING()`. +If using CBA macros use `LSTRING()` instead of `CSTRING()`. Otherwise localization will be performed on the server, before tasks configuration is read. + +### Autogenerated stringtable references + +You may choose to omit title/description definition and use autogenerated stringtable keys: + +```hpp +class CfgTasks { + class TASKCLASSNAME { + icon = "attack"; + }; +}; +``` + +Framework will look for the keys below: + +- `STR_Task_TASKCLASSNAME_Title` +- `STR_Task_TASKCLASSNAME_Description` + +Effectively, this will behave the same as (with one exception): + +```hpp +class CfgTasks { + class TASKCLASSNAME { + title = "STR_Task_TASKCLASSNAME_Title"; + description = "STR_Task_TASKCLASSNAME_Description"; + icon = "attack"; + }; +}; +``` + +The one exception being class inheritance. If you want to inherit title or description, you must specify it manually (so nothing really changes here). In case you don't want to inherit it (like me in 90% cases), you have a lot less code to write. + +### Autogenerated stringtable references with TAG + +You may also want to include TAG in your stringtable reference: + +```hpp +class CfgTasks { + tag = "MySuperMission"; + + class TASKCLASSNAME { + icon = "attack"; + }; +}; +``` + +This will result in the following keys expected: -Otherwise localization will be performed on the server, before tasks configuration is read. +- `STR_MySuperMission_Task_TASKCLASSNAME_Title` +- `STR_MySuperMission_Task_TASKCLASSNAME_Description` ## Example custom event handling diff --git a/addons/tasks/XEH_preInit.sqf b/addons/tasks/XEH_preInit.sqf index fcc0c8fa..b058ead4 100644 --- a/addons/tasks/XEH_preInit.sqf +++ b/addons/tasks/XEH_preInit.sqf @@ -11,14 +11,14 @@ if (isServer) then { GVAR(tasksArray) = []; private _cfgTasks = missionConfigFile >> "CfgTasks"; - private _component = getTextRaw (_cfgTasks >> "component"); + private _tag = getTextRaw (_cfgTasks >> "tag"); // Load tasks from config { private _taskConfigName = configName _x; private _taskNamespace = [_x] call EFUNC(common,readConfigToNamespace); _taskNamespace setVariable ["taskConfigName", _taskConfigName]; - _taskNamespace setVariable ["taskComponent", _component]; + _taskNamespace setVariable ["taskTag", _tag]; GVAR(tasks) set [_taskConfigName, _taskNamespace]; GVAR(tasksArray) pushBack _taskNamespace; diff --git a/addons/tasks/functions/fnc_readTitleAndDescription.sqf b/addons/tasks/functions/fnc_readTitleAndDescription.sqf index c6bf3dfd..3c12f430 100644 --- a/addons/tasks/functions/fnc_readTitleAndDescription.sqf +++ b/addons/tasks/functions/fnc_readTitleAndDescription.sqf @@ -19,12 +19,12 @@ params ["_taskConfigName", "_taskNamespace"]; -private _component = _taskNamespace getVariable ["taskComponent", ""]; +private _tag = _taskNamespace getVariable ["taskTag", ""]; -if (_component isNotEqualTo "") then { +if (_tag isNotEqualTo "") then { [ - _taskNamespace getVariable ["title", format [DEFAULT_TITLE_FORMAT_WITH_COMPONENT, _component, _taskConfigName]], - _taskNamespace getVariable ["description", format [DEFAULT_DESCRIPTION_FORMAT_WITH_COMPONENT, _component, _taskConfigName]] + _taskNamespace getVariable ["title", format [DEFAULT_TITLE_FORMAT_WITH_COMPONENT, _tag, _taskConfigName]], + _taskNamespace getVariable ["description", format [DEFAULT_DESCRIPTION_FORMAT_WITH_COMPONENT, _tag, _taskConfigName]] ] } else { [ From c585aa205801d80b1909d10bc25ad03ff981f837 Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sun, 5 Dec 2021 14:11:25 +0100 Subject: [PATCH 8/9] Add Table of Contents --- addons/tasks/README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/addons/tasks/README.md b/addons/tasks/README.md index 502f463e..94012ecb 100644 --- a/addons/tasks/README.md +++ b/addons/tasks/README.md @@ -2,6 +2,19 @@ Tasks framework. Automatic tasks creation from mission config. All scripts, conditions and events are run on server only. +## Table of Contents + +- [Tasks](#tasks) +- [Table of Contents](#table-of-contents) +- [How to use](#how-to-use) +- [Example config](#example-config) +- [Using stringtable](#using-stringtable) + - [Autogenerated stringtable references](#autogenerated-stringtable-references) + - [Autogenerated stringtable references with TAG](#autogenerated-stringtable-references-with-tag) +- [Example custom event handling](#example-custom-event-handling) +- [Framework events](#framework-events) +- [Authors](#authors) + ## How to use Just create `CfgTasks` in your mission's `description.ext` and fill it with tasks! Yes, and that's it, no more linking modules and triggers into spaghetti, works out of the box. @@ -190,6 +203,6 @@ Event "afm_tasks_taskStateChanged" - 1: New task state ``` -### Authors +## Authors - [3Mydlo3](http://github.com/3Mydlo3) From d7161620b8d2a466805f24b4e7db479f4ce9c5d5 Mon Sep 17 00:00:00 2001 From: 3Mydlo3 Date: Sun, 5 Dec 2021 14:30:28 +0100 Subject: [PATCH 9/9] Add support fot task-level tag --- addons/tasks/README.md | 12 ++++++++++-- addons/tasks/XEH_preInit.sqf | 2 +- .../tasks/functions/fnc_readTitleAndDescription.sqf | 12 ++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/addons/tasks/README.md b/addons/tasks/README.md index 94012ecb..ccf306b2 100644 --- a/addons/tasks/README.md +++ b/addons/tasks/README.md @@ -27,7 +27,7 @@ If you don't want to use some property it is best to remove it at all, don't lea class CfgTasks { /* Optional tag specification. Used for automatic title/description stringtable references. For e.g., "MyMission", the autogenerated stringtable refrences will be "STR_MyMission_Task_TASKNAME_Title" and "STR_MyMission_Task_TASKNAME_Description". - When ommitted or empty, the references will be "STR_Task_TASKNAME_Title" and "STR_Task_TASKNAME_Description". + When omitted or empty, the references will be "STR_Task_TASKNAME_Title" and "STR_Task_TASKNAME_Description". For more details please look at "Using Stringtable" section in README. */ tag = ""; @@ -35,6 +35,7 @@ class CfgTasks { class Soapy_Mission_XD { title = "Soapy Mission XD - Horse Knocked"; // Regular task title description = "Great mission of beating horse."; // Regular description. Cannot use linebreaks (enters), if needed use stringtable. + tag = ""; // Optional CfgTasks.tag override for task. When omitted, fallback to global tag will be performed. If defined as empty, global tag will be ignored. /* Task icon location on the map First checks for marker with given name, and if doesn't exists, checks for object in mission namespace. Alternatively {x, y, z} can be used for supplying position coordinates. @@ -152,7 +153,7 @@ The one exception being class inheritance. If you want to inherit title or descr ### Autogenerated stringtable references with TAG -You may also want to include TAG in your stringtable reference: +You may also want to include TAG in your stringtable reference. It can be defined on `CfgTasks` level or at the task level (in case you need to override global tag). ```hpp class CfgTasks { @@ -161,6 +162,11 @@ class CfgTasks { class TASKCLASSNAME { icon = "attack"; }; + + class OTHERTAGTASKCLASSNAME { + tag = "MyOtherMission"; + icon = "defend"; + }; }; ``` @@ -168,6 +174,8 @@ This will result in the following keys expected: - `STR_MySuperMission_Task_TASKCLASSNAME_Title` - `STR_MySuperMission_Task_TASKCLASSNAME_Description` +- `STR_MyOtherMission_Task_OTHERTAGTASKCLASSNAME_Title` +- `STR_MyOtherMission_Task_OTHERTAGTASKCLASSNAME_Description` ## Example custom event handling diff --git a/addons/tasks/XEH_preInit.sqf b/addons/tasks/XEH_preInit.sqf index b058ead4..8cf74214 100644 --- a/addons/tasks/XEH_preInit.sqf +++ b/addons/tasks/XEH_preInit.sqf @@ -18,7 +18,7 @@ if (isServer) then { private _taskConfigName = configName _x; private _taskNamespace = [_x] call EFUNC(common,readConfigToNamespace); _taskNamespace setVariable ["taskConfigName", _taskConfigName]; - _taskNamespace setVariable ["taskTag", _tag]; + _taskNamespace setVariable ["taskGlobalTag", _tag]; GVAR(tasks) set [_taskConfigName, _taskNamespace]; GVAR(tasksArray) pushBack _taskNamespace; diff --git a/addons/tasks/functions/fnc_readTitleAndDescription.sqf b/addons/tasks/functions/fnc_readTitleAndDescription.sqf index 3c12f430..c56c1c41 100644 --- a/addons/tasks/functions/fnc_readTitleAndDescription.sqf +++ b/addons/tasks/functions/fnc_readTitleAndDescription.sqf @@ -19,12 +19,16 @@ params ["_taskConfigName", "_taskNamespace"]; -private _tag = _taskNamespace getVariable ["taskTag", ""]; +private _taskTag = _taskNamespace getVariable [ + "tag", + // Get global CfgTasks tag as fallback + _taskNamespace getVariable ["taskGlobalTag", ""] +]; -if (_tag isNotEqualTo "") then { +if (_taskTag isNotEqualTo "") then { [ - _taskNamespace getVariable ["title", format [DEFAULT_TITLE_FORMAT_WITH_COMPONENT, _tag, _taskConfigName]], - _taskNamespace getVariable ["description", format [DEFAULT_DESCRIPTION_FORMAT_WITH_COMPONENT, _tag, _taskConfigName]] + _taskNamespace getVariable ["title", format [DEFAULT_TITLE_FORMAT_WITH_COMPONENT, _taskTag, _taskConfigName]], + _taskNamespace getVariable ["description", format [DEFAULT_DESCRIPTION_FORMAT_WITH_COMPONENT, _taskTag, _taskConfigName]] ] } else { [