Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NML - NewGRF Meta Language
Verfasser Nachricht
officercrockey
Geschäftsführer
***

Beiträge: 821
Themen: 30
Registriert seit: Aug 2010
#21
RE: NML - NewGRF Meta Language
Sorry für den Doppelpost, aber ich habe das jetzt mal so ausprobiert. Das scheint sehr zuverlässig zu funktionieren. Sobald ein Steuerwagen mit im Spiel ist, darf nix angehängt werden. Allerdings kann man noch Waggons dazwischenschieben.

Zwei kleine Dinge, die ich abändern musste (falls jemand mal was ähnliches machen will und das hier liest)

Der erste switch heißt "check_vehicle". Weiter unten wird dann aber mit "vheicle_type_switch" verwiesen. Die beiden einfach noch einheitlich benennen.

Im "pruefe_steuerwagen"-switch muss es

Code:
bitmask_consist_info & bitmask(2)

heißen.


Aber nochmal ein paar Fragen zu den bits, da die mir noch ein bisschen fremd sind, aber sehr nützlich zu sein scheinen.

Welche Werte kann ich denen denn geben. Läuft das nach dem Motto: 1,2,4,8,16 etc? Also bis 2^7?

Und vor allem wie liest das Spiel diese bitmask_consist_info dann aus. Angenommen der Dostowaggon hat Bit 1 gesetzt und ich habe eine Zugkonfiguration Lok-Dostow-Dostow-Stw. Ist dann einfach Bit 1 und 2 gesetzt oder geht es bei jedem Dostowaggon eins hoch?

Also nochmal vielen Dank an beide. Hat beides sehr geholfen, auch wenn es vielleicht nicht alles hier in diesen Thread passt. Hätte vielleicht einen neuen mit dem Thema Wendezüge aufmachen sollen....
(Dieser Beitrag wurde zuletzt bearbeitet: 27.08.2011, 12:44 von officercrockey.)
27.08.2011, 12:43
Suchen Zitieren
planetmaker
Tycoon
*****

Beiträge: 1.309
Themen: 25
Registriert seit: Oct 2008
#22
RE: NML - NewGRF Meta Language
bitmask(n) ist das Gleiche wie 2^n

bitmask(2,3,7) ist das Gleiche wie 2^2 + 2^3 + 2^7

Sprich das Nutzen von Bitmask nimmt die das Jonglieren mit den Potenzen von Zwei ab.

Um ein bestimmtes Bit n einer solchen Bitmask auszulesen kannst Du entweder
Code:
HasBit(bitmask_consist_info, n)
oder das identische
Code:
(bitmask_consist_info & bitmask(n)) > 0
verwenden. Letzteres erlaubt das Testen auf mehrere Bits gleichzeitig:
Code:
(bitmask_consist_info & bitmask(a,b,c)) == bitmask(a,b,c)


bitmask_consist_info hat acht Bits, numeriert von 0 bis 7. Der Wertebereich von bitmask_consist_info liegt also zwischen 0 und 255 (= 2^0 + 2^1 + 2^2 + ... 2^7)
[Bild: 4q27gcl]
Schreib Deine eigenen NewGRFs, KIs oder Skripte. Siehe dazu DevZone, NML und Tutorien
(Dieser Beitrag wurde zuletzt bearbeitet: 27.08.2011, 16:42 von planetmaker.)
27.08.2011, 16:40
Suchen Zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Themen: 30
Registriert seit: Aug 2010
#23
RE: NML - NewGRF Meta Language
Vielen Dank. Das mit den Wendezügen klappt jetzt wie geschmiert.

Eine kleine Frage aber noch. Und zwar bekomme ich den Strings keine Umlaute o.ä. hin. Es ist ja erlaubt mit \ und zwei folgenden hexadezimalen Zeichen. Nun ist bspw. das ä ja %C3%A4, was schon vier wären.
06.09.2011, 16:39
Suchen Zitieren
Eddi
Tycoon
*****

