Oblivion:Enable/Disable mittels Parents: Unterschied zwischen den Versionen
Keris (Diskussion | Beiträge) K (→Script) |
Keris (Diskussion | Beiträge) K |
||
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 11: | Zeile 11: | ||
=== Theorie === | === Theorie === | ||
Wenn man diese Aufgabe löst, indem man [[ob:Reference|Referenzen]] zu [[ob:Persistent Reference|Persistent References]] macht, um sie in einem Script abzuarbeiten, hat man mehrere Nachteile. Die [[ob:Persistent Reference|Persistent References]] sind nicht performant und machen die Save-Dateien größer. Der Quelltext wird lang und ist unflexibel. Der Vorteil ist, dass man auf einen Blick sieht, was womit gemacht wird. | Wenn man diese Aufgabe löst, indem man [[ob:Reference|Referenzen]] zu [[ob:Persistent Reference|Persistent References]] macht, um sie in einem Script abzuarbeiten, hat man mehrere Nachteile. Die [[ob:Persistent Reference|Persistent References]] sind nicht performant und machen die Save-Dateien größer. Der Quelltext wird lang und ist unflexibel. Der Vorteil ist, dass man auf einen Blick sieht, was womit gemacht wird. | ||
− | Löst man diese Aufgabe jedoch mit [[ob:Parent|Parents]], ist der Quelltext sehr kurz und man kommt mit einer [[ob:Persistent Reference|Persistent Reference]] aus. Änderungen an der Verkettung sind schnell gemacht. Der Nachteil ist, dass man im CS nicht so schnell erkennt, was wie verkettet ist. | + | Löst man diese Aufgabe jedoch mit [[ob:Parent|Parents]], ist der Quelltext sehr kurz und man kommt mit einer einzigen! [[ob:Persistent Reference|Persistent Reference]] aus. Änderungen an der Verkettung sind schnell gemacht. Der Nachteil ist, dass man im CS nicht so schnell erkennt, was wie verkettet ist. |
Letztendlich liegt der Nutzen von [[ob:Parent|Parents]] aber auf der Hand. | Letztendlich liegt der Nutzen von [[ob:Parent|Parents]] aber auf der Hand. | ||
[[ob:Persistent Reference|Persistent References]] können im [[ob:Reference Window| Reference Window ]] als [[ob:Parent|Parents]] ausgewählt werden | [[ob:Persistent Reference|Persistent References]] können im [[ob:Reference Window| Reference Window ]] als [[ob:Parent|Parents]] ausgewählt werden | ||
− | (es können irgendwelche Objekttypen sein sein, damit das funktioniert, es ist für das enable/disable nur das | + | (es können irgendwelche Objekttypen sein sein, damit das funktioniert, es ist für das enable/disable nur das typische Problem, irgendwelche Einrichtungen oder Statics zu bearbeiten zu müssen.). |
− | |||
== Realisierung == | == Realisierung == | ||
=== Umgebung === | === Umgebung === | ||
− | MyParent existiert und ist jeweils als [[ob:Parent|Parent]] für die gewünschten Dinge eingetragen (die anderen Gegenständen existieren damit ebenfalls in der Welt) | + | MyParent (mit der Ref MyParentRef) existiert und ist jeweils als [[ob:Parent|Parent]] für die gewünschten Dinge eingetragen (die anderen Gegenständen existieren damit ebenfalls in der Welt) |
− | a )Alle sind mit „Initially Disabled“ angehakelt; Opposite to Parent ist NICHT | + | |
− | b) zusätzlich: die „alten“ Dinge sind NICHT mit „Initially Disabled“ angehakelt; es muss Opposite to Parent | + | a) Alle sind mit „Initially Disabled“ angehakelt; Opposite to Parent ist NICHT angehakelt |
+ | |||
+ | b) zusätzlich: die „alten“ Dinge sind NICHT mit „Initially Disabled“ angehakelt; es muss Opposite to Parent angehakelt sein. | ||
Zeile 35: | Zeile 36: | ||
Ref MyParentRef | Ref MyParentRef | ||
− | Begin | + | Begin GameMode |
If MyParentRef.GetDisabled | If MyParentRef.GetDisabled | ||
Zeile 50: | Zeile 51: | ||
== Weiterführende Hinweise== | == Weiterführende Hinweise== | ||
− | * [[ob:Parent]] | + | * [[ob:Parent|Parents]] |
+ | |||
− | {{ Scriptkategorie |Parents|Enable/Disable mittels Parents}} | + | {{ Scriptkategorie |Parents|Level_1_Scripts|Enable/Disable mittels Parents|Enable/Disable mittels Parents}} |
Aktuelle Version vom 2. Juni 2009, 11:12 Uhr
Inhaltsverzeichnis
Enable/Disable mittels Parents
Parents haben einige erfreuliche Eigenschaften, die man sich beim Scripten zunutze machen kann. Eine davon ist das Verhalten von den an den Parents angehängten "Childs" beim Enablen/Disablen des Parents.
Anwendung
Aufgabenstellung
- Variante a): Setze eine Gruppe von Einrichtungsgegenständen in die Welt, sofern sie nicht existiert.
- Variante b): Ersetze eine Gruppe Einrichtungsgegenständen durch eine neue.
Theorie
Wenn man diese Aufgabe löst, indem man Referenzen zu Persistent References macht, um sie in einem Script abzuarbeiten, hat man mehrere Nachteile. Die Persistent References sind nicht performant und machen die Save-Dateien größer. Der Quelltext wird lang und ist unflexibel. Der Vorteil ist, dass man auf einen Blick sieht, was womit gemacht wird. Löst man diese Aufgabe jedoch mit Parents, ist der Quelltext sehr kurz und man kommt mit einer einzigen! Persistent Reference aus. Änderungen an der Verkettung sind schnell gemacht. Der Nachteil ist, dass man im CS nicht so schnell erkennt, was wie verkettet ist.
Letztendlich liegt der Nutzen von Parents aber auf der Hand.
Persistent References können im Reference Window als Parents ausgewählt werden (es können irgendwelche Objekttypen sein sein, damit das funktioniert, es ist für das enable/disable nur das typische Problem, irgendwelche Einrichtungen oder Statics zu bearbeiten zu müssen.).
Realisierung
Umgebung
MyParent (mit der Ref MyParentRef) existiert und ist jeweils als Parent für die gewünschten Dinge eingetragen (die anderen Gegenständen existieren damit ebenfalls in der Welt)
a) Alle sind mit „Initially Disabled“ angehakelt; Opposite to Parent ist NICHT angehakelt
b) zusätzlich: die „alten“ Dinge sind NICHT mit „Initially Disabled“ angehakelt; es muss Opposite to Parent angehakelt sein.
Script
<tesscript>Scn ChangeFurniture
- Written by keris
- 27.7.08
Ref MyParentRef
Begin GameMode
If MyParentRef.GetDisabled MyParentRef.Enable endif
end</tesscript>
Handhabung
Dieses klitzekleine Script, dass die Welt verändert, ist entweder ein Objektscript oder ein Questscript. (Letztlich ist es nur ein relevantes Kommando, das Enable eben, und dieses kann überall stehen.)
Weiterführende Hinweise
Weitere Scripts aus dieser Kategorie
{{#if: Parents | }}
{{#if: Level_1_Scripts | }}