Skip to content
Raven edited this page May 8, 2019 · 1 revision

In diesem Beitrag soll erläutert werden, wie der Aufbau einer Mission auszusehen hat, die CLib verwenden will. Außerdem wird darauf eingegangen, wie CLib so konfiguriert wird, dass die gewünschten Addons geladen werden.

CLib-Missionsstruktur

In einer Mission, die CLib einsetzen will, müssen folgenden Dateien enthalten sein:

  • mission.sqm
  • description.ext
  • init.sqf

Soweit so bekannt. Die mission.sqm kann ganz normal im Editor erstellt werden. Für sie gelten keine besonderen Regeln.

In der description.ext muss eine Klasse namens CLib angelegt werden. In dieser werden die zu ladenden Module (Addons) über das Feld Modules[] spezifiziert, Außerdem können einige experimentelle Features von CLib explizit abgestellt werden. Insgesamt könnte das so aussehen:

class CLib {
    Modules[] = {"CLib", "OPT"};

    useExperimentalAutoload = 0;
    useCompressedFunction = 0;
    useFallbackRemoteExecution = 0;
};

In der init.sqf muss das CLib-System gestartet werden, von wo aus Clib die Kontrolle an seine eigenen entry points übergibt. Hierfür muss Folgendes in der init stehen:

waitUntil {!isNil "CLib_fnc_loadModules"};
[] call CLib_fnc_loadModules;

Module/Addons laden

Wie bereits im vorherigen Abschnitt erwähnt, werden die Module, die für diese Mission geladen werden sollen, über das Feld Modules[] in der description.ext spezifiziert. Hierbei gibt es zwei Möglichkeiten:

  1. Es wird der Mod-/Addon-Name angebeben. in diesem Fall werden einfach alle Module der jeweiligen Mod geladen und gestartet.
  2. Es werden konkret Module innerhalb einer Mod angegeben. Hierfür wird die Syntax <ModName>/<ModulName> verwendet (Dh. Mod- und Modulname sind durch einen Slash voneinander getrennt). So wird nur dieses eine, spezifische Modul aus der Mod geladen und alle anderen Module, die ggf. in der Mod enthalten sind, werden nicht geladen (es sei denn, das geladenene Modul, hängt von ihnen ab).

Beispielsweise lädt Modules[] = {"OPT"} alle Module aus der Mod mit dem Namen "OPT", wohingegen Modules[] = {"OPT/ModulA"} nur das Modul mit dem Namen "ModulA" aus der Mod mit dem Namen "OPT" lädt.

Clone this wiki locally