Beiträge: 4.066
Themen: 33
Registriert seit: Aug 2008
#24
RE: NML - NewGRF Meta Language
Darauf achten, daß dein Editor so eingestellt ist, die Datei als UTF8 abzuspeichern. Dann sollten Umlaute auch funktionieren.
06.09.2011, 17:01
Suchen Zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Themen: 30
Registriert seit: Aug 2010
#25
RE: NML - NewGRF Meta Language
Danke Eddi. Jetzt klappts.
06.09.2011, 17:20
Suchen Zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Themen: 30
Registriert seit: Aug 2010
#26
RE: NML - NewGRF Meta Language
Kaum ist das eine Problem gelöst, gibt es schon ein nächstes. Und zwar mit dem Kaufmenü. Wie bekomme ich die Spalte für das Bild breiter. Im Moment habe ich mir so beholfen, dass der Name des Zuges mit einer Menge Leerzeichen beginnt. Aber das ist natürlich keine elegante Lösung. Gibt es denn eine andere? Habe in der Dokumentation dazu nichts gefunden?!

[Bild: attachment.php?aid=4297]


Angehängte Dateien Thumbnail(s)
   
(Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2011, 19:54 von officercrockey.)
06.09.2011, 19:47
Suchen Zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Themen: 30
Registriert seit: Aug 2010
#27
RE: NML - NewGRF Meta Language
Oh je. Triple Post. Entschuldigung schonmal dafür!

Aber mal wieder eine Frage, die wahrscheinlich einige von euch recht einfach beantworten können. Und zwar geht es darum, dass ich nicht alles in eine große Datei schreiben möchte, sondern in mehrere kleine Dateien. Bei LaTeX bspw. macht man das ja mit \include also dachte ich mir schon, dass es hier sowas ähnliches geben wird.
In der Doku habe ich nix gefunden, also habe ich mir mal angeschaut, wie FIRS das löst und siehe da:

Code:
#include "sprites/nml/checks.pnml"

Also hab ich es auch mal so versucht. Aber bei mir kommt dann nur:

Code:
Illegal character '#' at "input", line 24

Woran liegt das und warum haben bei FIRS alle Dateien die endung .pnml?
11.09.2011, 10:56
Suchen Zitieren
planetmaker
Tycoon
*****

Beiträge: 1.309
Themen: 25
Registriert seit: Oct 2008
#28
RE: NML - NewGRF Meta Language
Das Buildsystem von FIRS schickt die Hauptdatei durch den Präprozessor von gcc, der daraus eine einzelne nml-Datei bastelt (sprich alle mittels #include eingebundenen Dateien einbindet, die cpp - Macros auflöst, etc pp). [ EDIT: Da alle diese Dateien noch durch den Präprozessor geschickt werden müssen, um von nmlc verstanden zu werden, habe ich ihnen die Endung pnml gegeben wie preprocessor-nml. ]

Das Resultat davon, sprich auch nur eine einzelne Datei, bekommt dann nmlc präsentiert.

Das Buildsystem setzt eine *nix-Umgebung voraus, wie sie unter Windows bspw. über MinGW / MSys erreicht werden kann.
[Bild: 4q27gcl]
Schreib Deine eigenen NewGRFs, KIs oder Skripte. Siehe dazu DevZone, NML und Tutorien
(Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2011, 14:44 von planetmaker.)
11.09.2011, 14:20
Suchen Zitieren
Eddi
Tycoon
*****

Beiträge: 4.066
Themen: 33
Registriert seit: Aug 2008
#29
RE: NML - NewGRF Meta Language
Kurzfassung:

FIRS macht das in zwei Schritten:
Code:
cpp firs.pnml -o firs.nml nmlc firs.nml

firs.pnml enthält dann #includes zu allen weiteren .pnml-Dateien.

Keine Garantie für korrekte Syntax.
11.09.2011, 19:25
Suchen Zitieren


Gehe zu:


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

Kontakt | Transport Tycoon Main Station | Nach oben | Archiv-Modus | RSS-Synchronisation