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
planetmaker
Tycoon
*****

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


Nachrichten in diesem Thema
RE: NML - NewGRF Meta Language - Eddi - 17.06.2010, 21:56
RE: NML - NewGRF Meta Language - Eddi - 21.06.2010, 08:58
RE: NML - NewGRF Meta Language - Eddi - 24.08.2011, 13:09
RE: NML - NewGRF Meta Language - mb - 24.08.2011, 15:53
RE: NML - NewGRF Meta Language - planetmaker - 25.08.2011 16:02
RE: NML - NewGRF Meta Language - mb - 25.08.2011, 16:23
RE: NML - NewGRF Meta Language - mb - 25.08.2011, 10:59
RE: NML - NewGRF Meta Language - Eddi - 06.09.2011, 17:01
RE: NML - NewGRF Meta Language - Eddi - 11.09.2011, 19:25

Gehe zu:


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