C# Silkroad pk2 Reader

  • Ich glaube sowas wurd hier bis jetzt noch nicht gepostet.


    Das ist einfach ne kleine Klasse die einem den Zugang zu den Dateien innerhalb der pk2 Dateien erlaubt.


    Source


    Kleines nutzungsbeispiel:


    Code
    1. //Usage Example
    2. pk2.pk2Reader reader = new pk2Reader(@"Path to Media.pk2");
    3. byte[] chardata = reader.getFile("characterdata_5000.txt");
    4. TextReader txtReader = new StreamReader(new MemoryStream(chardata));
    5. Console.WriteLine(txtReader.ReadLine());
    6. Console.Read();




    mfg bloodman


    EDIT: Hab kurz ne funktion hinzugefügt die einem eine List<string> zurückgibt in der alle Dateinamen sind.

    Zitat

    Dr. Gregory House: You've gotta get down here. They've got a satellite aimed directly into Cuddy's vagina. I told them that chances of invasion are slim to none but...

    Dieser Beitrag wurde bereits 2 Mal editiert, zuletzt von bloodman ()

  • Die Source, die du da hast ist die decompilte von bloodman. Die hätte er dir sicherlich auch gegeben wenn du ihn gefragt hättest. Evtl ist da dann sogar was kommentiert :D


    Ansonsten sind beim edxLabs NVM-Viewer PK2-Sources dabei:
    http://www.elitepvpers.com/for…ol-edxnvmviewer-beta.html


    Gruß
    florian0

  • Habs nun geschafft, dass er die PK2 ausliest, aber noch nicht das er alle Items ausgibt.
    Jeweils nur die erste Zeile der *.txt Datei


    //

  • Danke für den Release. Allerdings habe ich Probleme damit, Dateien auszulesen, die direkt in der Pk2 sind und in keinem Unterordner. Also Dateien wie sv.t, type.txt, etc...
    FileExists liefert immer false und getFile funktioniert auch nicht.

  • Danke für den Release. Allerdings habe ich Probleme damit, Dateien auszulesen, die direkt in der Pk2 sind und in keinem Unterordner. Also Dateien wie sv.t, type.txt, etc...
    FileExists liefert immer false und getFile funktioniert auch nicht.


    Ja, stimmt. Da war noch ein kleiner Fehler im Code und ich hab nie eine neue .dll hochgeladen.
    Hier ist der gefixte code: http://pastebin.com/f99gXDCr 
    Die Blowfish klasse die ich verwende ist aus der Silkroad SecurityApi von drew aka pushedx.
    Falls du dann immnoch Fragen hast, kannst mir gerne ein PM schreiben.

    Zitat

    Dr. Gregory House: You've gotta get down here. They've got a satellite aimed directly into Cuddy's vagina. I told them that chances of invasion are slim to none but...

  • Mir ist ein Rätsel wie ich auf den Path der Datei in der Pk2 bekomme. Ich kann mir ausgeben lassen in welchem Ordner welche Datei ist, aber ich weiß nicht ob der Ordner ein Unterordner ist z.b. ob script nicht in dem Ordner acobject drinne ist. Würde mir gerne einen eigenen Explorer basteln, aber laut Aufbau der Pk2 komme ich nicht auf den weg der einzelnen Dateien hat hier jemand eine Idee?

  • Mir ist ein Rätsel wie ich auf den Path der Datei in der Pk2 bekomme. Ich kann mir ausgeben lassen in welchem Ordner welche Datei ist, aber ich weiß nicht ob der Ordner ein Unterordner ist z.b. ob script nicht in dem Ordner acobject drinne ist. Würde mir gerne einen eigenen Explorer basteln, aber laut Aufbau der Pk2 komme ich nicht auf den weg der einzelnen Dateien hat hier jemand eine Idee?


    O.o? characterdata_25000.txt hat zum beispiel den pfad "server_dep\silkroad\textdata\characterdata_25000.txt" in der Media.pk2

    Zitat

    Dr. Gregory House: You've gotta get down here. They've got a satellite aimed directly into Cuddy's vagina. I told them that chances of invasion are slim to none but...


  • Gibt wahrscheinlich bessere Lösungen aber es sollte funktionieren. ;)

  • Die Funktion ist eigentlich nur für Dateien von denen es mehrere mit dem gleichen Namen gibt, z.B. die ganzen .o und .m Dateien in der Map.pk2. Wenn es den Dateinamen nur einmal gibt kannst du einfach getFile benutzen. Du solltest sonst ja wissen was für Dateien du öffnen willst oder?^^ Ansonsten einfach mit den Pk2 tools von Drew (pushedx) benutzen.

    Zitat

    Dr. Gregory House: You've gotta get down here. They've got a satellite aimed directly into Cuddy's vagina. I told them that chances of invasion are slim to none but...

  • Der reiz dabei ist das in meinem Programm selber darzustellen, wie bei pushedx seinem Pk2Extractor. 000User000 danke erstmal der scheint auch nicht ganz sauber funktionieren wird nicht alles angezeigt.
    Ich weiß nicht ob du dem von Hax0r kennst http://www.elitepvpers.com/for…inese-korean-english.html


    Der arbeitet z.b. ganz ohne GFXFilemanager.dll und listet sie trotzdem schön sauber in einem verzeichniss auf

  • Du solltest dir vielleicht meinen Code erstmal genauer anschauen. Du brauchst nicht die GFXFilemanager.dll um die Struktur der Pk2 auszulesen. Das macht der Code den ich gepostet habe jetzt auch schon. Das Darstellen in einer Verzeichnissform ist ja nur noch Schreibarbeit. Der "mainFolder" ist ja sozusagen der root-Ordner. Unter "mainFolder.subfolders" hast du alle Unterverzeichnisse im Hauptverzeichniss der .pk2 . Unter mainFolder.files alle Dateien. Jetzt müsstest du das ganze ja nur noch in einer ListView o.ä. auflisten.

    Zitat

    Dr. Gregory House: You've gotta get down here. They've got a satellite aimed directly into Cuddy's vagina. I told them that chances of invasion are slim to none but...