Dieses Forum nutzt Cookies
Dieses Forum nutzt Cookies um Anmeldeinformationen (keine Passwörter) zu speichern. Dabei werden diese Informationen als kleine Textdateien auf deinem Endgerät abgelegt. Sie können nur durch dieses Forum ausgelesen werden und stellen kein Sicherheitsrisiko dar. Neben deinem letzten Login wird auch abgespeichert, welche Themen du bereits gelesen hast.

Zudem wird ein Cookie angelegt, in dem abgespeichert wird, ob du diesen Hinweis gelesen hast. Damit wird er nicht jedes mal angezeigt.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NML - NewGRF Meta Language
Verfasser Nachricht
officercrockey
Geschäftsführer
***

Beiträge: 821
Registriert seit: Aug 2010
Beitrag #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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
planetmaker
Tycoon
*****

Beiträge: 1.309
Registriert seit: Oct 2008
Beitrag #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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Registriert seit: Aug 2010
Beitrag #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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Eddi
Tycoon
*****

Beiträge: 4.066
Registriert seit: Aug 2008
Beitrag #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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Registriert seit: Aug 2010
Beitrag #25
RE: NML - NewGRF Meta Language
Danke Eddi. Jetzt klappts.
06.09.2011 17:20
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Registriert seit: Aug 2010
Beitrag #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 Datei(en) Thumbnail(s)
   
(Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2011 19:54 von officercrockey.)
06.09.2011 19:47
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
officercrockey
Geschäftsführer
***

Beiträge: 821
Registriert seit: Aug 2010
Beitrag #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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
planetmaker
Tycoon
*****

Beiträge: 1.309
Registriert seit: Oct 2008
Beitrag #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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Eddi
Tycoon
*****

Beiträge: 4.066
Registriert seit: Aug 2008
Beitrag #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
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


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