Skip to content

userloadouts.hpp

Moritz Schmidt edited this page Jun 26, 2020 · 4 revisions

In USER\userloadouts.hpp können wir eigene Loadouts definieren, die dann in der missionsettings.hpp auswählbar sind. Wenn man vorher nie Klassen benutzt hat, ist das nicht ganz einfach. Brauchen wir keine eigenen Loadouts, so können wir diese Seite komplett überspringen.

Im Folgenden wollen wir beispielhaft Polizei Loadouts erstellen. Alle verwendeten Namen können analog zu den Beispielen für die eigenen Loadouts frei gewählt werden.

GRAD Loadout

Das verwendete Modul - Gruppe Adler Loadout - ist ein klassenbasiertes Loadoutsystem, das von Fusselwurm auf Basis von A3G Loadout entwickelt wurde. Die vollständige Dokumentation mit allen Details zum Loadoutsystem gibt es unter github/gruppe-adler/grad-loadout auf Englisch. Wir beschäftigen uns auf dieser Seite aber zunächst nur mit unserem speziellen Anwendungsfall, nämlich Loadouts für unsere Mission zu erstellen.

Vorarbeit

Im Ordner node_modules\grad-factions-tvt finden wir die Datei TEMPLATE.hpp. Diese kopieren wir uns in den USER Ordner und benennen sie um zu Polizei.hpp. Diese Datei müssen wir jetzt in unsere userloadouts.hpp einbinden, indem wir schreiben:

#include "Polizei.hpp"

Für alle weiteren Loadouts wird genauso verfahren. Falls wir später zum Beispiel noch mehr Loadouts für Verbrecher erstellen wollen, würden wir die Datei Verbrecher.hpp einfach wie folgt einbinden:

#include "Polizei.hpp"
#include "Verbrecher.hpp"

Damit sind wir mit der userloadouts.hpp fertig, speichern und schließen sie, und öffnen die Datei Polizei.hpp.

Optionale Gegenstände

Jetzt öffnen wir unsere Police.hpp Datei und legen zunächst die optionalen Gegenstände fest, die der Benutzer des Loadouts über die loadouts.hpp auswählen kann. Die Einträge CLASSNAME müssen durch die Klassennamen der gewählten Gegenstände ersetzt werden. Festgelegt werden:

NIGHTVISION Nachtsichtgerät
LASERS Waffenlaser
GUNLIGHTS Waffenlampen
SUPPRESSORS Schalldämpfer

Es geht hier nicht darum, ob wir diese Gegenstände selbst verwenden wollen, sondern nur darum, dass wir sie der Vollständigkeit halber festlegen damit zumindest die Option gegeben ist.

Für Vanilla Nightvision würden wir also das Folgende schreiben:

#ifdef NIGHTVISION
  #define NVITEM "NVGoggles"
#else
  #define NVITEM ""
#endif

Loadoutkürzel

In Zeile 25 verändern wir jetzt den Eintrag LOADOUTNAME zu einem Kürzel, das zu unserer Loadoutkategorie passt (z.B. Police). Dieser Name ist der, der in der loadouts.hpp von Benutzer ausgewählt wird.

class Police {

AllUnits

Direkt darunter finden wir die Klasse AllUnits. In dieser Klasse ist festgelegt, welche Ausrüstung zunächst alle Einheiten erhalten sollen. Die Klassennamen der einzelnen Gegenstände tragen wir zwischen den Anführungszeichen ein, oder lassen Sie leer, wenn dieser Typ Gegenstand nicht vergeben werden soll. Achtung, alle Einträge mit LLITEM, SUPPRESSORITEM, NVITEM lassen wir unberührt.

uniform Uniform
vest Weste
backpack Rucksack
headgear Helm / Hut
primaryWeapon Primärwaffe / Gewehr
primaryWeaponOptics Primärwaffen-Visier
handgunWeapon Sekundärwaffe / Pistole
binoculars Fernglass
map Karte
compass Kompass
watch Armbanduhr
gps GPS
radio Funkgerät

Beispiel:

  class AllUnits{
    uniform = "ARC_GER_Flecktarn_Uniform";
    vest = "ARC_GER_Flecktarn_Plate_Carrier";
    ...

Type

In der Klasse Type werden jetzt die Feinheiten für die einzelnen Soldatenklassen definiert. Jeder hier gelistete Einheitentyp hat bereits alle Gegenstände, die wir ihm in der AllUnits Klasse gegeben haben. Weiterhin erben alle Einheiten vom normalen Rifleman Soldier_F. Das bedeutet alles, was wir dem Rifleman geben, erhalten auch alle anderen Einheiten sofern wir die Einträge nicht überschreiben.

Beispiel: Der Autorifleman überschreibt die Primärwaffe, die er aus der Klasse AllUnits erbt, mit dem MG arifle_SPAR_02_blk_F. Außerdem überschreibt er den Rucksack, den er vom Rifleman erbt mit dem ARC_GER_Backpack_Flecktarn. Er hat aber weiterhin die gleiche Uniform, Weste, etc. wie alle anderen spielbaren Einheiten.

//Rifleman
class Soldier_F {
  backpack = "ARC_GER_Kitbag_compact_Flecktarn";
};

//Autorifleman
class soldier_AR_F: Soldier_F {
  primaryWeapon = "arifle_SPAR_02_blk_F";
  backpack = "ARC_GER_Backpack_Flecktarn";
};

Rank

In der Klasse Rank wird Sonderloadout abhängig vom Rang der Einheit festgelegt. In den im Template enthaltenen Loadouts erhält hier der Rang der Zugführer, Lieutenant, eine Fieldcap statt dem normalen Helm, um ihn besser erkennen zu können. Wenn wir in unserem Loadout keine Extrawurst vergeben wollen, dann können wir diese Klasse einfach ignorieren.

Gegenstände hinzufügen

In den Einträgen addItemsToUniform, addItemsToVest und addItemsToBackpack werden die Gegenstände definiert, die in das Inventar des jeweiligen Kleidungsstückes gesteckt werden. Über das Makro LIST_N können mehrere Gegenstände des gleichen Typs hinzugefügt werden. Achtung: Das Makro geht nur von 2 bis 20. Die Einträge werden durch Kommata getrennt. Hinter dem letzten Eintrag steht kein Komma.

Beispiel: Wir fügen dem Backpack eine Rauchgranate und 30 Bandagen hinzu.

addItemsToBackpack[] = {
  "SmokeShell",
  LIST_20("ACE_fieldDressing"),
  LIST_10("ACE_fieldDressing")
};
Clone this wiki locally