s0n!c schrieb:zu deinem posting:
Zitat:D.h. das Einführungsdatum bezieht sich auf den 1.1. 1920. Das Jahr 2000 wäre also 80 Jahre * 365,25 Tage -> 29220 Tage -> 7224h -> "24 72" (LSB = least significant Byte first).
da ist mir grad schleiherhaft wie du bei 29220 tagen auf 7224h (stunden?!) kommst. das wären doch 701280std *wirr*
Ahja. "h" bedeutet natürlich nicht "Stunden" sondern "hex", d.h. "7224" ist die hexadezimale Form von "29220" (dezimal). (Alle Zahlen in .nfo/.grf müssen in Hex angegeben werden, ausser die Zeilennummern.)
Zitat:sooo, habe jetzt ne testdatei (mit deinem grundaufbau) fertig. da sind garantiert jede menge fehler drin, denn der grfcodec mag die nicht umwandeln ^^
Code:
// Automatically generated by GRFCODEC. Do not modify!
// (Info version 6)
// Format: spritenum pcxfile xpos ypos compression ysize ysize xrel yrel
1 * 4 03 00 00 00
2 * 8 08 06 AK 01 01 00 00 // grf ID
3 * 14 00 00 03 01 00
00 23 72 // Jahr 2000
09 2C 01 // 300 km/h
0E 30 4C 30 FF FF // 22.224$/Jahr
17 04 // 12.496$
19 00 // Dampf + vID
0B 27 10 // 10000 PS
und hier der fehler, wenn ich den befehl grfcodec -e test.grf eingebe:
Zitat:GRFCodec version 0.9.10 - Copyright © 2000-2005 by Josef Drexler
Encoding in temporary file test.new
Warning: Found sprite 1 looking for sprite 0.
Warning: Found sprite 2 looking for sprite 1.
Error: Encountered invalid character looking for literal byte.
While reading sprite:1
und nu? ^^
1. Der eine Fehler geht auf meine Kappe, denn die Zeilennummern müssen bei "0" anfangen statt bei "1" (Ich selber benutze keine Zeilennummern, deshalb .), also:
2. "AK" ist kein Hex-Wert sondern du musst die Buchstaben in ASCII-Code umwandeln, also "A" -> "41" und "K" -> "4B", damit:
Code:
1 * 8 08 06 41 4B 01 01 00 00 // grf ID
Alternativ kann
grfcodec dies auch selber tun, aber dann müsstest du die Zeichen in einem String mit "" zusammenfassen und
grfcodec mit dem Parameter "-t" aufrufen, also:
Code:
1 * 8 08 06 "AK" 01 01 00 00 // grf ID
grfcodec -t -e test.grf
3. die "action0" ist fehlerhaft. Lies noch mal nach.
- Zum einen stimmt die Anzahl der Properties nicht, du gibst jetzt real 6 an, behauptest aber (immer) noch dass es
drei seien:
3 * 14 00 00
03 01 00
00 23 72 // prop 00 [Baujahr]: 2000
09 2C 01 // prop 09 [Geschwindigkeit] 300 km/h
0E 30 4C 30 FF FF // Prop 0E [Basis Wartungskosten]: (Dampf)
17 04 // Prop 17 [Preis]: 12.496$
19 00 // Prop 19 [Traktionstyp]: Dampf
0B 27 10 // Prop 0B [Leistung]: 10000 PS
- "Property 0E" ist ein DWORD, hat also 4 Bytes: "30 4C 00 00".
- Die Grösse des "pseudosprites" stimmt nicht, s.u.
- Prop 19 bräuchtest du hier nicht extra angeben da veh-ID "00" (die "Kirby") schon auf Dampf gesetzt ist.
- Zudem empfiehlt es sich die Properties schön zu ordnen und zu dokumentieren, also
Code:
2 * 21 00 00 05 01 00
00 23 72 // 2000
09 2C 01 // 300 km/h
0B 27 10 // 10000 PS
0E 30 4C 00 00 // (cost = Dampf)
17 04 // Preis = 12.496$
statt
Code:
2 * 21 00 00 05 01 00 09 2C 01 0E 30 4C 00 00 00 23 72 17 04 0B 27 10
Sehr hilfreich ist auch das Tool "nforenum", damit wird die Grösse der sprites und pseudosprites automatisch berechnet und zudem wird die Syntax überprüft (u.a.).
Gruß
Michael