createSimpleTask: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (misunderstood : global, but will need to be reapplied for JIP)
m (Some wiki formatting)
 
(100 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{Command|= Comments
{{RV|type=command
____________________________________________________________________________________________


| arma2 |= Game name
|game1= arma2
|version1= 1.00


|1.00|= Game version
|game2= arma2oa
|version2= 1.50


|arg= global |= Arguments in MP
|game3= tkoh
|version3= 1.00


|eff= global |= Effects in MP
|game4= arma3
____________________________________________________________________________________________
|version4= 0.50


| Creates a new [[Task]] |= Description
|gr1= Briefing
____________________________________________________________________________________________


| [[Task]] <nowiki>=</nowiki> [[Object]] '''createSimpleTask''' [[Array]]|= Syntax
|arg= global


|p1= [[Object]]: Unit to add this new task |= PARAMETER1
|eff= local


|p2= [[Array]]: ["TaskName"] or ["TaskName", taskParent] |= PARAMETER2
|descr= Creates a new [[Task]] and adds it to the Diary.
{{Feature|Arma3|Using the '''[[Arma 3: Task Framework]]''' instead is recommended}}
{{Feature|informative|When task is added as a child, it appears as subcategory to the parent task in the Tasks menu and can be parent to another child task. However this is cosmetic appearance as each task has own id and can be referenced directly via diary link.}}


| [[Task]] - the new task |= RETURNVALUE
|mp= The task effect is [[Multiplayer Scripting#Locality|local]], it will only exist on the client it was added.


|s1= unit [[createSimpleTask]] [name, parentTask]


|x1= <code>currentTask <nowiki>=</nowiki> player createSimpleTask ["NewTask"];</code>|= EXAMPLE1
|p1= unit: [[Object]] - unit to add this new task
|x2= <code>childTask <nowiki>=</nowiki> player createSimpleTask ["ChildTask", currentTask];</code>|= EXAMPLE2


____________________________________________________________________________________________
|p2= name: [[String]]


| [[Tasks]], [[briefing]], [[removeSimpleTask]], [[setSimpleTaskDescription]], [[setSimpleTaskDestination]], [[setTaskState]], [[setTaskResult]], [[taskState]] |= SEEALSO
|p3= parentTask: [[Task]] - (Optional, [[taskNull]]) - The new task will be a sub task of the parent task


| |= MPBEHAVIOUR
|r1= [[Task]] - the new task
____________________________________________________________________________________________
}}
 
<h3 style='display:none'>Notes</h3>
<dl class='command_description'>
<!-- Note Section BEGIN -->
<dd class="notedate">Posted on July 15, 2009 - 07:00 (CEST)</dd>
<dt>'''[[User:Lou Montana|Lou Montana]]'''</dt>
<dd>
*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).
</dd>
<dd class="notedate">Posted on July 02, 2011 - 11:45 (GMT+1)</dd>
<dt>'''[[User:Lou Montana|Lou Montana]]'''</dt>
<dd>
*The argument is global, the effect is global - if you teamrespawn/teamswitch you will have the unit tasks
*The command has to be executed again for it to be applied for JIP players - no server sync
</dd>
<!-- Note Section END -->
</dl>


|x1= <sqf>_currentTask = player createSimpleTask ["NewTask"];</sqf>


|x2= <sqf>_childTask = player createSimpleTask ["ChildTask", _currentTask];</sqf>


|seealso= [[simpleTasks]] [[removeSimpleTask]] [[setSimpleTaskDescription]] [[setSimpleTaskDestination]] [[setTaskState]] [[setTaskResult]] [[taskState]] [[Tasks]] [[Briefing]]
}}


Full step by step code from beginning to end:
{{Note
 
|user= Lou Montana
 
|timestamp= 20110702114500
Now to simpleTasks
|text=
First, it's really not _that_ hard. So if you struggle with this, watch out for scripting or plain programming errors such as unnamed or misspelled variables.
* 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.
Step 1: create a new simpleTask
* 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).
Code:
* This command has to be executed again for it to be applied for JIP players - no server sync<br><br>
A_SIMPLE_TASK = player createSimpleTask [(localize "STR_aSimpleTask")];
Full step by step code from beginning to end:<br>
'''Step 1: create a new simpleTask'''
<sqf>MySimpleTask = player createSimpleTask [(localize "STR_aSimpleTask")];</sqf>
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's a good practice to use a stringtable, even if you do not plan (yet) to offer translations.
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
<sqf>MySimpleTask setSimpleTaskDestination _destination;</sqf>
Code:
variable/pointer-to-your-task setSimpleTaskDestination some-position. That's it.<br>
A_SIMPLE_TASK setSimpleTaskDestination _destination;
'''Step 3: task description'''
variable/pointer-to-your-task setSimpleTaskDestination some-position. That's it.
<sqf>
 
MySimpleTask setSimpleTaskDescription [
Step 3: task description
localize "STR_aSimpleTaskLongText",
Code:
localize "STR_aSimpleTask",
A_SIMPLE_TASK setSimpleTaskDescription[
localize "STR_aSimpleTaskWaypointLabel"
  (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.
</sqf>


Step 4: set and update task states
Again, no magic involved here. You take your task, the command setSimpleTaskDescription an pass an array with three strings in it.
Code:
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>
A_SIMPLE_TASK setTaskState "CREATED";
'''Step 4: set and update task states'''
<sqf>MySimpleTask setTaskState "CREATED";</sqf>
And that's it. Here a minimal working example:
And that's it. Here a minimal working example:
Code:
<sqf>
A_SIMPLE_TASK = player createSimpleTask ["simple task title"];
MySimpleTask = player createSimpleTask ["simple task title"];
A_SIMPLE_TASK setSimpleTaskDestination (position player);
MySimpleTask setSimpleTaskDestination (position player);
A_SIMPLE_TASK setSimpleTaskDescription[
MySimpleTask setSimpleTaskDescription [
  "simple task long description",
"simple task long description",
  "simple task title",
"simple task title",
  "simple task waypoint label"
"simple task waypoint label"
];
];
A_SIMPLE_TASK setTaskState "CREATED";
MySimpleTask setTaskState "CREATED";
</sqf>
 
And then later in the mission:
And then later in the mission:
Code:
<sqf>MySimpleTask setTaskState "SUCCEEDED";</sqf>
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:
If you want to keep the player in the loop about the status of tasks, you may always do this:
Code:
<sqf>[objNull, objNull, MySimpleTask, "SUCCEEDED"] execVM "CA\Modules\MP\data\scriptCommands\taskHint.sqf";</sqf>
[objNull, ObjNull, A_SIMPLE_TASK, "SUCCEEDED"] execVM "CA\Modules\MP\data\scriptCommands\taskHint.sqf";
}}
...or write your own dialog, hintbox or what not.
 
 
Edited by B00tsy, thanks to Ruebe
 
<h3 style='display:none'>Bottom Section</h3>
[[Category:ArmA 2: New Scripting Commands List|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Command_Group:_Briefing|{{uc:{{PAGENAME}}}}]]

Latest revision as of 13:09, 12 March 2024

Hover & click on the images for description

Description

Description:
Creates a new Task and adds it to the Diary.
Arma 3
Using the Arma 3: Task Framework instead is recommended
When task is added as a child, it appears as subcategory to the parent task in the Tasks menu and can be parent to another child task. However this is cosmetic appearance as each task has own id and can be referenced directly via diary link.
Multiplayer:
The task effect is local, it will only exist on the client it was added.
Groups:
Briefing

Syntax

Syntax:
unit createSimpleTask [name, parentTask]
Parameters:
unit: Object - unit to add this new task
name: String
parentTask: Task - (Optional, taskNull) - The new task will be a sub task of the parent task
Return Value:
Task - the new task

Examples

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

Additional Information

See also:
simpleTasks removeSimpleTask setSimpleTaskDescription setSimpleTaskDestination setTaskState setTaskResult taskState Tasks Briefing

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
Lou Montana - c
Posted on Jul 02, 2011 - 11:45 (UTC)
  • 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
MySimpleTask = 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
MySimpleTask setSimpleTaskDestination _destination;
variable/pointer-to-your-task setSimpleTaskDestination some-position. That's it.
Step 3: task description
MySimpleTask 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
MySimpleTask setTaskState "CREATED";
And that's it. Here a minimal working example:
MySimpleTask = player createSimpleTask ["simple task title"]; MySimpleTask setSimpleTaskDestination (position player); MySimpleTask setSimpleTaskDescription [ "simple task long description", "simple task title", "simple task waypoint label" ]; MySimpleTask setTaskState "CREATED";
And then later in the mission:
MySimpleTask setTaskState "SUCCEEDED";
If you want to keep the player in the loop about the status of tasks, you may always do this:
[objNull, objNull, MySimpleTask, "SUCCEEDED"] execVM "CA\Modules\MP\data\scriptCommands\taskHint.sqf";