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
M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs
Verfasser Nachricht
mb
Tycoon
*****

Beiträge: 5.054
Registriert seit: Mar 2005
Beitrag #3
RE: M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs
1.2. Das "ifyear" Statement als Variation des "if" Statement

ifyear(<Jahr> | <Jahrbereich> | <Jahrliste>)

Eine vielfach benötigte Anwendung eines varaction2 Blocks bzw eines entsprechenden "if" Konstrukts ist die Evaluierung eines Datums, insbesondere des Jahres, zB zum Bestimmen bestimmter Farbgebungen, oder bei Veränderungen der technischen Parameter des Fahrzeuges durch einen callback. Hierfür ist das "ifyear" Statement von Nutzen:

Aus

Code:
-1 * 0   00 02 02 81 C4 00 FF 01
    00 00 00 36  // -1974 rot
    01 00        // 1975- blau/beige

wird damit

Code:
def(2) yearbuilt(
         ref(0) ifyear(1920 .. 1974) // -1974 rot
         ref(1) else                 // 1975- blau/beige
)

d.h. das Konstrukt erlaubt die Eingabe realer Jahreszahlen ohne irgendwelche Umrechnungen.


2. Syntax für action0

Eine Implementierung der nfo "action0" ist einfach, da hier im Prinzip lediglich dezimal vorliegende Werte in Hex-Zahlen umgewandelt werden müssen.

train(<veh-ID>,<name>,{<property>})

Die aktuelle Implementierung bietet aber auch hier durch "implizite" Auswertungen und Berechnungen diverse Vereinfachungen. ZB werden bestimmte "properties" zusammengefasst und gemeinsam evaluiert. Dies geschieht zB bei der Datumsangabe, der Gewichtsangabe oder der Bestimmung der property für die Zugkraft. Diese Werte (und andere) können also komfortabel angegeben werden wie hier zu sehen ist:

Code:
train(10, {"BR 220 (ex V 200)"},
    intro(1954) // Einführungsjahr
    reliability(11) // Abnahme der Fz-Verlässlichkeit
    vehlife(30) // Lebensdauer des Fz (in Jahren)
    modlife(30) // Verfügbarkeit des Modells (in Jahren)
    enginetype(DIESEL) // Traktionsart und Kostentabelle
    speed(140 km/h) // Höchstgeschwindigkeit
    power(2700 PS) // Dauerleistung
    runningcost(120) // Wartungskosten
    dualhead(NO) // einfache Lok
    capacity(0) // keine Frachtkapazität
    weight(80 t) // Dienstgewicht
    price(75) // Kaufpreis
    aiusage(10) // AI Rang
    effort(235 kN) // Zugkraft
    shorter(0) // normale Fahrzeuglänge
    retire(2) // frühzeitige Entfernung aus Kaufliste
)

Die "train" Funktion übernimmt hier quasi nebenbei auch die Funktion der "action4", also der Namensgebung. Alle Werte werden dezimal angegeben, es sind keinerlei Umrechnungen erforderlich, auch keine eigene Errechnung der "property" für die Zugkraft aus dem Gewicht der Lok. Auch die Angabe der Nutzung von "callbacks" oder die Festlegung der Frachtmasken erfolgen in komfortabler Weise:

callbacks(CB_POWR, CB_ARTI, CB_RCOL) bzw.
cargomask(PASS, MAIL, TOUR) // Passagiere, Post, Touristen

und sind gleich den ausserhalb der nfo action0 anzugebenden Werten.

Zudem können bestimmte Werte mit Einheiten angegeben werden, sodass eine eventuelle notwendige Umrechnung entfällt. Dies sind

- für Geschwindigkeit: km/h, mph
- für Leistung: kW, PS, hp (SAE hp bzw bhp)
- für Zugkraft: kN, kp, lbf
- für Gewicht: t (metrische Tonne), tnsh (short ton, US), tnl (long ton, UK).


------------ Ende Teil 3 ----------------

Gruß
Michael

Zitat:EU-Wirtschaft- und Währungskommissar Joaquin Almunia hat alle Besorgnisse über den Schuldnerstatus Griechenlands als unbegründet zurückgewiesen.
04.11.2009 17:50
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Nachrichten in diesem Thema
RE: M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs - mb - 04.11.2009 17:50

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Hilfe Diverse Fragen zu OpenTTD, TTD und TTDPatch Steinborg 7 5.289 22.07.2013 18:26
Letzter Beitrag: Steinborg

Gehe zu:


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