createSimpleTask: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "\{\{( *)Important( *)\|" to "{{$1Feature$2|$2important$2|")
m (Text replacement - "<code> +" to "<code>")
Line 41: Line 41:
Full step by step code from beginning to end:<br>
Full step by step code from beginning to end:<br>
'''Step 1: create a new simpleTask'''
'''Step 1: create a new simpleTask'''
<code>
<code>A_SIMPLE_TASK = [[player]] [[createSimpleTask]] [([[localize]] "STR_aSimpleTask")];
A_SIMPLE_TASK = [[player]] [[createSimpleTask]] [([[localize]] "STR_aSimpleTask")];
</code>
</code>
You may create a task at any given point in time. You just need to be aware of the fact, that you've created the task for a single unit (the player). So if you make use of teamSwitch, respawn or similiar, you need to think about how to manage this, so all of these units will have up to date tasks assigned to them.
You may create a task at any given point in time. You just need to be aware of the fact, that you've created the task for a single unit (the player). So if you make use of teamSwitch, respawn or similiar, you need to think about how to manage this, so all of these units will have up to date tasks assigned to them.
Second, it is a good practice to use a stringtable, even if you do not plan (yet) to offer translations.<br>
Second, it is a good practice to use a stringtable, even if you do not plan (yet) to offer translations.<br>
'''Step 2: task destination'''<br>
'''Step 2: task destination'''<br>
<code>
<code>A_SIMPLE_TASK [[setSimpleTaskDestination]] _destination;
A_SIMPLE_TASK [[setSimpleTaskDestination]] _destination;
</code>
</code>
variable/pointer-to-your-task setSimpleTaskDestination some-position. That's it.<br>
variable/pointer-to-your-task setSimpleTaskDestination some-position. That's it.<br>
'''Step 3: task description'''
'''Step 3: task description'''
<code>
<code>A_SIMPLE_TASK [[setSimpleTaskDescription]] [
A_SIMPLE_TASK [[setSimpleTaskDescription]] [
   ([[localize]] "STR_aSimpleTaskLongText"),
   ([[localize]] "STR_aSimpleTaskLongText"),
   ([[localize]] "STR_aSimpleTask"),
   ([[localize]] "STR_aSimpleTask"),
Line 61: Line 58:
Again, no magic involved here. You take your task, the command setSimpleTaskDescription an pass an array with three strings in it. The first string is the long description text, the second is the name/title of the task and the last one will show up on-screen on the waypoint in cadet mode.<br>
Again, no magic involved here. You take your task, the command setSimpleTaskDescription an pass an array with three strings in it. The first string is the long description text, the second is the name/title of the task and the last one will show up on-screen on the waypoint in cadet mode.<br>
'''Step 4: set and update task states'''
'''Step 4: set and update task states'''
<code>
<code>A_SIMPLE_TASK [[setTaskState]] "CREATED";
A_SIMPLE_TASK [[setTaskState]] "CREATED";
</code>
</code>
And that's it. Here a minimal working example:
And that's it. Here a minimal working example:
<code>
<code>A_SIMPLE_TASK = [[player]] [[createSimpleTask]] ["simple task title"];
A_SIMPLE_TASK = [[player]] [[createSimpleTask]] ["simple task title"];
A_SIMPLE_TASK [[setSimpleTaskDestination]] ([[position]] [[player]]);
A_SIMPLE_TASK [[setSimpleTaskDestination]] ([[position]] [[player]]);
A_SIMPLE_TASK [[setSimpleTaskDescription]] [
A_SIMPLE_TASK [[setSimpleTaskDescription]] [
Line 76: Line 71:
</code>
</code>
And then later in the mission:
And then later in the mission:
<code>
<code>A_SIMPLE_TASK [[setTaskState]] "SUCCEEDED";
A_SIMPLE_TASK [[setTaskState]] "SUCCEEDED";
</code>
</code>
If you want to keep the player in the loop about the status of tasks, you may always do this:
If you want to keep the player in the loop about the status of tasks, you may always do this:
<code>
<code>[ [[objNull]], [[objNull]], A_SIMPLE_TASK, "SUCCEEDED"] [[execVM]] "CA\Modules\MP\data\scriptCommands\taskHint.sqf";
[ [[objNull]], [[objNull]], A_SIMPLE_TASK, "SUCCEEDED"] [[execVM]] "CA\Modules\MP\data\scriptCommands\taskHint.sqf";
</code>
</code>
<!-- Note Section END -->
<!-- Note Section END -->

Revision as of 16:52, 7 February 2021

Hover & click on the images for description

Description

Description:
Description needed
Groups:
Briefing

Syntax

Syntax:
Syntax needed
Parameters:
person: Object - Unit to add this new task
[name, parentTask]: Array
name: String
parentTask (Optional): Task
Return Value:
Return value needed

Examples

Example 1:
_currentTask = player createSimpleTask ["NewTask"];
Example 2:
_childTask = player createSimpleTask ["ChildTask", _currentTask];

Additional Information

See also:
See also needed

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Posted on July 02, 2011 - 11:45 (GMT+1)
Lou Montana
  • Creating child will position the new task just under the parent task.
  • Creating another "normal" (parent) task will create a new line above the others. Think of it if you want ordered objectives.
  • Succeeding parent task will automatically succeed childs, whatever their taskState was set to. (I.E. If a task is set as a child to another, it will be completed when its parent is complete.. no matter if the child task really was or not).
  • This command has to be executed again for it to be applied for JIP players - no server sync

Full step by step code from beginning to end:
Step 1: create a new simpleTask A_SIMPLE_TASK = player createSimpleTask [(localize "STR_aSimpleTask")]; You may create a task at any given point in time. You just need to be aware of the fact, that you've created the task for a single unit (the player). So if you make use of teamSwitch, respawn or similiar, you need to think about how to manage this, so all of these units will have up to date tasks assigned to them. Second, it is a good practice to use a stringtable, even if you do not plan (yet) to offer translations.
Step 2: task destination
A_SIMPLE_TASK setSimpleTaskDestination _destination; variable/pointer-to-your-task setSimpleTaskDestination some-position. That's it.
Step 3: task description A_SIMPLE_TASK setSimpleTaskDescription [ (localize "STR_aSimpleTaskLongText"), (localize "STR_aSimpleTask"), (localize "STR_aSimpleTaskWaypointLabel") ]; Again, no magic involved here. You take your task, the command setSimpleTaskDescription an pass an array with three strings in it. The first string is the long description text, the second is the name/title of the task and the last one will show up on-screen on the waypoint in cadet mode.
Step 4: set and update task states A_SIMPLE_TASK setTaskState "CREATED"; And that's it. Here a minimal working example: A_SIMPLE_TASK = player createSimpleTask ["simple task title"]; A_SIMPLE_TASK setSimpleTaskDestination (position player); A_SIMPLE_TASK setSimpleTaskDescription [ "simple task long description", "simple task title", "simple task waypoint label" ]; A_SIMPLE_TASK setTaskState "CREATED"; And then later in the mission: A_SIMPLE_TASK setTaskState "SUCCEEDED"; If you want to keep the player in the loop about the status of tasks, you may always do this: [ objNull, objNull, A_SIMPLE_TASK, "SUCCEEDED"] execVM "CA\Modules\MP\data\scriptCommands\taskHint.sqf";