-
Notifications
You must be signed in to change notification settings - Fork 0
userloadouts.hpp
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.
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.
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.
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
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 {
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";
...
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";
};
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.
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")
};