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
#7
RE: M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs
8. Syntax für action7

Hier galt es erstmals eine komplizierte Struktur so zu vereinfachen dass sie in einer Mehrzahl der Fälle relativ unkompliziert genutzt werden kann. Die volle Leistungsfähigkeit der nfo action07 bzw action9 ist daher (bisher) nicht implementiert worden.

Das statement

skip(<number>)

überspringt immer die angegebene Anzahl von sprites, wobei

skip(EXIT)

die aktuelle newgrf beendet.

Der bedingte Sprungbefehl

skipif(<number>,<var>, <conditiontype>,<value>)

ermöglicht Sprünge abhängig von verschiedenen Variablenarten.


8.1. Sprung abhängig von TTDPatch-Variablen

Als TTDPatch-Variablen können hier 4 verschiedene Typen auftreten:

- Zahlenwert (Klima, Versionsnummer, ...)
- Bitwert (TTDPatch flags)
- grf-ID
- cargo label

Entsprechend unterschiedlich gestaltet sich die Syntax des Befehls:

Code:
skipif(6,CLIMATE,==,TEMP)

führt zum Sprung wenn das Klima das temperierte Klima ist. Es stehen ausserdem die Operatoren !=, < und > zur Verfügung.

Code:
skipif(1,FLAGS,BITSET,NEWTRAINS)

führt zum Sprung wenn das bit für das TTDPatch feature "newtrains" gesetzt ist. BITCLR wird verwendet um zu prüfen ob ein bit nicht gesetzt ist.

Code:
skipif(2,GRFACTIVE,+,ALPINESET)

führt zum Sprung wenn die newgrf "alpineclimate" aktiv ist, und

Code:
skipif(1,GRFACTIVE,-+,ALPINESET)

wenn diese newgrf (noch) nicht aktiviert ist, später aber noch aktiviert werden wird:

D.h.

"+" steht für "ist aktiviert",
"-" für "ist nicht aktiviert",
"-+" für "ist nicht aktiviert, wird aber noch aktiviert werden",
"++" für "ist aktiviert, und wird noch aktiviert werden",
"--" für "ist weder aktiviert noch wird später aktiviert werden".

Code:
skipif(reflabel(NOCERE), CARGO, -, {CERE})

führt zum Sprung an die Marke "NOCERE" wenn die Güterart "CERE" nicht zur Verfügung steht.

In diesem Fall muss übrigens der Parameter CERE in bestimmter Weise gekennzeichnet werden ("quoted") weil er sonst nicht als Text ("CERE") sondern als die entsprechende Güterart (CERE) selber behandelt werden würde. Nur durch die Verwendung von Text kann hier nämlich auch auf das Vorhandensein unbekannter Güterarten abgeprüft werden.

Genauso muss übrigens auch bei der Definition einer "cargo translation table" "gequoted" werden, dies als Folge des Vorteils dass wir, anders als in nfo, nicht zwischen den verschiedenen Bezeichnern für Frachtarten in den action0, action2 und action3, etc unterscheiden brauchen:

Code:
cargotranslationtable(32) {"PASS" "COAL" "MAIL" "OIL_" "LVST" "GOOD" "CERE" "WOOD" "IORE" "STEL" "VALU" "PAPR" "FOOD" "FRUT" "FISH" "WOOL" "POTA" "SAND" "GLAS" "WDPR" "DYES" "FERT" "OLSD" "RFPR" "VEHI" "PETR" "BRCK" "SULP" "CMNT" "FICR" "LIME" "TOUR"}


8.2. Sprung abhängig von über Parameter vereinbarten Variablen

Dies sind Variablen die üblicherweise über die nfo actionD vereinbart werden. Durch diesen Mechanismus kann auch auf die Werte von TTDPatch flags zugegriffen werden.

Statt zB

Code:
-1 * 9 0D 01 00 06 FE FF FF 00 00 // lade "multihead" Wert in Parameter 1 -1 * 6 07 01 01 02 00 01 // Sprung abhängig vom Wert des Parameters 1

lässt sich nun mit

Code:
skipif(1, patchvar(MULTIHEAD), ==, 0)

derselbe Effekt erzielen. Hierbei ermittelt die Funktion "patchvar" den Wert der entsprechenden TTDPatch-Variablen.

-------------- Ende Teil 7 -------------------

Gruß
Michael
Zitat:EU-Wirtschaft- und Währungskommissar Joaquin Almunia hat alle Besorgnisse über den Schuldnerstatus Griechenlands als unbegründet zurückgewiesen.
12.12.2009, 10:22
Homepage Suchen Zitieren


Nachrichten in diesem Thema
RE: M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs - von mb - 12.12.2009, 10:22

Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Hilfe Diverse Fragen zu OpenTTD, TTD und TTDPatch Steinborg 7 7.677 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