Ok, dann versuche ich dies mal etwas zu spezifizieren.
Als erstes ein Auszug aus der config.cpp, wo die inventorySlot vom Standard-Items überschrieben werden.
class cfgWeapons
{
class RifleCore;
class Rifle_Base: RifleCore
{
inventorySlot[]=
{
"Shoulder",
"Melee",
"Shoulder1",
"Shoulder2",
"Shoulder3",
"Shoulder4",
"Shoulder5",
"Shoulder6",
"Shoulder7",
"Shoulder8",
"Shoulder9",
"Shoulder10",
"Shoulder11",
"Shoulder12",
"Shoulder13",
"Shoulder14",
"Shoulder15",
"Shoulder16",
"Shoulder17",
"Shoulder18",
"Shoulder19",
"Shoulder20",
"Shoulder21",
"Shoulder22",
"Shoulder23",
"Shoulder24"
};
};
};
Alles anzeigen
Als weiteres die Verwendung der Attachments in einem der eigenen Items (verkürzt) aus dem Bereich cfgVehicles.
class GunRack: Inventory_Base
{
attachments[]=
{
"Shoulder1",
"Shoulder2",
"Shoulder3",
"Shoulder4",
"Shoulder5",
"Shoulder6",
"Shoulder7",
"Shoulder8",
"Shoulder9",
"Shoulder10",
"Shoulder11",
"Shoulder12",
"Shoulder13",
"Shoulder14",
"Shoulder15",
"Shoulder16",
"Shoulder17",
"Shoulder18",
"Shoulder19",
"Shoulder20",
"Shoulder21",
"Shoulder22",
"Shoulder23",
"Shoulder24"
};
class GUIInventoryAttachmentsProps
{
class Row_01
{
name="$STR_AttGunRackRow1";
description="";
attachmentSlots[]=
{
"Shoulder1",
"Shoulder2",
"Shoulder3",
"Shoulder4",
"Shoulder5",
"Shoulder6",
"Shoulder7",
"Shoulder8"
};
icon="shoulderright";
view_index=1;
};
class Row_02
{
name="$STR_AttGunRackRow2";
description="";
attachmentSlots[]=
{
"Shoulder9",
"Shoulder10",
"Shoulder11",
"Shoulder12",
"Shoulder13",
"Shoulder14",
"Shoulder15",
"Shoulder16"
};
icon="shoulderright";
view_index=2;
};
class Row_03
{
name="$STR_AttGunRackRow3";
description="";
attachmentSlots[]=
{
"Shoulder17",
"Shoulder18",
"Shoulder19",
"Shoulder20",
"Shoulder21",
"Shoulder22",
"Shoulder23",
"Shoulder24"
};
icon="shoulderright";
view_index=3;
};
}
};
Alles anzeigen
Und zuguterletzt die Definitionen der Slots im Bereich CfgSlots.
class Slot_Shoulder1
{
name="Shoulder1";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder2
{
name="Shoulder2";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder3
{
name="Shoulder3";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder4
{
name="Shoulder4";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder5
{
name="Shoulder5";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder6
{
name="Shoulder6";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder7
{
name="Shoulder7";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder8
{
name="Shoulder8";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder9
{
name="Shoulder9";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder10
{
name="Shoulder10";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder11
{
name="Shoulder11";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder12
{
name="Shoulder12";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder13
{
name="Shoulder13";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder14
{
name="Shoulder14";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder15
{
name="Shoulder15";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder16
{
name="Shoulder16";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder17
{
name="Shoulder17";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder18
{
name="Shoulder18";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder19
{
name="Shoulder19";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder20
{
name="Shoulder20";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder21
{
name="Shoulder21";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder22
{
name="Shoulder22";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder23
{
name="Shoulder23";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
class Slot_Shoulder24
{
name="Shoulder24";
displayName="$STR_GunRackSlot";
ghostIcon="";
};
Alles anzeigen
Das Problem, welches mir hier aufgefallen ist, jeder Mod kann hier die Rifle_Base mit seinen eigenen Werten überschreiben und nur die Werte des letzten Mods zählen schlussendlich. Ich schätze, desswegen verwenden einige Mod-Ersteller die selten Bezeichnungen für ihre Slots, damit andere Mods weiterhin funktionsfähig bleiben.
Dieses Vorgehen ist aber zum einen aufwendig, außerdem bleibt man dann fest bei den Werten, zum anderen kann jeder Mod, welcher es anders definiert, diese Mods unfunktional machen.
Mein Idee dahinter war, dass man in den jeweiligen Klassen die Slots manuell zuweist. Es muss irgendwo eine Auswertung der Arrays geben, dort könnte man ansetzen. Allerdings habe ich noch nix in der Richtung finden können. Das muss entweder in der Inventory_Base liegen oder darüber, an so viel anderen Stellen wäre das logisch unsinnig. Leider habe ich nix finden können.