XxFallenAngelxX / DL2-Loot-Tool

Dying light 2 Loot Tool
1 stars 0 forks source link

Problem Lage #1

Open XxFallenAngelxX opened 1 week ago

XxFallenAngelxX commented 1 week ago

Problemübersicht:

Bitte nach Unten Scrollen für die Up to date News!

/// Dies Funktioniert nun ///

Das Tool verarbeitet die Loot-Gruppen, jedoch werden nicht alle Gruppen korrekt in die Config-Datei geschrieben. Anfangs läuft der Prozess reibungslos, aber nach einer Weile werden einige Gruppen entweder leer eingetragen oder ganz übersprungen. Später setzt der Schreibprozess korrekt fort, was dazu führt, dass einige Daten fehlen oder unvollständig in der Datei vorhanden sind.

Details:

  1. Inkonsistenz beim Schreiben der Gruppen:
    Die debug_log.txt zeigt, dass einige Gruppen erfolgreich mit Einträgen wie Empty und den entsprechenden Gewichten extrahiert werden. Zwischendurch bleiben jedoch manche Gruppen leer oder werden komplett übersprungen.
    Zum Beispiel enthalten Gruppen wie DefaultAILoot, DefaultBiterLoot und General_Runthrough korrekt extrahierte Einträge. Danach fehlen jedoch einige Gruppen vollständig oder werden nicht korrekt gefüllt.

  2. Backend-Logs:
    Die Backend-Logs zeigen, dass insgesamt 1038 Gruppen verarbeitet wurden. Allerdings finden nicht alle dieser Gruppen ihren Weg in die Config-Datei, was auf das bestehende Problem hinweist.

Mögliche Ursachen:

  1. Fehler in der Bedingungslogik:
    Es könnte ein Problem in der Logik bestehen, die für das Schreiben der Gruppen in die Config-Datei verantwortlich ist. Möglicherweise werden optionale oder fehlende Werte wie min_amount, max_amount oder weight nicht richtig behandelt, was dazu führt, dass einige Gruppen übersprungen oder nur teilweise verarbeitet werden.

  2. Speicher- oder Pufferprobleme:
    Da das Tool eine große Anzahl an Gruppen verarbeitet, könnte es sein, dass bestimmte Daten aufgrund von Speicher- oder Pufferproblemen ausgelassen werden.

Vorschlag zur Lösung:

  1. Überprüfung der Bedingungslogik:
    Es wäre sinnvoll, die Bedingungen im Code, die für das Schreiben der Gruppen verantwortlich sind, zu überprüfen. Es sollte sichergestellt werden, dass auch Gruppen, die optionale Werte wie min_amount oder max_amount nicht besitzen, korrekt verarbeitet und gespeichert werden.

  2. Speicherhandling überprüfen:
    Es wäre hilfreich, das Speicherhandling zu überprüfen, besonders wenn große Datenmengen verarbeitet werden. Zusätzliche Debug-Logs könnten dabei helfen, festzustellen, an welcher Stelle der Datenverarbeitungsprozess möglicherweise unterbrochen wird.

XxFallenAngelxX commented 1 week ago

Bild1 Bild 1: Am Anfang scheint alles wie erwartet zu funktionieren. Es gibt mehrere Sub-Gruppen von "Bolter Items" (z.B. Molotov, Granate, Mine, etc.), und die Droplogik scheint korrekt zu sein.

Bild2 Bild 2: Es tauchen Probleme auf, da in der ursprünglichen Datei (OG file) nicht für jede Item- oder Loot-Gruppe die Min-Max-Werte oder die Gewichtung (Weight) definiert sind. Das bedeutet, dass einige Gruppen entweder anders definiert sind oder gar keine Werte enthalten, was möglicherweise aus Game-Design-Gründen sinnvoll ist. Diese fehlenden oder unvollständigen Definitionen scheinen jedoch dazu zu führen, dass der Fehler entsteht, weil bestimmte Sub-Gruppen nicht richtig verarbeitet werden

Bild3 Bild 3: Zeigt die leeren Gruppen. Es wird nur "Empty" geladen, was nur ein Teil der Loot-Gruppe ist. Die anderen Sub-Gruppen fehlen hier, und das ist das Hauptproblem.

