Jump to content

Recommended Posts

Shuko, I noticed the same thing with the task order. When creating multiple tasks at the initialisation of shk_taskmaster the top one in the init.sqf is always on the bottom of the list.

eXpouk - try the new addition to make task1 current. ^^ look at Shuko's post #46

Share this post


Link to post
Share on other sites

Well well, it seems they have changed the order the tasks are displayed on the list. In A2 you had to create them in reverse order, so I made the script to go through them backwards enabling the user to input them in init.sqf in the correct order. So, now in A3 they were unnecessarily reversed. I also removed the automatic assignment for current task for every new task created. Use the command added in 0.36 to set current task if you need to.

Version 0.37

Changed: Task creation order was reversed in Arma 2. It was changed in Arma 3. Changed the order in script to be correct with A3. Automatic current task assignment was removed, use the SHK_Taskmaster_setCurrentLocal.

Share this post


Link to post
Share on other sites
Guest

New version frontpaged on the Armaholic homepage.

==================================================

We have also "connected" these pages to your account on Armaholic.

This means in the future you will be able to maintain these pages yourself if you wish to do so. Once this new feature is ready we will contact you about it and explain how things work and what options you have.

When you have any questions already feel free to PM or email me!

Share this post


Link to post
Share on other sites

Cheers Shuko!

---------- Post added at 08:48 ---------- Previous post was at 08:20 ----------

Is there a way of making it check whether two or more tasks are complete using

"Task1" call SHK_Taskmaster_isCompleted

I've tried "Task1","Task2" and ["Task1","Task2"] but neither has worked. Basically I want it to check if Task 1 and Task 2 are complete before assigning Task 3.

Share this post


Link to post
Share on other sites

@eXpouk - Try this:

"Task1" call SHK_Taskmaster_isCompleted && "Task2" call SHK_Taskmaster_isCompleted

Dirty Haz

Share this post


Link to post
Share on other sites

Version 0.38

Added: SHK_Taskmaster_isCompleted now takes multiple tasks are parameter. Also, added SHK_Taskmaster_areCompleted as a wrapper function.

Changed: Some code cleaning.

Share this post


Link to post
Share on other sites

Can you please add support for more marker options such as brush and size? I want to make a big red circle 350x350 instead of just a marker...

Dirty Haz

Share this post


Link to post
Share on other sites
Can you please add support for more marker options such as brush and size? I want to make a big red circle 350x350 instead of just a marker...

Dirty Haz

Version 0.39

Added: More marker options.

     Marker        array     Marker related to the task. It will be created only for the units who have the
                             task. Marker will be hidden after task is completed. Can be an array of marker
                             arrays, if you want to create multiple markers.
       Name        string    Name of the marker to create.
       Position    string    Position of the marker.
       Type        string    Marker type. Optional, default is "selector_selectedMission".
       Color       string    Marker color. Optional, default is red.
       Text        string    Marker text.
       Shape       string    Marker shape: Icon, Ellipse, Rectangle
       Size        number or array     Marker size. If number given, it's used for both X and Y dimension.

Share this post


Link to post
Share on other sites

Thank you!!! :)

Dirty Haz

Share this post


Link to post
Share on other sites

Alright, so started using this, and I love it. Thanks a ton Shuko!

Did have one question. If I set up a task for something simple like gathering intel and then using an object with an addaction, I'm having issues with the updating of the task. So, in my init I have the following:

    [[
     ["task_1","Search for Intel","Search for enemy intel at the small village."],
    ],[
     ["Note1","Hello West",WEST],
     ["Credits","<br />Made by: Shuko of LDD Kyllikki<br />Contact: shuko@Quakenet<br />www.kyllikki.fi"]
   ]] execvm "shk_taskmaster.sqf";

Everyone sees the Task as well as the briefing info without a problem. I then drop an object at the location with the following in it's initialization field:

this allowdamage false;this addaction ["Gather Intel","gatherIntel.sqf","task_1",1,true,true,"","_this distance _target < 3"];

Everyone can see the "Gather Intel" option when they are within 3 meters of the object and can trigger it.

Finally, I have a simple script called "gatherIntel.sqf" in my root folder that's just this:

_task = _this select 3;
[_task,"succeeded"] call SHK_Taskmaster_upd;

Seems to work with the caveat that only the person that is the host/server seems to be able to actually run that call because the update will only happen when that person does the addaction. Any thoughts?

Edited by Meatball

Share this post


Link to post
Share on other sites
Meatball, one thing - SUCCEEDED needs to be in full caps.

Nah, it doesn't.

---------- Post added at 10:54 AM ---------- Previous post was at 10:51 AM ----------

Seems to work with the caveat that only the person that is the host/server seems to be able to actually run that call because the update will only happen when that person does the addaction. Any thoughts?

Actions are only run locally on the machine the action was used. Task updates, however, are meant to be run on server. So, you need to tell the server, in a way or the other. One alternative would be:

_task = _this select 3;
[[_task,"succeeded"],"SHK_Taskmaster_upd",false] spawn BIS_fnc_MP;

Untested, hopefully the parameters are correct.

Share this post


Link to post
Share on other sites
Meatball, one thing - SUCCEEDED needs to be in full caps.
Nah, it doesn't.

Doh!, must have thought of the BIS functions - sorry.

I have successfully used BIS_fnc_mp to make sure Diary notes (using taskmaster) are added to all units in a group.

It works well. So your last code Shuko should work pretty well.

Although pushing it to server with false, will that make your own code kick in? Or would it be a safe bet to update to the player's side?

Share this post


Link to post
Share on other sites

Although pushing it to server with false, will that make your own code kick in? Or would it be a safe bet to update to the player's side?

The update function has isserver check in it anyway. No point to run on clients. Client update is done through PVEH.

Share this post


Link to post
Share on other sites

_task = _this select 3;
[[_task,"succeeded"],"SHK_Taskmaster_upd",false] spawn BIS_fnc_MP;

The syntax appears to at least be working right as it runs and updates the task for me. I'll test it with some MP this evening. Thanks!

---------- Post added at 11:56 ---------- Previous post was at 11:35 ----------

One quick followup question as well. Does anyone know if with the script or any BIS commands if there's any way to organize/format the tasks in the Briefing? For example, in a mission with 100 or so unrelated tasks, is there any way to group them together in any way so they don't all just show up in a huge list of 100 tasks? For example, Create four directional 'headings' for the tasks breaking them by what portion of the map the tasks are located. So, if there are 25 in each area when you open up the tasks you just see the four headings, N, S, E, W and then if you click on any of the headings it breaks out the tasks in that heading/area?

Share this post


Link to post
Share on other sites

I don't think there's any grouping. Anyway, having 100 tasks sounds a bit overkill.

Share this post


Link to post
Share on other sites

Yeah, it is, was really just an example. Wondering what's the cleanest way to handle a mission with a lot of tasks that the players don't have to finish in any specific order.

Can the

[[taskname,"Succeeded"],"SHK_Taskmaster_upd",false] spawn BIS_fnc_MP;

be called in a trigger's 'On Act." field? Seem to be having issues getting that to fire with a simple trigger watching for an object to blow up.

Share this post


Link to post
Share on other sites
Wondering what's the cleanest way to handle a mission with a lot of tasks that the players don't have to finish in any specific order.

Create the tasks only when they're needed. Or a 'cluster' of tasks even.

Share this post


Link to post
Share on other sites
Yeah, it is, was really just an example. Wondering what's the cleanest way to handle a mission with a lot of tasks that the players don't have to finish in any specific order.

Can the

[[taskname,"Succeeded"],"SHK_Taskmaster_upd",false] spawn BIS_fnc_MP;

be called in a trigger's 'On Act." field? Seem to be having issues getting that to fire with a simple trigger watching for an object to blow up.

If it's an "!alive myObject" or "damage myObject > 0.7" type of trigger (which is created in editor), then you don't need to use the fnc_MP at all. However, that shouldn't be the cause of the problem though. Have you tested that the trigger really does go off?

Share this post


Link to post
Share on other sites

Yeah, I did test it with a hint and it did fire. And I had to add a 'nul = ' before the rest of the code. Worst case I can force it to spawn an additional script to run the Taskmaster_upd, just hoping to avoid the extra step. :)

Share this post


Link to post
Share on other sites

Yeah, but if it's a trigger which was added in editor, it will be present on the server as well. Unless the condition is something that would cause it to not fire on server, then you shouldn't need to do any tricks in the first place.

Share this post


Link to post
Share on other sites

I think I figured it out. I needed to put quotation marks around the task name for some reason when it's in a trigger ON ACT. box, and when it's in script, you don't need the quotation marks.

This works for triggers:

nul = ["taskname","succeeded"] call SHK_Taskmaster_upd;

Yet to test it out in MP yet though.

Share this post


Link to post
Share on other sites

The first parameters is always the task name in string format. Doesn't matter if you write it straight in it or pass it via a variable, as long as it's a string.

Share this post


Link to post
Share on other sites

Alright, I've run across a strange issue and wanted to see if anyone had any thoughts. I'm using Taskmaster in my latest mission and it's working great. There's over 60 tasks throughout the mission and with Taskmaster I'm able to easily create, update and add tasks on the fly without a problem. I've got one task that's really giving me some issues though and it's not set up any differently than the rest. I'm going to dive a bit into some extra details just so it's apparent what I'm doing.

So here's the task, there's four bridges on western Altis north of the city of Kavala, the task is to move in and blow up those four bridges. I've got the task defined in my init.sqf as follows:

["task_40","Destroy Bridges - Kavala","A major north-south road system <marker name=""task_40"">travels north from Kavala</marker> and crosses four bridges.  <marker name=""B40A"">Knock</marker> <marker name=""B40B"">out</marker> <marker name=""B40C"">all</marker> <marker name=""B40D"">four</marker> bridges to snarl enemy supply and troop transports along the west coast."]

Additionally I've set up a variable in init.sqf : bridges40Down = 0;

The task shows up in the list fine for everyone. Next I need to watch for the bridges to collapse. Unlike a lot of buildings, bridges need to be handled a bit differently to monitor when they are destroyed. So I have a piece of gameLogic parked on each of the four bridges that sets a variable for the bridge and then sets a secondary variable with the height of the bridge.

bridge40A = nearestBuilding this;initHeightBridge40A = getPos bridge40A select 2;

I then have a trigger watching each bridge to see when the height of the bridge is no longer the same as the initial height of that bridge with the following condition.

getPos bridge40A select 2 != initHeightBridge40A;

For the action I have:

bridges40Down = bridges40Down +1;

Last, but not least, I have one last trigger watching for when all four bridges go down with the following condition:

bridges40Down == 4;

Then in the On Action I have:

nul = ["task_40","succeeded"] call SHK_Taskmaster_upd;"task_40" setmarkertype "hd_flag";"task_40" setmarkercolor "ColorBluFor";

So here's the rub. In a regularly hosted game, when the players blow up all four bridges the task updates and the marker type/color change. When the mission is hosted on a dedicated server on the other hand, I still know that last trigger fires because the marker type/color change, but the Task never updates. I'm at a bit of a loss at this point. All the other tasks are set up in a similar fashion and working fine in mission, even when hosted on a dedicated box.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×