Oblivion:Enable/Disable mittels Parents: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K (Script)
K
 
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
 
== Anwendung ==
 
== Anwendung ==
 
=== Aufgabenstellung ===
 
=== Aufgabenstellung ===
Variante a): Setze eine Gruppe von Einrichtungsgegenständen in die Welt.
+
* Variante a): Setze eine Gruppe von Einrichtungsgegenständen in die Welt, sofern sie nicht existiert.
Variante b): Ersetze eine Gruppe Einrichtungsgegenständen durch eine andere.
+
* Variante b): Ersetze eine Gruppe Einrichtungsgegenständen durch eine neue.
  
  
 
=== 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 gängige Problem, irgendwelche Einrichtungen oder Statics zu bearbeiten zu müssen.).
+
(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 angehackelt
+
 
b) zusätzlich: die „alten“ Dinge sind NICHT mit „Initially Disabled“ angehakelt; es muss Opposite to Parent angehackelt sein.
+
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 ===
 
=== Script ===
 
<tesscript>Scn ChangeFurniture
 
<tesscript>Scn ChangeFurniture
 +
;Written by keris
 +
;27.7.08
 +
  
 
Ref MyParentRef
 
Ref MyParentRef
  
Begin
+
Begin GameMode
  
If MyParentRef.GetDisabled
+
  If MyParentRef.GetDisabled
  MyParentRef.Enable ;
+
      MyParentRef.Enable  
endif
+
  endif
  
 
end</tesscript>
 
end</tesscript>
Zeile 47: 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

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