# So you want to make a mission? A Tutorial

## Recommended Posts

After my tutorial for ArmA 2 here, I decided to make an updated version for ArmA 3. As many of the principles are the same, this will borrow heavily from the last one, and hopefully not take 4 hours to write!

In this mission we're going to have a US light infantry platoon assault a squad of pesky Russians on Altis.

Load up ArmA 3 in windowed mode and go into the editor. For this we will be using the Single Player editor, but there is also a Multiplayer editor which is essentially the same.

Open up Altis, and go to the area of Therisa at grid 1012. See the compound at grid 111122? That'll be our Russian held Objective, and grid 104122 will be our start line.

Now we need to start placing our platoon. I have helpfully given you a template available here. This includes a US Infantry platoon using the TB3 Loadout script, which you can read more about here. The documentation is good enough that I am not going to explain how to use it all here, so if you want to create your own units then read the TB3 documentaton. You can find classnames for UO stuff here and up-to-date RHS stuff here.

Download the template & extract the .rar to your missions folder, which will be found under My Documents > ArmA 3 >Missions or My Documents > ArmA 3 Other Profiles > NAME > Missions

Go back into ArmA 3 and click load. You should be able to load up the template on Altis. Do so!

The platoon will be at the main airfield at grid 142162, the mass of the blue dots with purple lines around them. Click and drag the mouse and you will see it make a box, put the box around all of the units to select them all, then click and drag one unit and the whole lot should move. Do this to move the platoon to grid 104122. When you have done so, you should see something like this:

Under Save As, for UO missions, we really only need to be concerned with User Missions and Export to Multiplayer. Do not save as Export to Multiplayer until you are ready to upload your mission to either the test or primary servers. For this tutorial, leave it as User Mission. Save the mission as CO31_My_First_Mission_v1. If you go back to your Mission Folder, you will have a folder with this name. Copy the description.ext file and the tb3 folder from the template into this new folder, but not the mission.sqm file! So you should have a folder that looks like this:

