Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NML - NewGRF Meta Language
Verfasser Nachricht
planetmaker
Tycoon
*****

Beiträge: 1.315
Themen: 25
Registriert seit: Oct 2008
#18
RE: NML - NewGRF Meta Language
(25.08.2011, 10:05)officercrockey schrieb: Also bei mir sieht das jetzt so aus:
(...)
Ich empfehle, 'mal einen Blick auf das Zug-Beispiel zu werfen, welches neueren NML-Versionen seit einigen Wochen beiliegt; das führt u.A. die Benutzung des Callbacks für 'articulated vehicles' vor - und nutzt die elegantere Variante, die Callbacks via graphics block zu definieren. Ich habe 'mal was zusammengeschrieben, was nur einen Steuerwagen pro Zug erlauben sollte in der Annahme, dass Bit 2 von bitmask_vehicle_info vom Steuerwagen ausschließlich gesetzt wird (siehe Property unten):

Code:
/* Überprüfen, ob Dosto angehängt werden kann */ switch (FEAT_TRAINS, PARENT, check_vehicle, vehicle_type_id) { steuerwagen: CB_RESULT_ATTACH_ALLOW; // we already have one of these dosto_w: CB_RESULT_ATTACH_ALLOW; // können wir immer anhängen (alternativ: hier zu 'nem Switch verlinken, // der Bedingungen für diesen prüft CB_RESULT_ATTACH_DISALLOW; // alle anderen Wagen können nicht angehängt werden } /* Überprüfen, ob Steuerwagen angehängt werden kann - nur einer möglich pro Zug */ switch (FEAT_TRAINS, PARENT, pruefe_steuerwagen, bitmask_vehicle_info & bitmask(2)) { 0: vehicle_type_switch; // bit is not set. We can allow attachment CB_RESULT_ATTACH_DISALLOW; // bit is set, we already have one of these } item (FEAT_TRAINS, dosto_w) { property { bitmask_vehicle_info: bitmask(1); } graphics { can_attach_wagon: pruefe_steuerwagen; } } item (FEAT_TRAINS, my_engine) { property { } graphics { can_attach_wagon: pruefe_steuerwagen; } } item (FEAT_TRAINS, steuerwagen) { property { bitmask_vehicle_info: bitmask(2); } graphics { can_attach_wagon: pruefe_steuerwagen; } }
Ich habe das Beispiel jetzt nicht geprüft im Sinne von "funkioniert kompiliert so", aber die Idee wie man eine Überprüfung auf bestimmte Wagon in NML implementieren kann, sollte hierdurch ersichtlich werden können.

Das Vorhandensein des n-ten Bits in bitmask_vehicle_info kann man mittels "(bitmask_vehicle_info & bitmask(n)) > 0" im Argument des Switch-Blocks überprüfen, bzw. man testet, ob das 0 ist wie im obigen Beispiel

Zitat:Das Beispiel von mb...
... hat leider mit NML ausgesprochen wenig zu tun und hier im NML-Thread ist es "ganz leicht" fehl am Platz.
[Bild: 4q27gcl]
Schreib Deine eigenen NewGRFs, KIs oder Skripte. Siehe dazu DevZone, NML und Tutorien
25.08.2011, 16:02
Suchen Zitieren


Nachrichten in diesem Thema
NML - NewGRF Meta Language - von planetmaker - 17.06.2010, 20:29
RE: NML - NewGRF Meta Language - von Timmaexx - 17.06.2010, 21:05
RE: NML - NewGRF Meta Language - von pETe! - 18.06.2010, 13:07
RE: NML - NewGRF Meta Language - von Eddi - 17.06.2010, 21:56
RE: NML - NewGRF Meta Language - von Bernhard - 21.06.2010, 07:47
RE: NML - NewGRF Meta Language - von Eddi - 21.06.2010, 08:58
RE: NML - NewGRF Meta Language - von Bernhard - 21.06.2010, 11:27
RE: NML - NewGRF Meta Language - von Eddi - 24.08.2011, 13:09
RE: NML - NewGRF Meta Language - von mb - 24.08.2011, 15:53
RE: NML - NewGRF Meta Language - von planetmaker - 25.08.2011, 16:02
RE: NML - NewGRF Meta Language - von mb - 25.08.2011, 16:23
RE: NML - NewGRF Meta Language - von mb - 25.08.2011, 10:59
RE: NML - NewGRF Meta Language - von Eddi - 06.09.2011, 17:01
RE: NML - NewGRF Meta Language - von Eddi - 11.09.2011, 19:25

Gehe zu:


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

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