Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
makeobj 55.4 für Linux scheitert beim Extrahieren von PAK-Dateien
#1
Um mich in die Struktur der PAK-Dateien einzuarbeiten, habe ich versucht mit dem aktuellen makeobj bestehende PAK-Dateien zu extrahieren. makeobj bricht stets mit folgender Fehlermeldung ab:
""ERROR: Unmerge: factory.Moebelhaus.pak is not an archieve (aborting)
For help with this error or to file a bug report please see the Simutrans forum:
http://forum.simutrans.com""

Software: Simutrans 120.1.3 und diverse PAK-Sets (z. B. PAK128.german 0.9) als kompilierte RPMs aus den OpenSUSE repositories. Da OpenSUSE makeobj nicht mitliefert wurde zusätzlich der Sourcecode von Sourceforge gezogen (simutrans-src-120-1-3.zip) und daraus makeobj kompiliert. Nach der Installation der entsprechenden Bibliotheken ist das dann auch gelaufen.

Code:
> makeobj
Makeobj version 55.4 for Simutrans 120.1.3 and higher

   Usage: MakeObj [QUIET] [DEBUG] <Command> <params>

      MakeObj CAPABILITIES
         Gives the list of objects, this program can read
      MakeObj PAK <pak file> <dat file(s)>
         Creates a ready to use pak file for Simutrans from the dat files
      MakeObj pak128 <pak file> <dat file(s)>
         Creates a special pak file for with 128x128 images
         Works with PAK16 up to PAK32767 but only up to 255 are tested
      MakeObj LIST <pak file(s)>
         Lists the contents ot the given pak files
      MakeObj DUMP <pak file> <pak file(s)>
         List the internal nodes of a file
      MakeObj MERGE <pak file library> <pak file(s)>
         Merges multiple pak files into one new pak file library
      MakeObj EXTRACT <pak file archieve>
         Creates single files from a pak file library
     ...
          Zoom:   If image is zoomable or not


Schritte zur Fehlerreproduktion:
1) Terminalprogramm öffen
2) Anlegen eines Arbeitsverzeichnisses und dann hineinwechseln
3) Kopieren eines oder mehrerer PAK-Dateien in das Verzeichnis
4) makeobj ausführen

Code:
Simutrans-MyData> ../Simutrans/makeobj/makeobj EXTRACT good.Fisch.pak
Makeobj version 55.4 for Simutrans 120.1.3 and higher
ERROR: Unmerge:    good.Fisch.pak is not an archieve (aborting)
For help with this error or to file a bug report please see the Simutrans forum:
http://forum.simutrans.com
Simutrans-MyData>

Das selbe Ergebnis tritt mit allen von mir getesteten PAK-Dateien (mehrere aus PAK128.german, eines aus PAK) auf.

LIST und DUMP liefern folgende Ergebnisse:

Code:
Simutrans-MyData> ../Simutrans/makeobj/makeobj LIST good.Fisch.pak
Makeobj version 55.4 for Simutrans 120.1.3 and higher
Contents of file good.Fisch.pak (pak version 1003):
type name nodes size
---------------- ------------------------------ ----- ----------
good Fisch 3 17
Simutrans-MyData>

Simutrans-MyData> ../Simutrans/makeobj/makeobj DUMP good.Fisch.pak
Makeobj version 55.4 for Simutrans 120.1.3 and higher
File good.Fisch.pak (version 1003):
000 ROOT-node (root) 0 bytes
000 GOOD-node (good) 10 bytes
000 TEXT-node (text) 6 bytes 'Fisch'
001 TEXT-node (text) 1 bytes ''
002 TEXT-node (text) 10 bytes ' Paletten'
thomas@benno:~/Software_Development/Simutrans-MyData>



Ich konnte den Bug bis in die Zeile 372 der Datei root_writer.cc zurückverfolgen. Dort wird mit der Methode obj_node_t::read_node eine Datenstruktur root vom Typ obj_node_info_t aus der übergebenen Datei gelesen, wobei dann root.children den Wert 1 erhält. Weiter habe ich den Code nicht verstanden.

Ich hoffe, das hilft. Das Spiel selbst ist bei mir problemlos gelaufen.

MfG
Edwin
Zitieren


Nachrichten in diesem Thema
makeobj 55.4 für Linux scheitert beim Extrahieren von PAK-Dateien - von edwin - 27-09-2016, Tuesday-14:33:06
[Kein Betreff] - von prissi - 27-09-2016, Tuesday-23:32:51
[Kein Betreff] - von Wurzelgnom - 28-09-2016, Wednesday-06:18:07
[Kein Betreff] - von edwin - 28-09-2016, Wednesday-16:49:45
[Kein Betreff] - von Wurzelgnom - 28-09-2016, Wednesday-17:02:15

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste