Ahoi zusammen!
Es existiert ein Fehler den ich irgendwie nicht nachvollziehen kann.
Es geht dabei um das Inventar System.
Alle Gegenstände die ich aufsammeln kann, landen dort in ihrem entsprechenden Inventar-Array.
Daher gibt es auch mehrere "ItemDataBase", (Structure) um dort einen besseren Überblick zu bekommen und das ganze viel individueller zu gestalten.
Daher gibt es derzeit 3 Arten:
- Sonstiges (Structure) = "InventoryMain" Array
- Konsum (Structure) = "InventoryKonsum" Array
- Einrichtungsgegenstand (Structure) = "InventoryEinrichtungsgegenstand" Array
Jedes Array bzw. jedes Struct und bzw. jeder entsprechende Gegenstand der dazu gehört, hat eine Structure-Spezifische Variable die sich "Stapelbar" nennt.
Stapelbar ist nichts anderes als ein Bool der überprüft und auch bestimmt, ob der Gegenstand im Inventar übereinander gestapelt wird.
Dazu ein Screenshot von Beispielitems, damit das verständlicher ist:
Auf dem Bild sieht man oben die Anzahl aller Gegenstände im Inventar = 13
Das Gewicht (muss ich noch etwas besser anpassen)
Die ganzen Gegenstände.
Stapelbare Gegenstände werden daher mit einer Zahl vor dem Namen angezeigt.
Im Falle von Stahlbarren, ist nur einer vorhanden, daher 1x Stahlbarren.
Bei den Eisenbarren sind 4 vorhanden, daher die Zahl 4 davor.
Alle anderen Gegenstände sind nicht stapelbar, also werden immer alleine dargestellt.
Oberhalb des "Wegwerfen" Knopfs, erscheint dann entsprechend ein weiterer Knopf, womit man den Gegenstand benutzen kann.
Bei dem Brustschutz und Langschwert, wäre es dann "Ausrüsten".
Bei dem Brot "Konsumieren" und bei den Barren nichts, so wie man jetzt sieht.
Brot = InventarKonsum-Array
Langschwert + Rüstung + Barren + Schild = InventarMain-Array
Einrichtungsgegenstand habe ich derzeit nicht dabei, weil der Fehler ja bereits bei Konsum schon existiert, daher ist es bei Einrichtungsgegenstand identisch.
Das alles funktioniert perfekt und ohne Fehler.
----
Jetzt zum Fehler!
Jeder Gegenstand im Inventar hat eine Nummerierung, diese wird in MyCharacter als "InventoryButtonClicked" (Integer) ein/ausgelesen.
Sprich, wenn ich den Gegenstand "Wegwerfen" oder "Benutzen" will, muss das Inventar wissen, welcher Gegenstand gemeint ist.
Beispiel: Das Schild hat die Nummer 4, also weiss das Inventar das die Nummer 4 das Schild ist und kann dann auch entsprechend verwendet werden.
Das bedeutet und das ist auch derzeit der Fehler:
Nicht-Stapelbare Gegenstände sind folgende: (mit InventorybuttonClicked Integer Wert)
Brot = 0
Brot = 0
Brot = 0
Brustpanzer = 0
Brustpanzer = 0
Langschwert = 2
Langschwert = 2
Sonnenschild = 4
Stahlbarren = 1
Eisenbarren = 6
Wie man unschwer erkennen kann, ist die Reihenfolge der Identifikation total für den Mülleimer.
Wenn ich also Brot anklicke, kann es sein das der 1 zufälliges von den 3 Broten rauswirft (weil identisch weniger schlimm) oder aber der wirft eines von beiden Brustpanzern raus.
Eben weil die alle die gleiche Ordnungszahl 0 haben.
Wähle ich etwa das Sonnenschild aus (Nummer 4) rüste es aus oder werfe es weg, funktioniert das fehlerfrei. Weil die 4 nur einmal im Inventar existiert und das System auch weiss, "Aha die 4 ist das Schild, ok".
Dieser Fehler hat sich irgendwie unbemerkt eingeschlichen und muss unbedingt korrigiert werden.
Hier nun das Script wie das funktioniert, dieses habe ich von Anfang an und es funktioniert auch gut und richtig, nur nicht mehr jetzt.
Aufgeteilt in 3 Bildern:
Ich hoffe man kann das alles erkennen.
Beim ersten Bild gibt es eine Sequence wovon 2 abgehen. Diese 2 gehen zu dem gleichen Script wie auf den Bildern, nur eben entsprechend für "Konsum" und "Einrichtungsgegenstand". Diese sind alle identisch mit diesem hier.
Einziger unterschied ist das es bei den anderen nicht:
MyCharacter - > ItemDataBaseStapelbarInventory -> Break ItemDataBaseStapelbar ist
Sondern
MyCharacter -> ItemDataBaseKonsumStapelbarInventory -> Break ItemDataBaseKonsumStapelbar
Bei Einrichtungsgegenstände das gleiche.
Es ist aber alles die gleiche Grundfunktion.
Ich habe schon seeeehr viel ausprobiert und es liegt nicht an dieser Aufteilung und deren weiterführende Funktionen, sondern es gibt keinen Vergleich in der Haupt-Ordnungszahl im Inventar.
Also die wissen auf gut Deutsch nicht, wie viele die anderen haben und ich weiss nicht wo ich das einfügen oder setzen soll, damit es eine einheitliche Nummerierung gibt.
Es wird für jeden Gegenstand eine Art Schaltfläche mit Knopf erstellt die dann in die Inventar-Übersicht geladen wird und dort sieht es wie folgt aus.
Ich wünsche mir, dass die ganzen Gegenstände im Inventar eine fortlaufende Nummerierung haben.
Beginnend bei 1 und nicht 0.
1
2
3
4
usw.
Hoffe mir kann da wer helfen, ich möchte ungern alles über ein Struct laufen lassen, weil es einfach schon zu viel geworden ist.
Daher muss ich das ganze aufteilen.
Das was ich nicht verstehe ist, warum identische Gegenstände die NICHT Stapelbar sind, die gleiche Ordnungszahl haben... wenn dieser Fehler beseitigt wäre, würde alles nahezu fehlerfrei sein. Abgesehen davon das paralel die Gegenstände bei 0 anfangen.
Brot (Konsum) = 0
oder
Rüstung (Sonstiges) = 0
Also immer der erste Gegenstand aus der jeweiligen Kategorie will unbedingt die nummer 1 oder eher gesagt die 0 sein und das darf nicht sein.