Bild4 Bild 4: Merkwürdigerweise funktioniert in diesem Bild alles wie erwartet. Hier scheint alles reibungslos zu funktionieren.

Fehlerlösung:

Fix für die Sub-Gruppen-Struktur, sodass alle Sub-Gruppen korrekt geladen und verarbeitet werden, inklusive der Min-Max-Werte und der Gewichtung für die Drop-Verhältnisse. Ziel ist es, dass "Empty" nur dann geladen wird, wenn es tatsächlich notwendig ist, und dass alle definierten Sub-Gruppen zuverlässig einbezogen werden.

XxFallenAngelxX commented 1 week ago

Problembeschreibung:

Der Einsatz von Platzhaltern (Placeholders) würde das gesamte Spiel unerwartet verändern, daher halte ich das für nicht umsetzbar. Zusätzlich habe ich festgestellt, dass einige Werte hartcodiert sind, was die Implementierung weiter erschwert.

Die beste Lösung wäre, die Werte aus der default.loot-Datenbank zu extrahieren, diese in eine Konfigurationsdatei zu dumpen, sodass die Werte manuell oder über die Eingabe in der Kommandozeile (CMD) angepasst werden können (dies ist noch in Arbeit - WIP).

Ein großes Problem tritt jedoch auf, da die Struktur der Loot-Daten nicht immer einheitlich ist. Entweder fehlen die Min-Max-Werte (in der Originalle-Datei - default.loot ) oder die Gewichtung (weight-Klasse), obwohl diese in jeder Loot-Gruppe in der default.loot-Datei vorhanden sein sollte und ist, kommt leider die weight klasse wie bei Bild 2 nicht immer durch

XxFallenAngelxX commented 1 week ago

Neue Struktur der loot_config.json und Einführung einer keywords.json für effizientere Anpassungen.

loot_config_endziel.json

Wir haben die Struktur der loot_config.json überarbeitet und eine neue Datei namens keywords.json hinzugefügt. Diese Änderungen ermöglichen es uns, nicht nur manuelle Anpassungen über IDs vorzunehmen, sondern auch globale Änderungen anhand von Keywords durchzuführen. Dies verbessert die Flexibilität und Effizienz des Programms erheblich.

Nach der Arbeit werde ich diese Implementierung weiter vorantreiben. Diese Lösung behebt jedoch noch nicht das Problem mit dem Regex-Parser. Der aktuelle Stand dient lediglich als Work-in-Progress (WIP), um weiterhin Fortschritte zu machen, diese fortschritte sind noch local auf meiner Machine.

XxFallenAngelxX commented 4 days ago

2024-10-03 16_23_20-loot_config json - Microsoft Visual Studio

Das Parsen wurde gefixt. allerdings habe ich noch Probleme mit den Brackets. { [ ] } etc.

mein backend log zeit mir solche fehler.

[WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: Craftparts. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: Craftparts_Common. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: Craftparts_Uncommon. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: Craftparts_Rare. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: Coins. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: DefaultAILoot. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: DefaultBiterLoot. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: Biter_Prologue. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: Biter_GasTank. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: Biter_Backpack. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: T2_BiterLoot. Review required. [WARNING] 2024-10-03 16:22:00 - Incomplete or malformed LootedObject detected: T3_BiterLoot. Review required.

Ich werde den aktuellen Code auf den dev Branch packen und dann sehen wir weiter, vllt. ist es kein Fehler sondern nur ein Feature, HAHA.

Also grundätzlich habe ich keine Loot.Config.Json fehler mehr, alles passt reibungslos bis auf das loggin da es sich aber so um so viele Zeilen handelt, kann ich schwer nachvollziehen ob die logs zutreffend sind oder nicht.

Wenn du eine methode kennst um die file zu checken das es alles passt, dann kann ich weiter machen mit dem GUI, sodas ich die Tags zuweisen sodas man die settings in der file über die GUI verändern kann. 2024-10-03 16_28_54-IALR Launcher

2024-10-03 16_28_22-IALR Launcher

So wie dieses Tool. Ich weiß nicht ob den ansatz den ich verfolge mich zudem ziel bringt, allerdings ist mir klar das ich gerne den Loot, Spawns etc über ein GUI immer veränderbar machen möchte ohne den Code des Tools schwermäßig zuverändern, bei jeden Update.