![]() |
|
NML - NewGRF Meta Language - Druckversion +- TT-MS Headquarters (https://www.tt-ms.de/forum) +-- Forum: Allgemeines rund um Transport Tycoon (/forumdisplay.php?fid=71) +--- Forum: Allgemeines zu OpenTTD (/forumdisplay.php?fid=20) +--- Thema: NML - NewGRF Meta Language (/showthread.php?tid=4736) Seiten: 1 2 |
RE: NML - NewGRF Meta Language - officercrockey - 27.08.2011 12:43 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.... RE: NML - NewGRF Meta Language - planetmaker - 27.08.2011 16:40 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)Code: (bitmask_consist_info & bitmask(n)) > 0Code: (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) RE: NML - NewGRF Meta Language - officercrockey - 06.09.2011 16:39 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. RE: NML - NewGRF Meta Language - Eddi - 06.09.2011 17:01 Darauf achten, daß dein Editor so eingestellt ist, die Datei als UTF8 abzuspeichern. Dann sollten Umlaute auch funktionieren. RE: NML - NewGRF Meta Language - officercrockey - 06.09.2011 17:20 Danke Eddi. Jetzt klappts. RE: NML - NewGRF Meta Language - officercrockey - 06.09.2011 19:47 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?! RE: NML - NewGRF Meta Language - officercrockey - 11.09.2011 10:56 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 24Woran liegt das und warum haben bei FIRS alle Dateien die endung .pnml? RE: NML - NewGRF Meta Language - planetmaker - 11.09.2011 14:20 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. RE: NML - NewGRF Meta Language - Eddi - 11.09.2011 19:25 Kurzfassung: FIRS macht das in zwei Schritten: Code: cpp firs.pnml -o firs.nmlfirs.pnml enthält dann #includes zu allen weiteren .pnml-Dateien. Keine Garantie für korrekte Syntax. |