Themabewertung:
  • 0 Bewertung(en) - 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.057
Themen: 55
Registriert seit: Mar 2005
#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
Homepage Suchen Zitieren


Nachrichten in diesem Thema
RE: M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs - von 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 7.685 22.07.2013, 18:26
Letzter Beitrag: Steinborg

Gehe zu:


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

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