IF-Forum

» IF-Forum - Autorencafé - Schreiben! - Unterschiederschied zwischen -> und found_in
AntwortenNeues ThemaNeue Umfrage

Unterschiederschied zwischen -> und found_in

Geschrieben um 08:01 am 22.02.2004 | Zitat | Editieren | Löschen
Kris
Mitglied
Dr Gumby
Beiträge: 181

Hallo,

hier kann mir doch bestimmt jemand erklären, worin der Unteschied bei den verschiedenen Möglichkeiten ein Objekt zu plazieren besteht:

1) ->

2) found_in

3) move objektA to objektB (in der Initialize Routine)

Ich weiß, dass bei (war's "->" ?) es die Möglichkeit gibt, über eine Aktion den Ursprungszustand wieder herzustellen. (Aber selbst die Stelle kann ich in DM4 nicht wiederfinden).

Gibt es weitere Unterschiede?

Danke für die Hilfe

Kris

Geschrieben um 12:37 am 22.02.2004 | Zitat | Editieren | Löschen
kairo
Mitglied
Dr Gumby
Beiträge: 284

Hallo!

Mit "->" stellst du das Objekt als "Kind" unter das vorangegangene Objekt. Wenn du also erst eine Küche programmiert hast und dann einen "-> Herd", dann steht der Herd in der Küche.

Mit "found_in" kannst du mehrere Räume angeben, in denen das Objekt auftaucht. Sinnvoll für Türen, die ja zwei Räume verbinden oder z.B. für Grünlilien, die in allen Zimmern eines Studentenwohnheims stehen.

In der Startroutine sollten nur wenige Objekte verschoben werden. Wenn es um den Startzustand geht, kannst du die Objekte ja direkt dort programmieren, wo sie am Anfang erscheinen sollen. "Move" ist nur bei Veränderungen während des Spiels sinnvoll. ("move pizzawerbung to muell;")

Es gibt noch eine Möglichkeit, Objekte zu arrangieren:

"Object Herd Kueche"

Du stellst den Raum einfach hinter das Object. Das bevorzuge ich, weil es den besten Überblick bietet.

Geschrieben um 14:25 am 22.02.2004 | Zitat | Editieren | Löschen
Kris
Mitglied
Dr Gumby
Beiträge: 181

Hallo,

die letzte finde ich auch am übersichtlichsten.

Bedeuted das, dass ein "found_in"-Objekt ein elternloses Waisenkind ist?

Und nur durch "move" oder "->" oder "Object Herd Küche" ist es ein child?

Kris

Geschrieben um 15:46 am 22.02.2004 | Zitat | Editieren | Löschen
Martin
Avatar
Mitglied
Prof Gumby
Beiträge: 634

Zitat:

Bedeuted das, dass ein "found_in"-Objekt ein elternloses Waisenkind ist?

Und nur durch "move" oder "->" oder "Object Herd Küche" ist es ein child?

found_in benutzt man nur für Dekorationen, also Objekte mit dem Attribut scenery, die in mehreren Räumen gleichzeitig sein sollen. Jedesmal, wenn der Spieler einen Raum betritt, wird das Objekt mit verschoben, so dass es eine Tochter von real_location ist, und ein Geschwister des Spielers. (Dies geschieht in der Routine MoveFloatingObjects).

Mehr dazu steht in Abschnitt 8 des DM4.

Im allgemeinen gibt es jedes Objekt nur einmal, dann muss seine Lage in der Spielwelt der im Objektbaum entsprechen. In der Kopfzeile einer Objektdefinition kannst du dem Objekt seinen Anfangsort im Baum geben. Ob mit Pfeilen oder durch Angabe des Mutterobjekts, das ist egal.

Mit move und remove kannst du die Objekte im Baum verschieben. Aber Obacht: Ein Objekt, das verschoben wird, weiß nicht, wo es vorher war. Man kann also innerhalb eines Spiels nicht den Ursprungszustand des Objektbaums wiederherstellen. (Der Befehl "Neustart", bzw. der Opcode @restore stellen den gesamten Ursprungszustand des Spiels wieder her, man hat auf einzelne Teiles dieses Zustands, wie etwa den Objektbaum, während des Spiels keinen Zugriff.)

Alles rund um das Konzept des Objektbaums steht in §3 des DM4, insbesondere in den Absätzen 3.2. bis 3.4.

Um nochmal zusammenzufassen:

1) ->

Dies, bzw. die Alternative, das Mutterobjekt direkt anzugeben, ist der übliche Weg, wie man Objekte im Spiel platziert.

2) found_in

Dies ist ein Trick, um ein Objekt scheinbar in mehreren Räumen zugegen sein zu lassen und wird nur bei Szenerie verwendet. Ein Objekt mit found_in muss zu Beginn des Spiels nicht unbedingt eine Mutter haben, da es automatisch verschoben ist, wenn die Zeit dazu kommt.

3) move objektA to objektB (in der Initialize Routine)

Das wird üblicherweise nur für Dinge nur verwendet, die der Spieler zu Beginn des Spiels bei sich trägt. (Man kann nicht "Object Schraubenzieher Player" sagen, weil Player kein Objekt ist, sondern eine Variable, die auf ein Objekt zeigt. Man könnte aber vermutlich sagen "Object Schraubenzieher selfobj".)

Geschrieben um 17:53 am 22.02.2004 | Zitat | Editieren | Löschen
Kris
Mitglied
Dr Gumby
Beiträge: 181

Hi,

vielen Dank für die ausführliche Antwort.

Kris

AntwortenNeues ThemaNeue Umfrage
Powered by Spam Board SVN © 2007 - 2021
Impressum / Datenschutz