Jump to content
Sign in to follow this  
Deadfast

MultiTask - Multiplayer tasks made easy

Recommended Posts

Why?

ARMA 2 introduced a brand new task system. Unfortunately for mutliplayer mission makers this system in local and getting tasks synchronized across the network can be a bit of a hassle.

How?

MultiTask is a system which eliminates the synchronization issue by introducing a set of functions equivalent to the game's own task commands (A2S_ prefix + command name), plus a function to broadcast these local changes to all currently connected clients and those who might join in progress later. The system also fully supports stringtable and task descriptions and displays will be shown to the clients in their game language should the mission maker opt for this.

Technical background

MultiTask uses setVariable to handle JIP and public broadcast.

Remote Execution's rSPAWN is used to execute client-side update functions on each machine.

Example mission

Download here. ARMA 2 or Combined Operations are required to run it.

Download

MultiTask v0.2.1 | Example mission

MultiTask v0.1.4 (Includes an Utes example mission)

MultiTask v0.1.3 (Includes an Utes example mission)

MultiTask v0.1.2 (Includes an Utes example mission)

Readme

MultiTask - Multiplayer tasks made easy

Version 0.2.1

Part of A2Script (http://code.google.com/p/a2script/)

Licensed under Creative Commons Attribution-ShareAlike 3.0 Unported (http://creativecommons.org/licenses/by-sa/3.0/)

- You are free to modify this work as long as credit is given to all the previous authors in your readme and your work is licensed under the same license.

Important:

----------

- Requires a functions module to be present!

- Requires Friendly Error (included)

- The task names are global variables, therefore same rules apply (use of TAG_ prefix is strongly recommended - http://www.ofpec.com/faq/index.php?action=read&cat=202&id=56)

- Never use a global variable with the same name as one of your tasks

- All arguments marked as <CODE> expect a code that will be called to form a string. This allows you to use values that will be evaluated on each client independently.

For example you could insert the players name into the task:

{format["%1, you have to destroy the tanks!", name player]}

Or utilize stringtable where each client will have entries displayed in his language (if available):

{localize "STR_a2stext1"}

If plain text is all you're after simply put the string into the code:

{"Sample Task"}

IMPORTANT:

It is perfectly fine to do any kind of scripting inside the code block as long as it RETURNS STRING.

You should NOT place local variables (such as _test) inside the code blocks (unless you really know what you are doing).

Implementation:

---------------

Insert a functions module to your mission and give it a unique name (let's assume it would be TAG_core).

Extract "a2s_multitask.sqf" AND "a2s_friendlyerror.sqh" from the ZIP archive and place it in the root of your mission. BOTH files are needed, one won't work without the other.

Create "init.sqf" in the root of your mission.

Insert <Functions module name> execVM "a2s_multitask.sqf" to the top of "init.sqf", <Functions module name> is the name you had previously given to the functions module:

TAG_core execVM "a2s_multitask.sqf";

Insert [] call A2S_tasksSync; under the execVM line from above. This will make sure all clients joining in progress will have their tasks in sync with the server.

Use the functions described bellow to achieve a multiplayer-compatible task system. You can download an example multiplayer mission for a practical example: http://code.google.com/p/a2script/downloads/detail?name=multitask_v0.2.1_example.utes.zip

Functions:

----------

A2S_taskCommit - applies changes to the given task on all clients, task has to be created using A2S_createSimpleTask beforehand.

- Arguments:

Task name <STRING>

- Returns:

Nothing

- Examples:

"TAG_task1" call A2S_taskCommit;

- Notes:

Function has global effect and can be executed on any machine.

A2S_taskCommitLocal - applies changes to the given task on machine where executed, task has to be created using A2S_createSimpleTask beforehand.

- Arguments:

Task name <STRING>

- Returns:

Nothing

- Examples:

"TAG_task1" call A2S_taskCommitLocal;

- Notes:

Function has only local effect and has to be executed on the machine where results are intended.

A2S_tasksSync - makes sure the machine's tasks are in sync, should be called after joining in progress.

- Arguments:

Nothig <NIL>

- Returns:

Nothing <NIL>

- Examples:

call A2S_taskCommitJIP;

- Notes:

Function has only local effect and has to be executed on the machine where results are intended.

A2S_taskExists - checks whether the given task already exists

- Arguments:

Task name <STRING>

- Returns:

true/false <BOOL>

- Examples:

if (!("A2S_test1" call A2S_taskExists)) then

{

["A2S_test1", {"Destroy enemy tanks"}] call A2S_createSimpleTask;

};

- Notes:

Checks the global value shared among the multiplayer clients/server rather than the local one. You can use isNil _taskName for that.

A2S_createSimpleTask - createSimpleTask counterpart.

- Arguments:

[Task name <STRING>, Title <CODE>] <ARRAY>

OR

[Task name <STRING>, Title <CODE>, Parent task name <STRING>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", "STR_TAG_task1"] call A2S_createSimpleTask;

["TAG_task1_a", {"Do not get spotted"}, "TAG_task1"] call A2S_createSimpleTask;

- Notes:

Task name must follow the rules of a global variable name - only alphabetical characters for the first character and must be unique.

Requires a call to A2S_taskCommit for the clients to add the task.

Function has global effect and can be executed on any machine.

A2S_createTask - createSimpleTask counterpart, same as and alternative to A2S_createSimpleTask.

See A2S_createSimpleTask...

A2S_setSimpleTaskDescription - setSimpleTask counterpart.

- Arguments:

[Task name <STRING>, Full description <CODE>, Task title <CODE>, Map caption <CODE>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", "STR_TAG_task1desc", "STR_TAG_task1", {"Enemy tanks"}] call A2S_setSimpleTaskDescription;

- Notes:

Not required for the task to work.

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_setTaskDescription - setSimpleTask counterpart, same as and alternative to A2S_setSimpleTaskDescription.

See A2S_setSimpleTaskDescription...

A2S_taskDescription - taskDescription counterpart.

- Arguments:

Task name <STRING>

- Returns:

[Full description <CODE>, Task title <CODE>, Map caption <CODE>] <ARRAY>

- Examples:

_taskTitle = ("TAG_task1" call A2S_taskDescription) select 1;

- Notes:

Differs from the taskDescription command by returning the global value shared among the multiplayer clients/server rather than the local one

A2S_getSimpleTaskDescription - taskDescription counterpart, same as and alternative to A2S_taskDescription.

See A2S_taskDescription...

A2S_getTaskDescription - taskDescription counterpart, same as and alternative to A2S_taskDescription.

See A2S_taskDescription...

A2S_setSimpleTaskDestination - setSimpleTaskDestination counterpart.

- Arguments:

[Task name <STRING>, Position <POSITION 3D or POSITION 2D>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", (getPos TAG_u_tank1)] call A2S_setSimpleTaskDestination;

["TAG_task1", (getMarkerPos "TAG_m_tanks")] call A2S_setSimpleTaskDestination;

- Notes:

Not required for the task to work.

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_setTaskDestination - setSimpleTaskDestination counterpart, same as and alternative to A2S_setSimpleTaskDestination.

See A2S_setSimpleTaskDestination...

A2S_taskDestination - taskDestination counterpart.

- Arguments:

Task name <STRING>

- Returns:

Position <POSITION 3D>

- Examples:

_pos = "TAG_task1" call A2S_taskDestination;

- Notes:

Differs from the taskDestination command by returning the global value shared among the multiplayer clients/server rather than the local one.

A2S_getSimpleTaskDestination - taskDestination counterpart, same as and alternative to A2S_taskDestination.

See A2S_taskDestination...

A2S_getTaskDestination - taskDestination counterpart, same as and alternative to A2S_taskDestination.

See A2S_taskDestination...

A2S_setTaskState - setTaskState counterpart.

- Arguments:

[Task name <STRING>, Task state <STRING>] <ARRAY>

- Examples:

["TAG_task1_a", "Failed"] call A2S_setTaskState;

- Returns:

Nothing

- Notes:

Task state has to be one of the following, argument is not case-sensitive:

- "Succeeded"

- "Failed"

- "Canceled"

- "Created"

- "Assigned"

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_taskState - taskState counterpart.

- Arguments:

Task name <STRING>

- Returns:

Task state <STRING>

- Examples:

if (("A2S_test1" call A2S_taskState) == "failed") then

...

- Notes:

Returns one of the following values:

- "succeeded"

- "failed"

- "canceled"

- "created"

- "assigned"

Differs from the taskState command by returning the global value shared among the multiplayer clients/server rather than the local one.

A2S_getTaskState - taskState counterpart, same as and alternative to A2S_taskState.

See A2S_taskState...

A2S_setTaskUnits - sets which units will have the specified task added.

- Arguments:

[Task name <STRING>, Units <ARRAY of OBJECT>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", [TAG_u_guy1, TAG_u_guy2, TAG_u_guy3]] call A2S_setTaskUnits;

- Notes:

Unit can be null when added with the array.

Not required for the task to work, if not specified all players will receive the task.

You can use empty array to remove any unit limitation.

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_addTaskUnit - adds a unit to the list of those which will have the specified task added.

- Arguments:

[Task name <STRING>, Unit <OBJECT>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", TAG_u_guy4] call A2S_addTaskUnit;

- Notes:

Unit can be null when added.

Not required for the task to work, if not specified all players will receive the task.

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_taskUnits - Returns an array of units which will have the specified task added.

- Arguments:

Task name <STRING>

- Returns:

Units <ARRAY of OBJECT>

- Examples:

_units = "TAG_task1" call A2S_taskUnits;

_units =+ ("TAG_task1" call A2S_taskUnits);

- Notes:

WARNING: Returned array acts like a POINTER to the task's local array! Any changes (+, -, set, = nil) will be automatically applied to the source array too. See example #2 for how to avoid it.

A2S_getTaskUnits - Returns an array of units which will have the specified task added., same as and alternative to A2S_taskUnits

See A2S_taskUnits...

A2S_setTaskGroups - sets which groups will have the specified task added.

- Arguments:

[Task name <STRING>, Groups <ARRAY of GROUP>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", [A2S_group1, A2S_group2, A2S_group3]] call A2S_setTaskGroups;

- Notes:

Group's units can be null when added with the array.

Not required for the task to work, if not specified all players will receive the task.

You can use empty array to remove any group limitation.

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_addTaskGroup - adds a group to the list of those which will have the specified task added.

- Arguments:

[Task name <STRING>, Group <GROUP>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", group TAG_u_guy4] call A2S_addTaskGroup;

- Notes:

Group's unit can be null when added.

Not required for the task to work, if not specified all players will receive the task.

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_taskGroups - Returns an array of groups which will have the specified task added.

- Arguments:

Task name <STRING>

- Returns:

Groups <ARRAY of GROUP>

- Examples:

_groups = "TAG_task1" call A2S_taskGroups;

_groups =+ ("TAG_task1" call A2S_taskGroups);

- Notes:

WARNING: Returns a POINTER to the original array! Any changes (+, -, set, = nil) to the returned array will be automatically applied to the local task's array. See example #2 for how to avoid it.

A2S_getTaskGroups - Returns an array of groups which will have the specified task added, same as and alternative to A2S_taskGroups

See A2S_taskGroups...

A2S_setTaskSides - sets which sides will have the specified task added.

- Arguments:

[Task name <STRING>, Sides <ARRAY of SIDE>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", [west, civilian]] call A2S_setTaskSides;

- Notes:

Not required for the task to work, if not specified all players will receive the task.

You can use empty array to remove any group limitation.

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_addTaskSide - adds a side to the list of those which will have the specified task added.

- Arguments:

[Task name <STRING>, Side <SIDE>] <ARRAY>

- Returns:

Nothing

- Examples:

["TAG_task1", east] call A2S_addTaskSide;

- Notes:

Not required for the task to work, if not specified all players will receive the task.

Requires a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_taskSides - Returns an array of sides which will have the specified task added.

- Arguments:

Task name <STRING>

- Returns:

Groups <ARRAY of SIDE>

- Examples:

_units = "TAG_task1" call A2S_taskSides;

_units =+ ("TAG_task1" call A2S_taskSides);

- Notes:

WARNING: Returns a POINTER to the original array! Any changes (+, -, set, = nil) to the returned array will be automatically applied to the local task's array. See example #2 for how to avoid it.

A2S_getTaskSides - Returns an array of sides which will have the specified task added.

See A2S_taskSides...

A2S_removeSimpleTask - removeSimpleTask counterpart.

- Arguments:

Task name <STRING>

- Returns:

Nothing

- Examples:

"TAG_task1" call A2S_removeSimpleTask;

- Notes:

Does NOT require a call to A2S_taskCommit for the change to take effect on all clients.

Function has global effect and can be executed on any machine.

A2S_removeSimpleTaskLocal - removeSimpleTask counterpart.

- Arguments:

Task name <STRING>

- Returns:

Nothing

- Examples:

"TAG_task1" call A2S_removeSimpleTaskLocal;

- Notes:

Function has only local effect and has to be executed on the machine where results are intended.

A2S_taskHint - shows a taskHint for the specified task on all currently connected clients.

- Arguments:

Task name <STRING>

- Returns:

Nothing

- Examples:

"TAG_task1_a" call A2S_taskHint

- Notes:

Function has global effect and can be executed on any machine.

A2S_taskHintLocal - shows a taskHint for the specified task only on the machine the functions is called on.

- Arguments:

Task name <STRING>

- Returns:

Nothing

- Examples:

"TAG_task1_a" call A2S_taskHintLocal

- Notes:

Function has only local effect and has to be executed on the machine where results are intended.

Reserved variables:

-------------------

Please ensure your mission does not use any of the following variables:

- A2S_missionCore

- A2S_errorDisplay

- A2S_taskCommit

- A2S_taskCommitLocal

- A2S_tasksSync

- A2S_taskExists

- A2S_createSimpleTask

- A2S_createTask

- A2S_setSimpleTaskDescription

- A2S_setTaskDescription

- A2S_taskDescription

- A2S_getSimpleTaskDescription

- A2S_getTaskDescription

- A2S_setSimpleTaskDestination

- A2S_setTaskDestination

- A2S_taskDestination

- A2S_getSimpleTaskDestination

- A2S_setTaskDestination

- A2S_setTaskState

- A2S_taskState

- A2S_getTaskState

- A2S_setTaskUnits

- A2S_addTaskUnit

- A2S_taskUnits

- A2S_getTaskUnits

- A2S_setTaskGroups

- A2S_addTaskGroup

- A2S_taskGroups

- A2S_getTaskGroups

- A2S_setTaskSides

- A2S_addTaskSide

- A2S_taskSides

- A2S_getTaskSides

- A2S_removeSimpleTask

- A2S_removeSimpleTaskLocal

- A2S_taskHint

- A2S_taskHintLocal

Edited by Deadfast

Share this post


Link to post
Share on other sites

Updated to version 0.1.3, there was a silly typo in DFS_taskHint.

Share this post


Link to post
Share on other sites

Hmm - getting 'file is corrupt' errors when trying to unpack with winrar 3.93

! C:\Documents and Settings\admin\Local Settings\Temp\multitask_v0.1.3-1.zip: CRC failed in multitask_example.utes\docsTake.sqf. The file is corrupt

! C:\Documents and Settings\admin\Local Settings\Temp\multitask_v0.1.3-1.zip: CRC failed in multitask_example.utes\ending.sqf. The file is corrupt

! C:\Documents and Settings\admin\Local Settings\Temp\multitask_v0.1.3-1.zip: CRC failed in multitask_example.utes\init.sqf. The file is corrupt

! C:\Documents and Settings\admin\Local Settings\Temp\multitask_v0.1.3-1.zip: CRC failed in multitask_example.utes\mission.sqm. The file is corrupt

! C:\Documents and Settings\admin\Local Settings\Temp\multitask_v0.1.3-1.zip: CRC failed in multitask_example.utes\MultiTask.sqf. The file is corrupt

! C:\Documents and Settings\admin\Local Settings\Temp\multitask_v0.1.3-1.zip: CRC failed in MultiTask.sqf. The file is corrupt

! C:\Documents and Settings\admin\Local Settings\Temp\multitask_v0.1.3-1.zip: CRC failed in readme.txt. The file is corrupt

Share this post


Link to post
Share on other sites

Has to be an issue on your end. Opens just fine with WinRAR 3.90 here.

Share this post


Link to post
Share on other sites

Honestly. I'm thinking that it's not going to be worth it to open my mission up in the editor and spend another 10 hours editing 11 objectives and all the triggers and to work with this MultiTask stuff that so far seems to make no sense at all to me. The example mission uses 2 objectives, the first one is to avoid being detected, and the second is to steal documents, which can't even be set as a current task at all. Maybe if there was more solid objective example and if the example scripts weren't filled with so much //blah blah blah//blah blah blah terribly hard to understand one incredibly long unformatted for scripting gods script, lol.

As it is now.. my game is still installed. I find this amazing. If I dare to put several more hours of hard work into my mission to then see it still not working, I will uninstall this omg headache game and throw it in the garbage. I stopped using the editor a couple of weeks ago. I stopped playing the game too. I might play it again one day. All because this JIP stuff is total bullsh*t. It's not worth it. I asked for help with a lot of things. There was always somebody there to help. Now my missions completed and this JIP stuff bit me in the ass, and the little help available isn't making any sense and doesn't seem like it will work easily. I can predict the errors now.

Unless somebody has some other easier tutorial to follow or an example mission or something that makes more sense, I'm going to call it quits. This MultiTask example is not worth the confusion. I opened it in notepad and it was all one big long sentence. I tried opening it in wordpad and I couldn't tell where the comments stopped and the code started. Who ever wrote the script needs to go out to the store and buy a line break.

I'm sorry if I sound upset, but after all the hard work I put in, well... yeah, I'm a little pissed off with this game, the editor and just everything about it.

Edited by A-SUICIDAL

Share this post


Link to post
Share on other sites

The OP has put in a hell of alot of effort into this script and all you can do is complain that you cant figure out JIP etc?

Mate, take your rant somewhere else, this aint the place and have some damn respect.

Share this post


Link to post
Share on other sites
The OP has put in a hell of alot of effort into this script and all you can do is complain that you cant figure out JIP etc?

Mate, take your rant somewhere else, this aint the place and have some damn respect.

I 2nd that. Very disrespectful towards someone who obvoiusly put a lot of hardwork .. for FREE!

Share this post


Link to post
Share on other sites
I can predict the errors now.

That's a huge step ahead than! :) Since you know the errors that are likely to come up, you just need to learn how to deal with them.

Or, just forget JIP entirely. There are plenty of exciting and enjoyable missions where JIPers won't get tasks and can still fully enjoy the mission.

Tasks are just some extra user feedback, not the core of a mission.

Share this post


Link to post
Share on other sites

Everyone gets frustrated but try not to take it out on people who are spending their time trying to make your life easier.

I opened it in notepad and it was all one big long sentence. I tried opening it in wordpad and I couldn't tell where the comments stopped and the code started. Who ever wrote the script needs to go out to the store and buy a line break.

After you've calmed down I suggest you install a proper editor like <cough> squint.

Share this post


Link to post
Share on other sites
The example mission uses 2 objectives, the first one is to avoid being detected, and the second is to steal documents, which can't even be set as a current task at all.

:confused:

...the example scripts weren't filled with so much //blah blah blah//blah blah blah

I don't think removing comments would really help with understanding the code.

I asked for help with a lot of things. There was always somebody there to help. Now my missions completed and this JIP stuff bit me in the ass, and the little help available isn't making any sense and doesn't seem like it will work easily.

Why don't you ask again? I'd be willing to help you if your post actually pointed out the problem.

Who ever wrote the script needs to go out to the store and buy a line break.

I did. Sadly carriage returns were sold out.

The scripts were written in Notepad++ which uses the *nix style line breaking (just \n instead of Windows' \r\n). Any decent text editor is capable of understanding that hence why I don't consider than an issue. Notepad.exe is not a decent text editor ;)

Share this post


Link to post
Share on other sites

you guys are wrong for thinking that i was ranting on his multitask example. I am sorry if i came off sounding that way. all i said was that i couldnt understand it. and it made no sense when i opened it because everything viewed as 1 long sentence. i had to paste all the script into a word doc to makes sense of it, which i did after my last post. i explained that i was upset that i spent a zillion hours on my mission and finally completed it and then i found out about the join in progress problems. thats what im upset about, not the multitask stuff. you misinterpreted what i said, so please dont make it seem as if i was pissed at the guy that created the multitask stuff. am i not allowed to get pissed about the JIP problems after all the work i put into my own mission? is it wrong of me to also stress my opinion that the multitask example didnt make any sense "to me". maybe the scripting geniuses might understand it well, but im having trouble with it. i searched forever to find info on the JIP stuff. i posted and asked and only shk tried to help me and what he suggested didn't work for me and i posted/replied a few more times and nobody replied with any help. i very much appreciated the help shk tried to give me as well as the mutlitask stuff that was made public. most of the missions i've extracted and examined in the editor don't have anything set up for JIP and also have the same problems when i tested. the few mission i know that do work for JIP, like domi west revive, are too impossible to dissect, decipher and understand. so i decided that this JIP is a complete piss off. i bought the game to make missions. i make levels for tons of games. i used to make cold crisis and resistance missions 10 years ago. excuse me if i lost my ofp "now arma2/oa" scripting edge and forgot most of this stuff. there were no jip problems back then. there should definately be more information available regarding JIP. I am very thankful that i saw that somebody came forth with multitask stuff. i just wish i didn't need to take a course to understand it all. i am currently trying my best to make sense of it all. i don't give up very easily so i probably will figure it out eventually. if i can get the jip stuff working, my intensions are to make a mission pack for OA. otherwise i'll be editing for a different game and calling it quits here, which im sure nobody cares either way. though i would miss these forums and what could have been a long fun ride.

I have a ton of respect for many of the members in these forums. sorry if i dont stress it in every reply i might make. sorry if i am upset that the jip stuff for this game is total bs. of the over 20 games i've edited for, i've never heard of needing to update a client that joins a game late. if an objective has been completed already, they should see it as completed when they join late without a mission creator needing to drive himself nuts with a bunch of extra script to update players that join late. it's bs. please dont jump down my back for getting pissed about it. im entitled to be upset with JIP stuff.

---------- Post added at 07:42 PM ---------- Previous post was at 07:18 PM ----------

Who ever wrote the script needs to go out to the store and buy a line break.

lol

is it obvious that this JIP stuff has gotten under my skin? sorry about remark. but yeah, i had to remove all the comments and add line spaces between the code to then try to understand it better.

I have 10 main objectives and a 11th extract objective. the 10 main objectives are simple in design. you simple enter a small trigger area inside an enemy gun nest and the objective is complete, the marker changes from red to green, the task shows as being completed, the respawn_west area and ammo box moves to that marker location, a drumroll sound and hint message appears announcing that the objective has been completed. the 10 trigger objectives are all enemy gun nests that need to be captured. they are roughly 200 to 300 meters apart and can be captured in any order. The trigger is inside the nest and a player simply needs to enter the nest to complete the objective, which is not easy since the enemy heavily defend the objective. As enemy are killed off, new enemy spawn throughout the mission far out of view and move to next objective area. There are a ton of extra features in the mission including some of my own inventive ideas. My friends that have played it think it's some of the best game play they have experienced, and then i started feeling like i wanted to just throw it all in the garbage because of the JIP issues that started to occur. But I'm going to try to figure this multitask stuff out the best i can first.

is there a simple way of explaining how to use the multitask stuff for a trigger like the ones in my mission?

then i can try applying the method to my 10 triggers and figure out my extract objective based on the mutlitask example infiltrate objective.

Share this post


Link to post
Share on other sites
sorry if i am upset that the jip stuff for this game is total bs. of the over 20 games i've edited for, i've never heard of needing to update a client that joins a game late.

Can you name some of those 20 games you've edited?

Who ever wrote the script needs to go out to the store and buy a line break.

:confused: I think its you who needs a line break. :D

Edited by neokika

Share this post


Link to post
Share on other sites

Duke Nukem 3D (43 level total conversion), Shadow Warrior, Unreal, Operation Flashpoint Cold Crisis/Resistance(about 8 or 9 public released missions that included my own med kit script and a reworked version of keygetys spectate script that offered more camera views from different angles and distances - way back around 2002), Unreal Tournament, Tactical-Ops(over 50 maps public released and 5 soundpacks), Unreal Tournament 3, Rainbow Six Raven Shield/Athena Sword (5 Public released maps), Counter Strike Source (very difficult), Joint Ops Typhoon Rising/Escalation, Far Cry (too easy), Crysis, BF2 (but gave up early on), Call of Duty 4 (I hate the engine and the editors are a pain in the ass. I was paid to learn it and then enter a mission design contest), Operation Flashpoint Dragon Rising (1 released coop mission "SHELL SHOCK" and the best coop mission you will ever play for that game, also comes with a training mission, called it quits on OFDR when I bought arma2 and OA), A few other games that I tried using the editor and basically became uninterested but I did learn a lot. Some games I just can't remember off hand. Well, maybe 20 games was a bad estimate on my part, but it feels like I've been editing for a lot more than 20 games. Tactical Ops uses the UnrealEd editor and I must have designed nearly 200 maps, but most were never released. At one point I had 6 TacOps maps in the top 10 for over 6 months at the levelrating website of over 250 custom maps that were rated. Same thing with the nearly 50 Raven Shield maps I made, most were never released. A friend I helped teach how to use the UnrealEd editor, later when he turned 15 years old - he was offered a spot on the design team and later when the mod went retail, his map "CIA" was used as the main image on the cover of the box on the shelf, I helped him every step of the way. I turned down the same offer since I never had any intension to do it for money. It's my favorite hobby and if I was paid to design maps, levels or missions I would then begin to hate it. I am most upset that Rainbow 6 Vegas2 never released an updated UnrealEd version for public use, but since that game can be played on xbox and playstation, they did not want to release the updated UnrealEd because they didn't want guys like me making vegas2 maps for pc users only, which totally sux. I'd be making vegas2 maps right now if they did release the editor. I was the co leader, webmaster and mapper and designer for 4 years, then I was founder and owner of a 50+ member competitive clan for 5 years, my xgirlfriend of 15 years was the leader. I designed the flash site, the forum boards, cgi member application page, bragshots page lol, over 40 flash signature images for members that posted in the forums. I've designed many other clan sites and forums. I'm a graphics designer, web designer, scripter, programmer, 3d Modeler, animator, death metal rhythm guitarist all my life - was in a few awesome bands, used to race street cars too, but then moved to NYC, now at the age of 39 I'll be enlisted and off to afghan land soon. been there done everything and I'm bored, can't wait to go, but I'm not going to let them know that I can use a computer since i want to be in the field where i best belong. Yeah, basically I buy every first person shooter that hits the shelf with the main purpose to learn the editor. For example... I bought games like Men Of Valor, Vietcong, Black Hawk Down, Fear and tried to edit for them and before I became too involved I started to dislike the engine and physics and would steer towards a different editor. I helped teach some friends how to use the UnrealEd editor when the first stages of red orchestra was in development and they later became some of the best designers I've ever known and look how far that game has come since then. They have a new game coming out soon. There are a bunch of games that I have used the UnrealEd editor to create maps for. Stalker was fun. Infiltration. I wanted to learn how to use the counter strike editor so I could work on a game called Hostile Intent, great game back in the day. My main focus now will be creating maps for Duke Nukem Forever. It will be the best game ever. I figure since that's where I started - that is where I would like to finish, but I don't think I will get the chance to edit for the game since I'll probably leaving before it releases.

Edited by A-SUICIDAL

Share this post


Link to post
Share on other sites
:eek:

JIP is the least of your problems, lets get a handle on Paragraphs first, then move on to Tasks. ;)

Share this post


Link to post
Share on other sites

Good god, A-SUICIDAL... I got a massive headache trying to read your post.

But anyhow: If this causes issues you could also try the "Taskmaster" by SHK.

Share this post


Link to post
Share on other sites

told ya i was bored. lol. i'll keep the posts short from now on. though i do like reading other peoples long posts. I'll search around for the "Taskmaster" by SHK that you mentioned. thank you.

---------- Post added at 04:43 AM ---------- Previous post was at 04:16 AM ----------

it says that taskmaster is for dedicated servers only. i cant use that. i wish i could. thanks tho

Share this post


Link to post
Share on other sites
Need Grammer... ;)

There is no way I am going to read your post mate even though I want to, please sort out some grammatical errors, ie the whole post!

Share this post


Link to post
Share on other sites

I haven't started "JIPing" my mission yet, but I've looked at and can see that it will be a hassle. I've bookmarked this one though: http://forums.bistudio.com/showthread.php?t=100679 but I'll most likely try this first.

That being said, I do agree with you on BIS' part. Why couldn't this be standard behavior? Why do we have to manually fix this, it makes no sense. But that's another discussion for another forum.

Share this post


Link to post
Share on other sites
you guys are wrong for thinking that i was ranting on his multitask example. I am sorry if i came off sounding that way. all i said was that i couldnt understand it.

and it made no sense when i opened it because everything viewed as 1 long sentence. i had to paste all the script into a word doc to makes sense of it, which i did after my last post.

i explained that i was upset that i spent a zillion hours on my mission and finally completed it and then i found out about the join in progress problems. thats what im upset about, not the multitask stuff. you misinterpreted what i said, so please dont make it seem as if i was pissed at the guy that created the multitask stuff.

am i not allowed to get pissed about the JIP problems after all the work i put into my own mission? is it wrong of me to also stress my opinion that the multitask example didnt make any sense "to me". maybe the scripting geniuses might understand it well, but im having trouble with it.

i searched forever to find info on the JIP stuff. i posted and asked and only shk tried to help me and what he suggested didn't work for me and i posted/replied a few more times and nobody replied with any help. i very much appreciated the help shk tried to give me as well as the mutlitask stuff that was made public.

most of the missions i've extracted and examined in the editor don't have anything set up for JIP and also have the same problems when i tested. the few mission i know that do work for JIP, like domi west revive, are too impossible to dissect, decipher and understand. so i decided that this JIP is a complete piss off. i bought the game to make missions.

i make levels for tons of games. i used to make cold crisis and resistance missions 10 years ago. excuse me if i lost my ofp "now arma2/oa" scripting edge and forgot most of this stuff. there were no jip problems back then. there should definately be more information available regarding JIP.

I am very thankful that i saw that somebody came forth with multitask stuff. i just wish i didn't need to take a course to understand it all. i am currently trying my best to make sense of it all. i don't give up very easily so i probably will figure it out eventually. if i can get the jip stuff working, my intensions are to make a mission pack for OA. otherwise i'll be editing for a different game and calling it quits here, which im sure nobody cares either way. though i would miss these forums and what could have been a long fun ride.

I have a ton of respect for many of the members in these forums. sorry if i dont stress it in every reply i might make. sorry if i am upset that the jip stuff for this game is total bs. of the over 20 games i've edited for, i've never heard of needing to update a client that joins a game late.

if an objective has been completed already, they should see it as completed when they join late without a mission creator needing to drive himself nuts with a bunch of extra script to update players that join late. it's bs.

please dont jump down my back for getting pissed about it. im entitled to be upset with JIP stuff.

---------- Post added at 07:42 PM ---------- Previous post was at 07:18 PM ----------

Who ever wrote the script needs to go out to the store and buy a line break.

lol

is it obvious that this JIP stuff has gotten under my skin? sorry about remark. but yeah, i had to remove all the comments and add line spaces between the code to then try to understand it better.

I have 10 main objectives and a 11th extract objective.

the 10 main objectives are simple in design. you simple enter a small trigger area inside an enemy gun nest and the objective is complete, the marker changes from red to green, the task shows as being completed, the respawn_west area and ammo box moves to that marker location, a drumroll sound and hint message appears announcing that the objective has been completed.

the 10 trigger objectives are all enemy gun nests that need to be captured. they are roughly 200 to 300 meters apart and can be captured in any order. The trigger is inside the nest and a player simply needs to enter the nest to complete the objective, which is not easy since the enemy heavily defend the objective.

As enemy are killed off, new enemy spawn throughout the mission far out of view and move to next objective area. There are a ton of extra features in the mission including some of my own inventive ideas.

My friends that have played it think it's some of the best game play they have experienced, and then i started feeling like i wanted to just throw it all in the garbage because of the JIP issues that started to occur. But I'm going to try to figure this multitask stuff out the best i can first.

is there a simple way of explaining how to use the multitask stuff for a trigger like the ones in my mission?

then i can try applying the method to my 10 triggers and figure out my extract objective based on the mutlitask example infiltrate objective.

  • Duke Nukem 3D (43 level total conversion)
  • Shadow Warrior
  • Unreal
  • Operation Flashpoint Cold Crisis/Resistance(about 8 or 9 public released missions that included my own med kit script and a reworked version of keygetys spectate script that offered more camera views from different angles and distances - way back around 2002)
  • Unreal Tournament
  • Tactical-Ops(over 50 maps public released and 5 soundpacks)
  • Unreal Tournament 3
  • Rainbow Six Raven Shield/Athena Sword (5 Public released maps)
  • Counter Strike Source (very difficult)
  • Joint Ops Typhoon Rising/Escalation
  • Far Cry (too easy)
  • Crysis
  • BF2 (but gave up early on)
  • Call of Duty 4 (I hate the engine and the editors are a pain in the ass. I was paid to learn it and then enter a mission design contest)
  • Operation Flashpoint Dragon Rising (1 released coop mission "SHELL SHOCK" and the best coop mission you will ever play for that game, also comes with a training mission, called it quits on OFDR when I bought arma2 and OA)
  • A few other games that I tried using the editor and basically became uninterested but I did learn a lot.

Some games I just can't remember off hand. Well, maybe 20 games was a bad estimate on my part, but it feels like I've been editing for a lot more than 20 games.

Tactical Ops uses the UnrealEd editor and I must have designed nearly 200 maps, but most were never released. At one point I had 6 TacOps maps in the top 10 for over 6 months at the levelrating website of over 250 custom maps that were rated. Same thing with the nearly 50 Raven Shield maps I made, most were never released.

A friend I helped teach how to use the UnrealEd editor, later when he turned 15 years old - he was offered a spot on the design team and later when the mod went retail, his map "CIA" was used as the main image on the cover of the box on the shelf, I helped him every step of the way. I turned down the same offer since I never had any intension to do it for money. It's my favorite hobby and if I was paid to design maps, levels or missions I would then begin to hate it.

I am most upset that Rainbow 6 Vegas2 never released an updated UnrealEd version for public use, but since that game can be played on xbox and playstation, they did not want to release the updated UnrealEd because they didn't want guys like me making vegas2 maps for pc users only, which totally sux. I'd be making vegas2 maps right now if they did release the editor.

I was the co leader, webmaster and mapper and designer for 4 years, then I was founder and owner of a 50+ member competitive clan for 5 years, my xgirlfriend of 15 years was the leader.

I designed the flash site, the forum boards, cgi member application page, bragshots page lol, over 40 flash signature images for members that posted in the forums. I've designed many other clan sites and forums.

I'm a graphics designer, web designer, scripter, programmer, 3d Modeler, animator, death metal rhythm guitarist all my life - was in a few awesome bands, used to race street cars too, but then moved to NYC, now at the age of 39 I'll be enlisted and off to afghan land soon.

been there done everything and I'm bored, can't wait to go, but I'm not going to let them know that I can use a computer since i want to be in the field where i best belong.

Yeah, basically I buy every first person shooter that hits the shelf with the main purpose to learn the editor. For example... I bought games like Men Of Valor, Vietcong, Black Hawk Down, Fear and tried to edit for them and before I became too involved I started to dislike the engine and physics and would steer towards a different editor.

I helped teach some friends how to use the UnrealEd editor when the first stages of red orchestra was in development and they later became some of the best designers I've ever known and look how far that game has come since then. They have a new game coming out soon.

There are a bunch of games that I have used the UnrealEd editor to create maps for. Stalker was fun. Infiltration.

I wanted to learn how to use the counter strike editor so I could work on a game called Hostile Intent, great game back in the day. My main focus now will be creating maps for Duke Nukem Forever. It will be the best game ever. I figure since that's where I started - that is where I would like to finish, but I don't think I will get the chance to edit for the game since I'll probably leaving before it releases.

OK, there we go...

This is the last time I'm deciphering this, next time please reply with paragraphs and capital letters at the start of your sentences.

Have you tried browsing through the mission with something that actually displays line breaks properly? Do not mind multitask.sqf, you don't need to understand that at all.

Share this post


Link to post
Share on other sites

I'm trying to figure out how I can make the mutlitask stuff work in my mission. So I've turned the "steal documents" thing in your mission into a trigger so you simply enter the trigger radius and then it execs the docsTake.sqf and deletes the trigger. But lets say that when the documents are stolen that I would want the "Commander's Barracks" marker to turn green for everybody including JIP players that join later. Would that be possible? And if so how would I make that happen?

There are other things that I would want to make happen too, like moving a respawn_west marker to that marker position, an ammo box, change a flag texture at that location, etc, but for now I'm just asking about the marker color since the "Commander's Barracks" marker is already in your example mission.

Once I can get some of this stuff figured out I will then apply it to my own mission. I have no intention of using your example mission for anything other than to experiment with and learn from.

Sorry about the other long post. Deadfast did ask me...

Can you name some of those 20 games you've edited?

If my reply to Deadfast was too long for anybody, well, what can I say. Don't read it. Nobody is twisting your arm.

As for my long paragraph from hell with no caps, typos and bad grammar, well... I spend my work days proof reading and fixing grammer in high end websites for big companies, making sure everything is perfect, so when I'm in a forum board I tend to type like I'm sending a text message on my phone because... I can, and it's easier, and I don't care nor give it much thought. I don't see why its such a big deal how I type. I see others do it in these forums. But since Deadfast is being so helpful and mature, and basically putting up with me... I'll work on my grammar here.

If it's okay with everybody, I'd like to stick to the MultiTask topic and understand as best I can - how I can incorporate the same MultiTask system into my mission. The more I've studied it, the more its starting to make sense, but I'm still a little lost. Yeah, the "Commander's Barracks" marker color, how would I make that change for everybody including JIP?

Edited by A-SUICIDAL

Share this post


Link to post
Share on other sites

Sorry, but that is a general JIP problem that MutliTask was never designed to solve. I can only point you to the wonderful remote execution with unfortunate lack of documentation :( For any further question you will need a different thread as it would be off-topic for this one.

and if my reply was too long for anybody, well, then dont read it. nobody is making you.

And how could I know you weren't offering me $1,000 without first reading all of it since you don't paragraph?

i dont see why its such a big deal how i type. i see others so it in these forums.

Remember how hard it was for you to read my stuff in Notepad with no linebreaks? Well, look at your posts...

They are a terrible wall of text which is incredibly hard to read an most people won't even bother.

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  

×