Themabewertung:
- 0 Bewertungen - 0 im Durchschnitt
- 1
- 2
- 3
- 4
- 5
Modificator als GRF
|
Verfasser |
Nachricht |
Ammler
Geschäftsführer
Beiträge: 700
Registriert seit: May 2007
|
Modificator als GRF
Hallo zusammen
Ich versuche gerade mal ein GRF zu erstellen, dass die Flugzeug Kosten höher schraubt, möchte das dann auch mit Terraforming etc. machen können.
Mit Action 0 geht das ja schon mal, nun würde ich das gerne jedoch dynamisch machen also per Parameter.
(00 08 01 01 2D 08 09 zum verdoppeln)
Dazu ist wohl Action D, jedoch werde ich nun nicht schlau, wie ich damit die Allgemeinen Variablen verändern kann. Werde aus dem Wiki auch nicht gescheiter.
Könnt ihr mir da weiterhelfen?
Gruss und Dank
Ammler
OpenGFX:
|
|
01.09.2007 19:21 |
|
mb
Tycoon
Beiträge: 5.054
Registriert seit: Mar 2005
|
ammler schrieb:Dazu ist wohl Action D [.]
Nicht dass ich wüsste. Da die "cost tables" statisch sind musst du mehrere von ihnen aufbauen und je nach Parameterwert (2, 4, 8, .) die entsprechende Tabelle auswählen. Das machst du am besten mit "action07". Ein Parameter = "2" zB wählt dann die verdoppelnde Tabelle, ein Parameter = "4" die vervierfachende Tabelle, usw. usf. aus:
Code:
// verdoppeln: check if param00 bit 1 set
07 00 04 00 01 01 // y: skip to "table * 2"
// n: skip unconditionally
07 8B 04 03 00 00 00 00 01
// cost table * 2
00 08 .
// vervierfachen: check param00 bit 2 set
07 00 04 00 02 01 // y: skip to "table * 4"
// n: skip unconditionally
07 8B 04 03 00 00 00 00 01
// cost table * 4
00 08 .
.
Das einzige "Problem" dabei ist dass der "skip" bei action07 dann ausgeführt wird wenn die Bedingung wahr ist, d.h. du brauchst eine Hilfskonstruktion die das korrekte Überspringen der nichtgewünschten Tabelle ermöglicht ("skip unconditionally" im obigen code). Für diese Konstruktion brauchst du eine Bedingung die immer falsch ist, obiges basiert auf der Abfrage der TTDPatch-Version (== 0?), d.h. für OTTD musst du dir möglicherweise etwas anderes ausdenken.
Gruß
Michael
Zitat:EU-Wirtschaft- und Währungskommissar Joaquin Almunia hat alle Besorgnisse über den Schuldnerstatus Griechenlands als unbegründet zurückgewiesen.
(Dieser Beitrag wurde zuletzt bearbeitet: 01.09.2007 21:46 von mb.)
|
|
01.09.2007 21:25 |
|
Ammler
Geschäftsführer
Beiträge: 700
Registriert seit: May 2007
|
Ja, das habe ich befürchtet, na gut ist ja einfach mehr Tiparbeit. Ich kann da ja bei beim grössten anfangen und dann "runterspringen", dann spar ich mir die skip condition.
Ein Problem ist noch, wenn ich jetzt trotzdem noch die Möglichkeit geben möchte 0 zu übergeben, aber höhere Werte als Standard setze. Wie prüfe ich nun ob der Parameter übergeben wurde?
Code:
// Defaults: B0-Airport x8, B1-Purchase x2, B2-running x4, B3-loading x2 (not implemented yet)
0 * 0 09 00 01 01 FF 01
0 * 0 0D 00 00 FF 00 08 00 00 00
.
Um die Ladezeit muss ich mich dann auch noch kümmern.
Edit: Hab jetzt mal eine Version (ohne laden):
http://openttdcoop.ppcis.org/wiki/index.php/Airmod.nfo
(so kann man sie mal auf dem Server einsetzen.)
-Ammler
OpenGFX:
(Dieser Beitrag wurde zuletzt bearbeitet: 02.09.2007 00:45 von Ammler.)
|
|
01.09.2007 22:49 |
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste