Jump to content
Sign in to follow this  
Rommel

Simple Tasks and Briefing

Recommended Posts

It would seem that a lot of people make briefings, but it just seems so tedious to watch them write out 10 lines with paragraphs fully integrated and it just seems silly. :eek:

I've used this solution for a while now, gives full functionality so I don't see why you wouldn't.

If your not sure from the layout how it works, I'll expand on it more, but it should be pretty simple.

EXAMPLE MISSION - LINK

One thing to note, is that it comes out in order, you don't have to reverse your briefing so it comes out properly, thats already done, so just put as you would 'want it to look like'. ;)

Briefing.sqf

[
[
	"Situation",
	[
		"Following the collapse of the Takistan Goverment, NATO forces are now conducting security and stability operations in Takistan. The Takiban maintain highly operational terrorist cells in the regional and mountainous areas; conducting small scale attacks on local populations in an attempt to overthrow the fledgling NATO backed goverment.",
		"C/S 13D will be assisting in this operation"
	]
],
[
	"Administration and Log",
	[
		"The order of seniority, signals and any other necessary cmd. information will always be given out to you prior to action. If you join in progress, you must wait until you are assigned a unit. Combat after-action reports, are to be posted after the disconnected unit has returned to a transmittable location (field camp or safe location)."
	]
],
[
	"Credits",
	[
		"Mission by Author"
	]
]
]

// do not edit below this

call {
if (not isdedicated) then {
	private "_briefing";
	_briefing = _this;
	waituntil {not isnull player};
	for "_i" from ((count _briefing) - 1) to 0 step -1 do {
		for [{_k = (count (_briefing select _i select 1)) - 1},{_k >= 0},{_k = _k - 1}] do {
			player createDiaryRecord ["Diary", [_briefing select _i select 0,_briefing select _i select 1 select _k]];
		};
	};
};
};

tasks.sqf

[
[
	"task1", //Task Name (GLOBALVAR)
	[
		"Seize the town of Garmarud for FF to advance.", // Task Description Paragraph
		"Seize Garmarud", // Task Title
		"Seize Garmarud" // Waypoint Title
	],
	getmarkerpos "mkr_task1_garmarud" // Task Destination
],
[
	"task2", //Task Name (GLOBALVAR)
	[
		"Return to Base", // Task Description Paragraph
		"RTB", // Task Title
		"RTB" // Waypoint Title
	],
	getmarkerpos "headquarters" // Task Destination
]
]

// do not edit below this

call {
if (not isdedicated) then {
	waituntil {not isnull player};
	{
		private "_task";
		_task = player createsimpletask [_x select 0];
		_task setsimpletaskdescription (_x select 1);
		_task setsimpletaskdestination (_x select 2);
		_task settaskstate "created";
		missionnamespace setvariable [(_x select 0),_task];
	} foreach _this;
};
}

For tasks, use the taskname to update the task, ie from the example task1 above, I would use:

task1 setTaskState "FAILED";

EDIT1: Added link to example mission.

EDIT2: Added secondary task for extended example.

Edited by Rommel

Share this post


Link to post
Share on other sites

Nice work. Can you edit your post to include a debrief file structure? ;) * hint *

:)

Share this post


Link to post
Share on other sites

Hope this helps.

briefing.html

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
	<title>breifing.html</title>
</head>
<body bgcolor="#FFFFFF">
	<! --- ----------------------------->
	<! --- DEBRIEFINGS        -->
	<! --- ----------------------------->

	<hr>
	<h2><a name="Debriefing:End1">Ending #1</a></h2>
	<hr>
	<h2><a name="Debriefing:End2">Ending #2</a></h2>
	<hr>
	<h2><a name="Debriefing:End3">Ending #3</a></h2>
	<hr>
	<h2><a name="Debriefing:End4">Ending #4</a></h2>
	<hr>
	<h2><a name="Debriefing:End5">Ending #5</a></h2>
	<hr>
	<h2><a name="Debriefing:End6">Ending #6</a></h2>
	<hr>

	<! --- ----------------------------->
	<! --- End of DEBRIEFINGS     -->
	<! --- ----------------------------->
</body>
</html>

Also updated first post to include file link to example.

Share this post


Link to post
Share on other sites

Thanks Rommel, but how do you create new tasks while playing ?

So you have task1 and task2 shown during briefing screen and if task1 is finished a new task (task 3) is created.

Share this post


Link to post
Share on other sites
thanks rommel, but how do you create new tasks while playing ?

So you have task1 and task2 shown during briefing screen and if task1 is finished a new task (task 3) is created.

My best suggestion (I did just write up a script that allowed for task dependencies, but it was too linear), is to simply write multiple task.sqf files, naming them maybe taskset1.sqf, taskset2.sqf, and then executing them at different times (perhaps via triggers), obviously it depends on how dynamic your mission is, if your doing something more complex, then perhaps it may be better for you to spend the time making it yourself.

This does not and isn't made to handle the UI or the handling of tasks past the initialization.

Edited by Rommel

Share this post


Link to post
Share on other sites
My best suggestion (I did just write up a script that allowed for task dependencies, but it was too linear), is to simply write multiple task.sqf files, naming them maybe taskset1.sqf, taskset2.sqf, and then executing them at different times (perhaps via triggers), obviously it depends on how dynamic your mission is, if your doing something more complex, then perhaps it may be better for you to spend the time making it yourself.

This does not and isn't made to handle the UI or the handling of tasks past the initialization.

Ok, so if i have a second task.sqf (called task_2.sqf) with the extra task inside and call it with a trigger it will show for every pleayer in MP, no problems there ?

Share this post


Link to post
Share on other sites
Ok, so if i have a second task.sqf (called task_2.sqf) with the extra task inside and call it with a trigger it will show for every pleayer in MP, no problems there ?

Correct, lets presume your trigger fires off on an OPFOR Not Present. The trigger has an OPFOR man at the start. Lets look at the following (common) case.

OPFOR is killed.

Trigger fires OnAct, extended tasks are added to all players.

Player leaves, player rejoins.

As long as that trigger condition is still true, (ie OPFOR not present), then it will fire the onAct for the JIP. If another OPFOR man has entered that trigger during his reconnection, then it will not fire off, as it is not true.

If you want it to go off regardless once it has done it once, then you need to setup a way for the server to tell clients that, this can be done by two triggers, one with the briefing and the original OPFOR not present.

I updated the example mission for you so you can see how to do this.

For more information on how to updating tasks, see the following:

http://forums.bistudio.com/showthread.php?t=73424

Especially the taskhint function found in a link in that thread is very useful. :rolleyes:

Again though, the point of this is simply to ease the creation process, updating tasks/briefing remains the same. So if your reading that thread, and want to use this (simple) system, start reading from 'other commands' onwards.

OTHER GOOD INFORMATION: http://www.kylania.com/ex/

Edited by Rommel

Share this post


Link to post
Share on other sites

I can't get my mission to load the briefing. I haven't added tasks yet and fixed all my formatting.

[231671,6412.16,0,"XEH: PreInit Started. v3.0.6"]

[231671,6412.19,0,"MISSINIT","Siege","chernarus",false,true,false]

[231671,6421.22,0,"XEH: PreInit Finished"]

[231671,6422.55,0,"XEH: VehicleCrewInit: 25"]

[231692,6425.75,0,"XEH: PostInit Started"]

Are any of those errors?

I also don't have a description.ext like in the example.

Share this post


Link to post
Share on other sites

How can I get this script to create a 500 by 500 radius circle on the creation of the task ?

HAZ

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
Sign in to follow this  

×