Once you have done this you will have a US Infantry Platoon ready to go, fully equipped and prepared to deal out death for oil. Remember to keep saving your work. For the "Preview" mode of the mission (where you can go in game taking control of the Player unit, that's the one with the Red Circle) you will have to save it for the scripts to be included. You can preview now if you want and have a look at the platoon. Once you're ingame, just hit Escape and click Save & Exit to get back to the editor.

If you want to change who is the player or look at the unit's init, double click on the blue circle. You should see this screen:

The "Control" field selects who can use it. Player will be who you preview as, and Playable can be selected in the Multiplayer mission (the player unit can also be slotted into). So everyone you want to be an actual player ingame, needs to be either player or playable. There can only be one player unit.

Now we need to place some enemy! Move other to grid 111122. Press F1 to go into Unit mode. Double click in the compound and you should be presented with a screen similar to the above picture, but you can change the side. Change the Side to OpFor, and the faction to  FCR (because those guys look badass). Place a rifleman with the rank of "Corporal" - he'll be our enemy squad leader.

Place 5 more riflemen with the rank of Private, and 3 Rifleman (GP-25)s, also privates. Make sure they are all grouped together, if they are, you will see blue lines coming from the corporal unit to all of the others. If one doesn't have a line, press F2 to go into Group mode and click and drag from the private to the corporal. Do this until all of them are connected to the Corporal, like this:

Now you have some dastardly Russian for your Freedom and Oil loving Americans to destroy! However, as it is, there is a slight problem. Our Ruskies will just form a wedge and stay there until they get in contact - not a great mission. There are a few things we can do. We could set the group waypoints, which will let them patrol, or we can make them occupy nearby buildings. For this group we want them occupying the buildings. There are two ways to do this, a lazy way which isn't very good, and a hard way that can take a very long time.

The lazy way is to click our Corporal and write in his init box:

The red bit tells ArmA which unit (in this case the unit that has the line of script in it's init code) to use, the green call is just a command to start using the function, and the yellow is the name of the function. The ; at the end tells arma that this bit of code has finished.

This calls a CBA function that will make them run into nearby buildings, however they can still do exceedingly stupid things and put themselves in crap firing positions, meaning that the mission will be a cakewalk for the players.

The long method is, using the disableAi "move" command and setUnitPos command to individually place them. To do this, we're going to need a player unit nearby so we can see them. Obviously, if we use a BluFor unit the AI will shoot it, so add another OpFor rifleman nearby and set him to be the player. Ungroup this unit by pressing F2, clicking on the unit and dragging the cursor into open space before releasing. He'll now be in a group by himself:

Remember to keep saving. The Editor in ArmA 3 crashes even more than the one in ArmA 2, and it can be a pain to have to redo stuff. So every time you do something, and just before you preview, save!

We're going to have a rifleman occupy the building in the North West, the one with a brown rectangle attached to it. This building is a small construction site. Click and drag one of our riflemen to a position on the left hand edge, about halfway along. Double click on the rifleman and set his Azimuth to 285 and elevation to 4. Type into his Init box:

this disableai "move"; this setunitpos "middle";

The red text tells ArmA what unit the command is going to be executed on - this one. The yellow texts are known as Scripting Commands. The green texts are strings, in this case telling the Scripting Command what part of the AI to disable and what unit position the unit should be in. Check out the links I put earlier for these scripting commands to learn more about their syntax.

Now click OK and your screen should look like this:

Save it!

If you now preview, you should be able to see our lone rifleman in his building. The others will run off and occupy random other buildings (they seem to like the one to the North). As you can see, some of them are being a bit dumb and facing walls etc. You can place as many as you want using the above method, or all of them. I prefer using a mixture, putting the entire unit on Task Defend and then having a handful individually placed all in the same group. This means they'll still talk to each other but some at least will have good firing positions. Once you've finished adjusting these units, delete the Rifleman we've been using to preview and set the US Platoon Commander back to Player.

SAVE!

We're also going to have a small group patrolling the surrounding countryside. Add a separate group with a Rifleman (G-25) who is a corporal, and 3 riflemen who are privates:

This small team is going to be our pesky patrollers!

Click on the corporal and press F4 to go into waypoint mode. Double click to the North.

Now, there's lots of stuff here - but don't be worried, it's pretty simple. Change Combat Mode to Open Fire, Engage at Will. This will allow the AI to engage more easily and is their equivalent of "Weapons Green". Hold Fire is "Weapons Yellow", and No Fire is "Weapons Red". Change formation to Column, speed to limited, and Behavior to Safe:

Click OK and your patrol will move to this waypoint. Double click again to the North East of the compound and leave all of the fields as "No Change". When you click OK you'll be able to see the route the patrol will take (roughly). Make another waypoint to the South East.

Now, we want our patrol to keep patrolling, rather than do one circuit and then stop. So, for our last Waypoint in the South West, where it says "Select Type", change it to cycle:

Hit OK and the waypoints should form a square around the objective. Well done! The group will now patrol.

Guess what? SAVE!

Now, we're going to need only 3 more things ingame. We're going to need markers, we are going to need modules and we are going to need some game logics.

First onto markers, press F6 to go into Marker Mode. Double Click over the platoon at grid 104122.

Set the icon to Marker, leave the colour as default, the name should be "startpos" and the text "Starting Position":

Click OK and we will have a marker over the platoon! Markers only only visible when you're in Marker Mode (F6). Create another marker over the enemy, with an Objective icon, the name "obj" and the Text Objective Alpha.

If you zoom out, your battlefield will now look like this:

Save!

Now we need some game logics for the scripts we are going to use. Game logics are usually used to mark positions on the map for the script to use. We'r going to have 3, one to say where the objective is, another to say where the spectator camera starts, and another to say where the spectator pen will be (where the players will actually go when they die. Heaven, if you will.)

Game Logics are a type of Unit, so if you hit F1 and double click, you should be able to see a Side called Game Logics. Select a normal game logic by changing the class to object, and set the name as "objective". Put this game logic in the objective:

Make another called "hill" near the objective, and one called "specpen" a good distance out. Do these three, then SAVE!

We now need to set up some modules. The only ones that are really 100% required are the CMS modules. Hit F7 and put down the module Combat Medical System under the category CSE Medical.

Use the following options:

Survival Difficulty: Veteran.
Enabled for: Players only.
Enable Airway: No.
Vehicle crashed: Yes.
Disposable Aid Kit: No.
Medics only: Yes.
Aid kit: Everywhere and no bleeding.
Bandage time: 5.
Can stitch: Medics only

You're also going to want to the put down the Set Medic Class, with pcls in the "list" field. Your medic has already been named pcls by the template. There are many other modules which are fairly open for you to use, use whatever you want, but make sure you know what each one does!

Here's the documentation for CSE.

That's pretty much it for the ingame editor. The only other thing to do is click on the cloud at the top, here you can set the name - what will appear to the admin on the mission select screen, the description - this will be what is in the little box in the bottom left of the mission select screen and the Time, Date and Weather.

From now own, we're pretty much going to be using notepad, or Notepad++

First of all there are some script that you will be needing, that can be downloaded here. This has a AIHearsTalking script, a spectator script and a JIP teleport script. As much as I'd like to take credit, someone else made all of them.

Put the folder scripts into your mission folder:

The scripts folder should include the following:
aiHearTalking.sqf

gdtmod_spectator.sqf

initTeleportToSL.sqf

playerDeath.sqf

specAction.sqf

TeleportToSL.sqf

Now, we're going to need to initialize these scripts. Create a new file using notepad or notepad++ and type in:

// This is my init. There are many like it but this one is mine!


and save it in your mission folder as "init.sqf".

This script will fire at the start of the mission.

Underneath that type:

// Scripts
[] execVM "scripts\aiHearTalking.sqf";
[] execVM "scripts\initTeleportToSL.sqf";
[] execVM "scripts\playerDeath.sqf";


Now all of these scripts will start working as soon as the game starts.

Now we're going to want to make some end conditions so that our Freedom loving Americans can see if they have successfully destroyed the evil Russians.

Open a new file with Notepad (from now on I will just say Notepad, but I suggest you use Notepad++). We need to make the script loop, i.e continuously see if the end conditions are met rather than check once and then end. To do this we type in:

while {true} do {
sleep 15;

};

The red text is the loop, the cyan text is when the loop should run (this could be a variable set in another script), and the yellow makes the script wait for 15 seconds (this helps with server performance).

Everything we do subsequently will go between the sleep 15; and the };

Now, what we put into the loop is the important stuff. First of all we need to make it so that when there are no more enemies in the objective, the mission ends as a victory. To do this, we use this line of code:

if ({side _x == east && (_x distance objective) < 150} count allUnits == (0)) then {[-2, {execVM "scripts\end1.sqf";}] call CBA_fnc_globalExecute;};

The text in red is the "if" code, this is basically asking a question, much like a trigger. The first bracket is the condition, while the second is the effect.

The Cyan means that ArmA will count the number of units that fit into the green & yellow text's categories, and if it equals 0, will make the condition ture, so that the if statement executes the effect. The text in yellow defines what side we are looking for, _x is a name in the script that is used to fill space. The two orange && mean "AND", telling ArmA that to fit in the category the unit it's searching for needs to fit in both the yellow and green categories.

The green text makes a category of anything within 150 metres of the location "objective" that we placed earlier. The violet text, the effect, runs the script "end1.sqf", that we will create in a minute, globally.

Apart from winning, there is also the possibility that the players will take too many casualties and lose, for this we use this line of script:
if (tickets >= 10) then {[-2, {execVM "scripts\end2.sqf";}] call CBA_fnc_globalExecute;};

The only new bit here is the red code, that means if the value "tickets" (which goes up by 1 each time someone dies) is equal to, or greater than 10, the script "end2.sqf" that we will create in a minute, will be executed on every client.

Save it in the Scripts folder as endconditions.sqf.

Now we're going to need to initialize this script in the init.sqf. We need to have it server side, so type the following into your init.sqf:

if (isServer) then
{
// End Conditions
[] execVM "scripts\endconditions.sqf";
};

tickets = 0;

The red text means that everything within the { }; runs on the server and the server only. The green text is commented out by the // so ArmA ignores it, it is used so that we can more easily see what our own stuff is doing. The yellow text executes the endconditions script, while the cyan text creates the tickets value and sets it to 0.

Save your init.sqf, it should look like this:

// This is my init. There are many like it but this one is mine.

// Scripts
[] execVM "scripts\aiHearTalking.sqf";
[] execVM "scripts\initTeleportToSL.sqf";
[] execVM "scripts\playerDeath.sqf";

if (isServer) then
{
// End Conditions
[] execVM "scripts\endconditions.sqf";
};

tickets = 0;


Now, in endconditions.sqf we executed 2 different scripts, end1.sqf and end2.sqf. The former is executed if the players win, the latter if they lose.

These are really simple scripts that will end the mission after a title screen.
Each one will look fairly similar, just with different wording, so this would be end1.sqf:

titleText ["Objective Complete.", "BLACK"];
removeAllWeapons player;
sleep 10;
[-2, {endmission "END1";}] call CBA_fnc_globalExecute;

The red text is the title screen, it will make the screen go black and show the words "Objective Complete". The orange text removes the player's weapon, so that you don't get fools firing into the air etc.

We already know what the yellow text does from the loop, and the green text actually ends the mission globally (although this script is done globally I like to also end it globally just to make sure it DOES end on everyone's PC at the same time).

Save it as end1.sqf in the scripts folder. To make it end2.sqf make a new notepad file, but change "Objective Complete" to "You lost too many men." and END1 to END2, and save this as end2.sqf in the scripts folder.

We're getting close to the end you, and I, will be glad to know!

There are a couple more things we must do with our init.sqf. At the moment the view distance has not been set, the briefing has not been called and, as this was written before it was added server-side, the annoying radio messages will continue. To do all of this, add the following to your init.sqf:


setViewDistance 2000;

// Briefing
[] execVM "briefing.sqf";

enableSentences false;


Very little of this is brand new, and the stuff that is is self explanatory.

In total, your init.sqf should look like this:

// This is my init. There are many like it but this one is mine.

// Scripts
[] execVM "scripts\aiHearTalking.sqf";
[] execVM "scripts\initTeleportToSL.sqf";
[] execVM "scripts\playerDeath.sqf";

if (isServer) then
{
// End Conditions
[] execVM "scripts\endconditions.sqf";
};

tickets = 0;

setViewDistance 2000;

// Briefing
[] execVM "briefing.sqf";

enableSentences false;



Save!

Now go back into your missions folder and take a look at the description.ext. At the moment there is some code in there that is only used by the TB3 Loadout system - DO NOT TOUCH THIS CODE. However, we need to add other stuff to our description.ext.

Type in:

author="ME!";

OnLoadMission = "I AM A GOD OF MISSION MAKING.";

respawn = "BASE";
respawndelay = 3;
respawnDialog = 0;

disabledAI = 1;

The first three lines will set the text that is shown as players are loading in. The author should obviously be your own name, the OnLoadName the name of the Mission and the OnLoadMission should be a short description or something to do with the mission. Really it could be whatever you wanted, a quote from someone Call Of Duty style or a Random fact about the mission. I personally put the Mission Statement from the briefing in there.

The text in red deals with respawn, it's set to base but don't worry, this is only so that the spectator script works. The yellow text disables having AI on your side - as this never happens at UO for a reason, it's a good idea to save the GM some bother.

Save the description.ext and it should look like this:

author="ME!";
OnLoadName = "This is my first mission.";
OnLoadMission = "I AM A GOD OF MISSION MAKING.";

respawn = "BASE";
respawndelay = 3;
respawnDialog = 0;

disabledAI = 1;

class Extended_PreInit_EventHandlers {
class tb3 {
init = "call ('tb3\preInit.sqf' call SLX_XEH_COMPILE)";
};
};

class CfgSettings {
class CBA {
class Caching {
compile = 0;
xeh = 0;
functions = 0;
};
};
};


Now we are going to have to make a briefing. The Briefing of the mission is extremely important, as it can set the tone for the entire mission. If it confused people then the mission will go to crap, but if it doesn't include much information then people will already have a bad opinion of the mission, and less than tactical play may occur because of a poor briefing.

But do not worry! Help is at hand! The MMO has provided a set of Guidelines that must be adhered to here. As it says, the exact template doesn't have to be used, but all of the information does. You can either use the template there or the one I am about to make - it is up to you.

First of all though, you have to make a new notepad file with the line:
// Briefing

and save it as briefing.sqf in the root mission folder - not the scripts bit.

Type the following into the briefing.sqf:

if (!isDedicated) then {

if (isNull player) then {
waitUntil {!isNull player};
};

};

These are not really required, but a good idea. The rest of the scripting will go between the two final };s.

To create an entry in the briefing put
player createDiaryRecord ["Diary",["ENTRY TITLE","ENTRY CONTENT"]];

Remember, to start a new line you must put <br /> like HTML, and that the order is reversed, so the entry at the top of the script is displayed at the bottom.

My briefing for this tutorial is this:

  waitUntil {!isNull player};
};
player createDiaryRecord ["Diary",["Mission Notes","

Mission Created by Herbiie. Special thanks to Toadball for the TB3 Loadout.<br/>
<br/>
CMS enabled:<br/>
Survival Difficulty: Veteran.<br/>
Enabled for: Players only.<br/>
Enable Airway: No.<br/>
Vehicle crashed: Yes.<br/>
Disposable Aid Kit: No.<br/>
Medics only: Yes.<br/>
Aid kit: Everywhere and no bleeding.<br/>
Bandage time: 5.<br/>
Can stitch: Medics only.<br/>
<br/>
END CONDITIONS:<br/>
- All enemy at Objective Alpha are destroyed.
<br/>
LOSE CONDITIONS:<br/>
- More than 8 Men have been killed.<br/>
"]];

player createDiaryRecord ["Diary",["Command And Signals","
Command Location: Behind assaulting element<br/>
<br/>
i) Chain of Command:<br/>
PL - PSG - 1 - 2 - 3
<br/>
ii) Callsigns:<br/>
Battalion Commander - 6<br/>
A Company Commander - A'6<br/>
1 Platoon Commander - A'1'6 - Channel 4<br/>
1st Squad - A'1'1 - Channel 1<br/>
2nd Squad - A'1'2 - Channel 2<br/>
3rd Squad - A'1'3 - Channel 3<br/>
2 Platoon Commander - A'2'6<br/>
3 Platoon Commander - A'3'6<br/>
B Company Commander - B'6<br/>
iii) Frequencies:<br/>
1 Platoon Net: Channel 1<br/>
2 Platoon Net: Channel 2<br/>
3 Platoon Net: Channel 3<br/>
<br/>
Challenge: Charlie Charlie<br/>
Response: Sierra Sierra<br/>
"]];

player createDiaryRecord ["Diary",["Service Support","
i) SOP Variations<br/>
Dress: None<br/>
Equipment: None.<br/>
Weapons: None<br/>
<br/>
ii) Logistic Support<br/>
Replen Plan: None for 24h<br/>
Ammunition: Each man carries his own ammunition.<br/>
IPE: Helmets and body armour are to be worn at all times.<br/>
<br/>
iii) Medical<br/>
Location: With Platoon Sergeant.<br/>
CASEVAC: By foot.<br/>
Plan: Set up a Casualty Collection Point and extract casualties to this point.<br/>
Stretchers: None<br/>
Med Packs: Platoon medpack carried by Platoon CLS.<br/>
Morphine: 1 per man.
"]];

