Compatible with v7.0c (26/03/2011)

And finally we come to the jewel of making missions in ArmA II --- making real sandbox free-roam game.

Required readings :

  1. rEXECVM and Dedi
  2. Ultimate tasking
  3. Ultimate spawning

If you've read everything carefully and you are already successfully playing with WICT features, you will easily understand that this tutorial just gives you overview of the possibilities that WICT offers.

In the v5.3 I made several scripts that will help you with making excellent sandbox games, and I improved them in v6.0 and make even better in v7.0 with some additional features. By calling the script sandbox_exe.sqf, at any time, you can execute any scenario / chapter / pre-defined mission ....

Tasks are controlled with taskCreator and you can "branch" any story you want.

All high-end features from previous versions of WICT are still here, but I made basic layout easier, so you can now just copy / paste bases around and configure types, instead of configuring each base individually.

Writing a story can be really fun and you can use these if you need:

Random Conspiracy Theory (just to inspire you)

The Random Name Generator

Codename, codeword or project name using the generator

I summarized here all videos I created. They are the fastest guide to making a sandbox game.

Here is basic layout you can use in any text editor in combination with Find/Replace All.

Just save this blue text below the line in some text editor and use Find/Replace ALL to get code you need.

// Data

task_loc ---- replace this with the location of the task, e.g. Airport base
marker ---- replace this with the name of the marker e.g. mixedBase_1
task_name ---- replace this with the name of the task, e.g. Primary: capture enemy base!
task_msg ---- replace this with task body text
trigger_name ---- replace this with the trigger that will activate mission
side ---- WEST or EAST

//Here is all coding you need :

// Tasks
[nil,nil,rEXECVM,"WICT\sandbox\sandbox_exe.sqf","WICT\sandbox\","taskCreator","task_loc","marker","yes","task_name","task_msg","yes","all"] call RE;

task_report = ["task_name","s"]; publicVariable "task_report";
task_report = ["task_name","f"]; publicVariable "task_report";
task_report = ["task_name","c"]; publicVariable "task_report";

// Murklor's Editor based AI script by trigger
catch_trigger = "trigger_name"; publicVariable "catch_trigger";
null = [this,"trigger_name","repeated",4,30] execVM "WICT\sandbox\murk_spawn.sqf";
null = [this,"trigger_name","wave",5,60] execVM "WICT\sandbox\murk_spawn.sqf";
null = [this,"trigger_name","reset",5,0] execVM "WICT\sandbox\murk_spawn.sqf";
null = [this,"trigger_name","once",0,0] execVM "WICT\sandbox\murk_spawn.sqf";

// Leader's init lines AI
null = [(group this),(getPos this),250] execVM 'WICT\AI\BIN_taskPatrol.sqf';
null = [(group this),(getPos this),250] execVM 'WICT\AI\BIN_taskSweep.sqf';
null = [(group this),(getPos this)] execVM 'WICT\AI\BIN_taskDefend.sqf';
null = [] execVM 'WICT\AI\static.sqf';

// Paratroopers
null = [this,"trigger_name","once",0,0,"[[side,'HQ'],nil,rSIDECHAT,'Enemy chopper!'] call RE;"] execVM "WICT\sandbox\murk_spawn.sqf";
null = [this,"trigger_name","once",0,0,"{ _x moveInCargo plane; _x assignAsCargo plane} forEach (units paras);"] execVM "WICT\sandbox\murk_spawn.sqf";
[[side,'HQ'],nil,rSIDECHAT,'PARATROOPERS DROPPING!'] call RE; nul = [] spawn {{sleep (random 0.6); _x action ['eject', vehicle _x]; unassignVehicle _x;} forEach (units paras);};