Spaceball schrieb:Wie berechne ich die Koordinaten?
Oskar hat dazu ein paar aussagekräftige Zeichnungen erstellt:
http://wiki.ttdpatch.net/tiki-index.php?...oordinates
(Wir sind gut dokumentiert .)
Zitat:Was bedeuten dann xrel und yrel?
Verschiebung des sprites in x- und y-Richtung: -x nach links, +x nach rechts, -y nach oben, +y nach unten.
Zitat:Was ist der TTD Point?
Möglicherweise meinst du einen Referenzpunkt? Da gäbe es zwei unterschiedliche Konzepte, einmal für "flache" sprites, und einmal für 3D-Objekte. S.a. Oskar´s Zeichnungen.
Zitat:Dann habe ich noch eine Frage zur Action 2. Wenn ich die Daten ändern möchte muss ich angeben welche Daten ich ändern möchte. Wie gebe ich die Daten ein? Schreibe ich die alle hintereinander in die Zeile oder erstelle ich immer eine eigene Action 2 für jede Änderung bzw. jedes Feature? Gibts da eine Reihenfolge?
Viele Fragen und mir ist leider nicht ganz klar, was du genau wissen möchtest.
Zunächst einmal gibt es zwei verschiedene action2:
- die "normale" action2 um auf die sprites in einem vorher mit action1 definierten sprite-Block zuzugreifen.
http://wiki.ttdpatch.net/tiki-index.php?page=Action2
- sog. var.action2, die auf externe Variablen zugreifen können und je nach deren Wert bzgl des Programmflusses "verzweigen" können.
http://wiki.ttdpatch.net/tiki-index.php?...nalAction2
Zitat:Wie gebe ich die Daten ein? Schreibe ich die alle hintereinander in die Zeile oder erstelle ich immer eine eigene Action 2 für jede Änderung bzw. jedes Feature?
Generell gilt für eine var.action2:
Code:
02 <feature> <set-id> <type> <variable> <varadjust> <nvar> (<set-id> <low-range> <high-range>){n} <default>
wobei
- <feature> entweder "00" für Züge, "04" für Bhfe, etc ist,
- <set-id> eine frei wählbare Zahl im Bereich [00 . FF] ist (vergleichbar einem Bezeichner/Variable in einer höheren Programmiersprache),
- <type> entweder aus der Liste [81,85,89] oder [82,86,8A] stammt und die Art des Zugriffs auf die zu referenzierende Variable definiert: zB definiert die erste Liste den Zugriff auf das aktuelle Objekt (Passagierwagen, Flugzeug, Schiff, Bhf, .) selber, die zweite Liste aber den Zugriff auf die "höhere Instanz" des aktuellen Objektes (Zugverband zu dem der Passagierwagen gehört, Stadt zu dem der Bhf gehört, .). 81/82 ermöglichen den Zugriff auf BYTE-Variablen, 85/86 den auf WORD-Variablen und 89/8A den auf DWORD-Variablen.
- <variable> ist die Variable die abgeprüft werden soll. Das kann sowohl eine generelle TTD-Variable sein (Datum, Klima, .), eine 80+x Variable oder eine 40+x Variable. Letztere sind objektspezifisch (zB 40+x für Züge: Position des Wagen, Länge des Zuges, Frachtart, Geschwindigkeit, .) und werden "on-the-fly" im Spiel berechnet.
- <varadjust> ermöglicht das Ergebnis des Variablenzugriffs zu modifizieren, im einfachsten Fall durch ein Rechtsschieben ("shift-num") und eine Maskierung ("AND-mask"),
- <nvar> gibt die Anzahl der anzustellenden Vergleiche an, ähnlich einem CASE statement in C,
- <low-range> und <high-range> sind die oberen und unteren Schranken für diesen Vergleich über den die anzusprechende Programmvariable (c-ID) gesetzt wird,
<default> ist die default c-ID zu der verzweigt wird wenn der (modifizierte) Rückgabewert der Variablen in keiner der angegebenen Paare von <low-range> und <high-range> liegt.
ZB:
Code:
-1 * 18 02 00 61 81 01 00 FF 02
09 00 00 05 // KPEV
0A 00 06 0E // Hecht
04 00
Stellt eine Datumsabfrage dar zur Feststellung der jeweiligen Farbgebung eines Wagen. Zwischen 1920 und 1925 soll der Wagen in "preussischgrün" (KPEV) erscheinen, zwischen 1926 und 1934 als "Hecht" und danach als DRG-Schürzenwagen. Damit haben wir also:
02 00 - var.action2 für Züge
61 - meine Programmvariable (c-ID): "61" steht hier für "Nahverkehrswagen",
81 - Abfrage einer Variablen als BYTE,
01 - das aktuelle Jahr (Standard-TTD Variable)
00 FF - <varadjust>: schiebe das Ergebnis der Variablenabfrage 0 bits nach rechts und maskiere mit "FF", d.h. übernehme die Variable so wie sie ist,
02 - das CASE Konstrukt hat zwei Abfragen
09 00 - die Programmvariable (c-ID) zu der verzweigt werden soll wenn die zugehörige Bedingung wahr ist,
00 05 - die Bedingung: Variablenwert liegt zwischen 00 und 05 (also zwischen 1920 und 1925),
0A 00 - die Programmvariable (c-ID) zu der verzweigt werden soll wenn die (nächste) zugehörige Bedingung wahr ist,
06 0E - die Bedingung: Variablenwert liegt zwischen 06 und 14 (also zwischen 1926 und 1934),
04 00 - Default-Programmvariable (c-ID) zu der verzweigt wird wenn die Variable grösser als "0E" war.
Zitat:Laut der Anleitung sollte die Action 8 gleich am Anfang kommen. Gibts da noch weitere Actions bei denen ich eine Reihenfolge einhalten sollte?
Ich halte folgende Reihenfolge ein:
action7 - zwecks Abprüfung von Klima, Patch-Versionen, Patch-Flags, etc
action8
action0
action1-Blöcke
action2-Blöcke
action3
action4
Zitat:In einer NFO habe ich die Action 5c gesehen. Was ist das?
Es gibt eine action5
http://wiki.ttdpatch.net/tiki-index.php?page=Action5 für Signale, Oberleitungen, Kanäle, Strassenbahnschienen, etc. Aaction5c gibt es nicht.
Gruß
Michael