player createDiaryRecord ["Diary",["Execution","
i) Commander's Intent<br/>
It is the Commander's intent to launch a platoon attack in order to destroy enemy at Objective Alpha.<br/>
<br/>
ii) Scheme of Manoeuvre<br/>
Move north, using fire to fix enemy forces in Objective Alpha and assaulting to desroy enemy forces.<br/>
<br/>
iii) Main Effort<br/>
The Company's main effort is the is the destruction of the enemy at Objective Alpha, and this lies with 1 Platoon.<br/>
<br/>
iv) Sub-Ordinate Missions.<br/>
To be confirmed.<br/>
<br/>
CO-ORDINATING INSTRUCTIONS:<br/>
i) Timings:<br/>
No move before 1200h<br/>
Objective Clear by 1300h<br/>
<br/>
ii) Control Measures:<br/>
Line of Departure: Grid 104122<br/>
Boundaries: North - 126 Northing. East - 114 Easting. South - 120 Northing.<br/>
Method of Movement: By foot.<br/>
<br/>
iii) Surprise and Security.<br/>
Hide Areas: None.<br/>
Deception: None.<br/>
<br/>
iv) Actions On<br/>
Prisoners: Extract to the Line of Departure<br/>
CivPop: Do not engage and direct away from fighting.<br/>
<br/>
v) CBRN Plan<br/>
MOPP Level: 0<br/>
Detection Plans: None.<br/>
Alarms: Verbal 'Gas Gas Gas'<br/>
Reporting: Verbal 'Gas Gas Gas'<br/>
Contamination Countermeasures: None<br/>
"]];

