[Problem] Item Reader - Daten aus 3 Dateien lesen & zuordnen

  • BugFix : DU bist zu schnell ! Danke !

    Ich habe etwas im Forum gefunden und es mal so gelöst:

    FileOpen($sPathResult,2) ; works...

    FileWrite($sPathResult, $sResult)

    Aber deine Lösung ist besser ;)

    Naja, eigentlich sollte man es schon machen können, auch wenn eine Beschreibung fehlt.

    Es gibt immer eine Item-ID für jedes Item und ein entsprechendes Define und einen Itemname.

    Die Beschreibung wurde oft einfach weggelassen, leider leider....

    • Offizieller Beitrag

    Ja, ich kann das Item über eine Suche mit ID finden - aber ich weiß nicht, ob ein optionaler Text dazu existiert. Das ist am Aufbau der Datei nicht erkennbar.

    Da ist m.M. nach die Datei mit falscher Struktur erstellt worden. Es sollten eindeutige Identifier zum Zugriff auf Item (vorhanden) und Itembeschreibung (nicht vorhanden) existieren.

    Man könnte das jetzt evtl. so lösen:

    - Eintrag in Zeile existiert in Itemdatei: ist ein Item

    - Eintrag in nächster Zeile prüfen, ob es auch in Itemdatei existiert

    -- JA: Item hat keine Beschreibung

    -- NEIN: Das ist die Beschreibung zum Item, Beschreibung erfassen und Zeile überspringen

    Ist natürlich dann doch wieder zeitaufwändiger, weil man ständig Prüfungen vornehmen muss.

    Nochmals der Hinweis: Aus meiner Lösung greift das Pattern für das Parsen der propItem.txt.txt nicht richtig aufgrund der vorgenannten Probleme.

  • Evtl sollte man mit der propItem.txt.txt anfangen, weil die meinstens am saubersten ist.

    Von dort aus könnte man doch bestimmt dann die anderen Daten suchen & zuweisen, denn dort ist ja der Name und die Beschreibung (falls vorhanden) drin.

    propItem.txt.txt:

    IDS_PROPITEM_TXT_000004 Penya1

    IDS_PROPITEM_TXT_000005 Penya1 Beschreibung

    propItem.txt

    II_GOLD_SEED1 IDS_PROPITEM_TXT_000004 ..........ganz zum schluss der Zeile, falls angegeben........... IDS_PROPITEM_TXT_000005

    defineItem.h

    II_GOLD_SEED1 12

    Ich würde mich riesig freuen, wenn Du das hinbekommen würdest ;)

  • Hallo Ram3000 !

    Es gibt nicht immer zwangsläufig eine Beschreibung, die Programmierer meinen es sei nicht nötig und so haben nicht alle Einträge eine Beschreibung, leider.

    Die Aussage "... die Programmierer meinen ..." legt nahe, dass Du irgendeine Form von Kontakt zu den Entwicklern hast.

    Gibt es für Dich wirklich keine Möglichkeit, von denen saubere Datenstrukturen zu bekommen ?

    Evtl sollte man mit der propItem.txt.txt anfangen, weil die meinstens am saubersten ist.

    Der Satz "...weil die meistens am saubersten ist." erfordert einen heuristischen Ansatz, also 'Versuch und Irrtum" ;).

    Auf dieser Basis wird selbst BugFix , mangels exakter Daten, keine 100% saubere Lösung erstellen können.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    • Offizieller Beitrag

    Mal zu deiner Info:

    Die Datei propItem.txt enthält etliche Doppel, d.h. die folgenden Schlüssel IDS_PROPITEM_TXT_... werden mehrfach verwendet:

    Spoiler anzeigen

    DOPPEL: IDS_PROPITEM_TXT_002080 - II_ARM_M_BLA_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_001536 - II_ARM_M_BLA_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_002624 - II_ARM_M_BLA_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003168 - II_ARM_M_BLA_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_002148 - II_ARM_F_BLA_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_001604 - II_ARM_F_BLA_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_002692 - II_ARM_F_BLA_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003236 - II_ARM_F_BLA_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_002488 - II_ARM_M_ELE_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_001944 - II_ARM_M_ELE_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_003032 - II_ARM_M_ELE_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003576 - II_ARM_M_ELE_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_002556 - II_ARM_F_ELE_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_002012 - II_ARM_F_ELE_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_003100 - II_ARM_F_ELE_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003644 - II_ARM_F_ELE_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_002468 - II_ARM_M_PSY_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_001924 - II_ARM_M_PSY_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_003012 - II_ARM_M_PSY_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003556 - II_ARM_M_PSY_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_002536 - II_ARM_F_PSY_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_001992 - II_ARM_F_PSY_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_003080 - II_ARM_F_PSY_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003624 - II_ARM_F_PSY_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_002060 - II_ARM_M_KIN_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_001516 - II_ARM_M_KIN_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_002604 - II_ARM_M_KIN_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003148 - II_ARM_M_KIN_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_002128 - II_ARM_F_KIN_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_001584 - II_ARM_F_KIN_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_002672 - II_ARM_F_KIN_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003216 - II_ARM_F_KIN_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_012950 - II_GEN_GEM_GEM_CHAINSAWKR

    DOPPEL: IDS_PROPITEM_TXT_013428 - II_GEN_FOO_CHRISTMASGMCAKE01

    DOPPEL: IDS_PROPITEM_TXT_006994 - II_ARM_S_CLO_MAS_ANGEL01

    DOPPEL: IDS_PROPITEM_TXT_006992 - II_ARM_S_CLO_MAS_DEVIL01

    DOPPEL: IDS_PROPITEM_TXT_004990 - II_ARM_S_CLO_HAT_MUSHROOM01

    DOPPEL: IDS_PROPITEM_TXT_004988 - II_ARM_S_CLO_HAT_STATHAT01

    DOPPEL: IDS_PROPITEM_TXT_001672 - II_ARM_M_RAG_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_002216 - II_ARM_M_RAG_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_002760 - II_ARM_M_RAG_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003304 - II_ARM_M_RAG_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_001740 - II_ARM_F_RAG_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_002284 - II_ARM_F_RAG_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_002828 - II_ARM_F_RAG_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003372 - II_ARM_F_RAG_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_003420 - II_ARM_M_RIN_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_001788 - II_ARM_M_RIN_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_002332 - II_ARM_M_RIN_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_002876 - II_ARM_M_RIN_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_003488 - II_ARM_F_RIN_BOOTS05

    DOPPEL: IDS_PROPITEM_TXT_001856 - II_ARM_F_RIN_HELMET05

    DOPPEL: IDS_PROPITEM_TXT_002400 - II_ARM_F_RIN_SUIT05

    DOPPEL: IDS_PROPITEM_TXT_002944 - II_ARM_F_RIN_GAUNTLET05

    DOPPEL: IDS_PROPITEM_TXT_008848 - II_SYS_SYS_SCR_EVEAMPESS

    • Offizieller Beitrag

    So, hier mein abschliessender Beitrag.

    ich habe jetzt, wie in Post #22 beschrieben, die Prüfungen vorgenommen. Dadurch sind mir auch die Dopplungen aufgefallen.

    Diese Version funktioniert jetzt, die Doppel sind aber nicht enthalten:

  • BugFix :

    In der propItem.txt gibt es doppelte, weil man dort die Items zusammen stellt und scheinbar jemand eine verhandene Beschreibung einfach noch einmal benutzt hat. Grundsätzlich sollte ein Eintrag wie zB IDS_PROPITEM_TXT_002080 nur einmal vorkommen, aber wie man sieht passiert es doch.

    Die ID ist das einzige was wirklich einmalig ist, selbst die defines sollten einmalig sein. Die Namen und Beschreibungen sollten auch einmalig sein, werden aber scheinbar öfters genutzt.

    Das Script schaue ich mir später mal genauer an. :)

    Ich kann dich verstehen, darum habe ich hier nachgefragt, weil ich da überhaupt nicht durchgestiegen bin, wie ich das Script erstellen sollte.

    Ich danke Dir auf jedenfall für deine Mühe !!!!!

    PS: Evtl habe ich noch einen alten Snip von einem C# Programm, wenn Dir das etwas helfen sollte, leider nicht den ganzen Source :(


    Musashi:

    Ich habe keinen direkten Kontakt zu denen und es sind soweit original Dateien. Die sehen leider so aus., es gibt nur noch schlimmere... ;)

    Und da wird sich auch nichts daran ändern, solange keiner die ganzen Funktionen und Daten mal ordentlich aufbaut/umbaut.

  • hehe...achso...ich sehe was du meinst.

    da wurde einfach nur der name in die beschreibung gesetzt und kein extra beschreibungs element erstellt.

    ansich auch blöd, aber das kann mai vorkommen, sollte nicht....

    so ist der itemname und die itembeschreibung gleich....eine element gespart...LOL

    aufbau der datei: als erstes wird der itemname (IDS_PROPITEM_TXT_007239) gelesen und ganz am ende kommt die itembeschreibung (IDS_PROPITEM_TXT_007239)....dazwischen natürlich die ganzen anderen sachen für das item...

    wenn ich besser programmieren könnte, würde ich die 3 dateien zu einer umbauen....aber der aufwand ist viel zu gross... ;)

  • Hallo BugFix ;)

    Ich hätte da noch mal eine Frage zu dem gleichen Thema nur mit anderen Daten.

    Jetzt geht es um die Auflistung der Monster.

    Ich habe das Script genommen und wollte es für die Monsterliste anwenden, funktioniert aber leider nicht so und ich bekomme das einfach nicht hin.

    Könntest Du oder jemand anderes mir bitte helfen?

    Danke.

    Ich habe mal die benötigten Dateien angehängt.

    monster_dateien.7z

  • *LOL* dann solltest du dir das mal genauer angucken !

    Das hat nichts damit zu tun.

    Es geht hier um Daten die ich aus meinem Server ziehe und möchte diese Daten nur einfach und schnell umwandeln.

  • Lass mal gut sein, das gehört hier echt nicht rein und macht das Thema kaputt !

    Es dient und wird auch nie für irgendetwas schlimmes und/oder böses genutzt !

    Es steht im Post #3 !

    @ Kann hier mal einer aufräumen? Danke.

    Einmal editiert, zuletzt von Ram3000 (13. Januar 2019 um 19:41)

  • bump...kann mir keiner helfen?

    Hier wird nicht gebumpt.

    Ein kleiner Blick in dein Skript hätte dir eigentlich direkt die Lösung gezeigt. Die .Add Methode wirft einen Fehler. Prüfst du irgendwo ob der Schlüssel schon hinzugefügt wurde?

    Der Eintrag taucht nämlich zwei mal in deiner Datei auf und einer davon liegt in einem Kommentarblock /* */.

  • Hi, ja sorry für den 'bump'

    Das lustige ist ja, wenn ich das erste Script (#27) nehme was von BugFix stammt, dann funktioniert es super.

    Das ist aber nur für die Items zuständig und ich dachte ich kann es leicht angepasst/abgeändert auch für die Monsterliste nehmen.

    Aber das funktioniert leider so nicht und ich komme da nun nicht mehr weiter ;(

    Ich würde mich über jede Hilfe freuen, damit das kleine Script läuft ;)