Oblivion:Enable/Disable mittels Parents

Aus Skript-Wiki
Version vom 2. Juni 2009, 11:12 Uhr von Keris (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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 | }}