Skip to content

Missionmaker guide

Flavio Kleiber edited this page May 24, 2018 · 3 revisions

Sektor erstellung

Um einen Sektor zu erstellen, muss als erstes ein Marker im Editor platziert werden. pta_sector_mySectorName Wichtig, dass System wird diesen Marker als Zentrum des Sektors anschauen. Der Markertype spielt keine Rolle, er wird dann vom System ersetzt.

Nun muss der Sektor noch in die Config eingetragen werden. Dazu im Missionsordner in den Ordner config gehen und dort die CfgSectors öffnen. Dort tragt ihr euren Sektor folgendermaßen ein.

x steht hier für einen Namen oder Nummer

class pta_sector_x {
    name="sector_X";
    marker="pta_sector_X";
    attackTargets[] = {"pta_sector_X_attack"}; // Mind. 1 Marker definieren, der das Angriffsziel ist
    resource[] = {"Fuel"}; // Möglich hier sind: Diesel, Fuel, Kerosene
    tasks[] = {"pta_task_sector2"}; // Könnt ihr die Klassennamen der Tasks einfügen die in diesem Sektor sein sollen
    province[] = {"pta_province_1"}; // Provinzen können im moment ignoriert werden
};

Wenn dies gemacht ist, könnt ihr den Sektor oben hinzufügen

class CfgSector {
  sectors[] = {"pta_sector_1", "pta_sector_2", "pta_sector_3", "pta_sector_x"};
.......

So und das wars der Sektor ist nun ready.

Task erstellung

Die Taskerstellung ist fast genau so einfach wie, die für den Sektor. Alls erstes müsst ihr in den Ordner config und dort die Datei mit dem Namen CfgTaskSystem.hpp öffen.

Nun könnt ihr euren Task hier eintragen:

class pta_task_sectorX {
      name = "Destroy AA"; //Name of the task
      desc = "There are 2 AA's in the AO, destroy them!"; // Description of the task
      markerName = "pta_task_sector2"; // The name of the empty marker that you have given in the mission
      taskType = "kill"; //https://community.bistudio.com/wiki/Arma_3_Tasks_Overhaul#Default_Task_Types:_Actions
      winCond = "(!alive (aa1)) && (!alive(aa2))"; // Hier könnt ihr die condition für den task eintragen !WICHTIG AA1 & AA2 SIND AUF DER MAP PLATZIERT UND HEISSEN AUCH SO
      unit[] = {"pta_inf_ft", "pta_inf_squad", "pta_inf_squad"}; // Units die initial spawnen sollen.(Siehe dazu den Unitseintrag)
    };

Die Tasks müssen nicht wie die Sektoren noch extra eingetragen werden. Die Tasks werden beim Sector angegeben.

!!!!ACHTUNG AB HIER NICHT WEITERLESEN, DIE NACHFOLGENDEN INFOS SIND VERALTET!!!!

EH's

Wenn eine Task als "Geschafft" angesehen werden soll, kann z.b. über ein Trigger dann das Tasksystem getriggert werden. Hierzu einfach in die onActivation folgendes eintragen:

["pt_onTaskCompleted", ["pt_exmapleTask1"]] call CBA_fnc_globalEvent;

Das was in den eckigen Klammern(Array) steht, ist der Name des Tasks. Also der gleiche Name wie der Classname in der Config.

Tasksystem

Das Tasksystem von Project Tacoma wurde so ausgelegt, dass es schon vieles dem Missionbauer abnimmt. Wer nun einen neuen Task erstellen will geht wie folgt vor:

  1. Die Datei mit dem Namen CfgTaskSystem.hpp öffnen
  2. Dort unter dem Eintag class CfgTaskSystem eine neue Klasse anlegen. Diese könnte so aussehen.
class pt_exmapleTask1 {

    name = "Example"; //Name of the task
    desc = "Example desc"; // Description of the task
    markerName = "pms_exampleTask1"; // The name of the empty marker that you have given in the mission
    taskType = "kill"; //https://community.bistudio.com/wiki/Arma_3_Tasks_Overhaul#Default_Task_Types:_Actions
    reward = 20 //How many tickets they get for this
    minPlayer = 5; //Min player who you need for this mission
    maxPlayer = 10; //Max player who you need for this mission

    //lists here all side tasks
    sideMissions[] = {"pt_exampleSideTask"};

    class sideTasks {

      class pt_exampleSideTask {

        name = "Example Side"
        desc = "Example Side desc!";
        markerName = "pms_exampleSideTask1"
        taskType = "scout";
        reward = 10;
        minPlayer = 2;
        maxPlayer = 4;

      };

    };

  };

!!!WICHTIG!!! Wenn ihr keine Sidemissions definieren wollt, dann die Variable sideMissions so definieren:

sideMissions[] = {};
  1. Wenn dies nun alles getan ist, dann noch die Klasse(in unserem Beispiel pt_exmapleTask1) noch in das Array tasks eintragen:
tasks[] = {"_pt_exmapleTask1 "};