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 #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
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 - 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 5.291 22.07.2013 18:26
Letzter Beitrag: Steinborg

Gehe zu:


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