player createDiaryRecord ["Diary",["Mission","
1st Platoon is to DESTROY enemy forces at Objective Alpha in order to prevent the enemy from regrouping.
"]];

player createDiaryRecord ["Diary",["Situation Friendly","
i) Higher's Mission<br/>
It is the Company's mission to DESTROY enemy forces within boundries In Order To allow the Brigade to advance.<br/>
<br/>
ii) Composition<br/>
We have 1x Light Infantry Platoon with no Attachments.<br/>
<br/>
iii) Supporting Fires<br/>
None.<br/>
<br/>
vi) Location and actions of neighbouring forces.<br/>
We have 2 and 3 platoons to our rear.<br/>
<br/>
vii) CIVPOP<br/>
There is expected to be a no Civilian presence in the area.
"]];

player createDiaryRecord ["Diary",["Situation Enemy","
i) Strength<br/>
Enemy are believed to be between 8-12 strong.<br/>
<br/>
ii) Locations<br/>
Suspected to be inside the compounds at Objective Alpha.<br/>
<br/>
iii) Weapons<br/>
A mixture of small arms included AK74s and GP-25 grenade launchers.<br/>
<br/>
iv) Equipment<br/>
They are wearing regular Russian uniforms, they have helmets, body armour and NODs.<br/>
<br/>
v) Obstacles<br/>
None.<br/>
<br/>
vi) Defensive Fires<br/>
The enemy have no artillery or mortars.<br/>
<br/>
vii) Air Threat<br/>
None<br/>
<br/>
viii) Morale<br/>
Enemy morale is low due to their recent defeats.<br/>
<br/>
ix) CBRN Threat<br/>
The enemy pose no CBRN threat.<br/>
<br/>
x) Future intentions<br/>
The enemy intend to regroup and move North to regroup with further enemy forces.
"]];
player createDiaryRecord ["Diary",["Situation Mission","
Russian forces have been seen retreating to the compound at Objective Alpha. These forces must be destroyed the prevent the enemy from regrouping.
"]];

We are 1 Platoon, A company, 1st Battalion, 9th Infantry Regiment.
"]];

player createDiaryRecord ["Diary",["Preliminaries","
Security of O-Group:<br/>
Provided by 2nd and 3rd Platoon.<br/>
<br/>
Weather:<br/>
First Light: 0530h<br/>
Last Light: 1900h<br/>
<br/>
Forecast: Weather is expected to remain clear with little or no rain and a little fog.<br/>
Visibility: Good.
"]];

}; 

There! You have created a super-simple mission. Frankly, the one that's been made here won't be much good for the server, it'd be fairly easy and be a bit boring. However, you now have all of the principles and you can start building on this to create better and more complicated missions, although when it doubt: Keep It Simple Stupid.

Have a read of the Mission Making SOPs so you know more about what is expected of you:

Edited by Herbiie

Well written tutorial.  Thanks for the effort Herbiie.

One question I have is that whenever I made missions for A2, I always made them with the multiplayer editor (hosting a local server then launching the editor from the mission list) because I thought I read somewhere that it somehow helped with server-side scripts or something because you were testing on a [local] server as opposed to a SP mission?  This was like a year or so ago that I picked the habit up.  Is there any real difference?

Edited by Rich

Sometimes in the singleplayer editor scripts will break because they can't be used in multiplayer, it's an issue but not one that occurs frequently.

I use the Singleplayer editor because it's faster to preview as you don't go to the briefing or anything.

There are literally only 2 advantages to the MP editor:

#1. You can see and test slotting

#2. isMultiplayer returns true.

Good job, Herbiie. I hate you a little less now!

I am joking... I still hate you the same amount.

...

<3

Thanks!

Edited by Gabee

Good job, Herbiie. I hate you a little less now!

I am joking... I still hate you the same amount.

...

<3

Thanks!

The lion does not concern himself with the opinions of the sheep....

The lion does not concern himself with the opinions of the sheep....

ouch.

The effort is appreciated, hopefully my missions will be re-made using it.

How would you suggest to make the Loadout Index update when JIPs join in the briefing screen?

For the people who are already on the server?

You can't. The briefing pages (and that's essentially what the loadout index is) can't be changed or removed, only added.

Hey Herbiie, awesome work, super informative. One thing I would say however would be to never use disableAI "MOVE" because it removes the AI's ability to turn to face you even if it knows you are standing right next to it. From my own testing plus what other people have said, the AI is restricted to turning about 15 degrees either direction. Instead, I would just remove the AI from the group.

You can also try using

this forcespeed 0;

works for me

For the people who are already on the server?

You can't. The briefing pages (and that's essentially what the loadout index is) can't be changed or removed, only added.

So basically the loadout index will only show the groups and players that were connected to the servers before the briefing screen, essentially the slotting screen?

Yes.

Edit: JIPs will see the loadouts of the people who are on the server when they join, so they can see more/less than the people who were on from the start depending on whether people have connected/disconnected.

Edited by VKing

Hey Herbiie, awesome work, super informative. One thing I would say however would be to never use disableAI "MOVE" because it removes the AI's ability to turn to face you even if it knows you are standing right next to it. From my own testing plus what other people have said, the AI is restricted to turning about 15 degrees either direction. Instead, I would just remove the AI from the group.

Removing them from the group means that the rest of the AI will be slower to react to players. Lots of individual guys is bad for server performance too.

*edit*

KMO, I'll give that a try, didn't think about it before!

Edited by Herbiie

We now need to set up some modules. The only ones that are really 100% required are the CMS modules. Hit F7 and put down the module Combat Medical System under the category CSE Medical.

Just as an FYI, the CSE Medical module shouldn't be required anymore (it is set server-side, as are most other CSE things), though the one that sets the Medic itself is still necessary. CSE is somewhat inconsistent with regards to modules overwriting server settings, though I do believe it works for the Medical if you want things like medevac to play a role. Edited by TinfoilHate

TinfoilHate, on 20 Jan 2015 - 04:21, said:

Just as an FYI, the CSE Medical module shouldn't be required anymore (it is set server-side, as are most other CSE things), though the one that sets the Medic itself is still necessary. CSE is somewhat inconsistent with regards to modules overwriting server settings, though I do believe it works for the Medical if you want things like medevac to play a role.

I have no idea what I'm taking about but ...

I understand that mission makers are required to modify/override the server settings to allow medics to do their job. If class cse_basicRevive" "enableFor =" is not changed from 0 to 1 then a player with severe wounds dies very quickly, before the medic has a chance to apply specific 'medic role' aid. Apparently some (or many) mission makers are not doing this and the result is that the medic role is redundant because people do not live long enough (unconscious, but alive) to receive treatment.

If I have this confused perhaps someone else could explain. If I am correct perhaps someone can explain where and what scripting to place.

Edited by Jimbo

That's incorrect Jimbo, what was actually happening was that setting the CSE Medical difficulty level to "expert" meant that you would suffer fatal injuries immediately. Hence why the CSE server config was dropped to veteran to allow for casualty treatment.

As Tin said, mission based CSE modules will override the server CSE config at the moment. For new MM's the config is already done as Herbiie listed with the only change being that vehicle injuries (where you go the the pain state after a "crash") is disabled.

Edited by Deathstrike

As Tin said, mission based CSE modules will override the server CSE config at the moment. For new MM's the config is already done as Herbiie listed with the only change being that vehicle injuries (where you go the the pain state after a "crash") is disabled.

Is there somewhere we can view what the server CSE settings are?

Also (can't edit post) does this mean the mission submission SOP on indicating what medical system is in use is irrelevant?

CSE modules are forced by the server?why isn't this information available on the forums/wiki/prominent location?I was under the impression that its not - my submitted mission relies on BI medical

Thanks for the support Herbiie. Well, to be fair I used mainly the A2 version of this tutorial you had made. Now used this one to counter check the setup of my first attempt of a mission.

I have to be honest, I didn't quite get the process with the testing server. Can I just upload it there and test run it there or does this also require a verification from someone first?
I roamed the forum, perhaps oversaw the correct information :/

Thanks for the support Herbiie. Well, to be fair I used mainly the A2 version of this tutorial you had made. Now used this one to counter check the setup of my first attempt of a mission.

I have to be honest, I didn't quite get the process with the testing server. Can I just upload it there and test run it there or does this also require a verification from someone first?

I roamed the forum, perhaps oversaw the correct information :/

Both testing servers are free for any mission maker to use. You just need to upload your mission with a program like filezilla and connect to the ftp with this post. Please make sure that your mission actually works first as it can be quite annoying to find someone to shut the server down. Once you are done with your testing, (assuming you are logged in as admin) you can shut down the server and remove your mission on the ftp client.

waitUntil {!(isNull player)};


Before you call the

[] execVM "briefing.sqf";


I think this should fix any issues with jip not seing the briefing.

I think this should fix any issues with jip not seing the briefing.

Type the following into the briefing.sqf:

if (!isDedicated) then {

if (isNull player) then {

waitUntil {!isNull player};

};

};

Or add it into the briefing.sqf as it says in the tutorial.