PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Licht ausschalten



Uranor
23-03-05, 17:36
Der Autor von Scripting for Dummies philosophiert nur, dass die Lichter wohl nach dem Ausschalten immer lumineszieren, und zur Straffung verrät er dann nur das disablen. Aber ich kann doch eine Laterne nicht disablen, nur weil die mal etwas luminesziert.

Also ich will jetzt das Licht ausmachen, hab auch schon den Schalter. http://forums.ubi.com/infopop/emoticons/icon_razz.gif Dabei ginge ganz aus schalten oder den Radius auf NULL setzen. Beides kann ich nicht ansprechen.


Ja, es müsste ansich so etwas geben wie die veröffentlichten Objekteigenschaften. Gibt es vieleicht auch, aber wo kann man sie finden?

Uranor
23-03-05, 17:36
Der Autor von Scripting for Dummies philosophiert nur, dass die Lichter wohl nach dem Ausschalten immer lumineszieren, und zur Straffung verrät er dann nur das disablen. Aber ich kann doch eine Laterne nicht disablen, nur weil die mal etwas luminesziert.

Also ich will jetzt das Licht ausmachen, hab auch schon den Schalter. http://forums.ubi.com/infopop/emoticons/icon_razz.gif Dabei ginge ganz aus schalten oder den Radius auf NULL setzen. Beides kann ich nicht ansprechen.


Ja, es müsste ansich so etwas geben wie die veröffentlichten Objekteigenschaften. Gibt es vieleicht auch, aber wo kann man sie finden?

chris_tm
24-03-05, 06:46
Es gibt ja auch unsichtbare models als Lichtquelle.
Die kann man einfach disablen.

Bei einer Laterne sieht das natürlich doof aus.

Also macht man 2 Laternen - eine die leuchtet und eine die nicht leuchtet (Static).
Beide Laternen setzt man auf genau die selbe Position.

Wenn der Ausgangszustand sein soll, dass die Laterne leuchtet wird die die nicht leuchtet (Lampe_Aus) einmalig disabled:

<pre class="ip-ubbcode-code-pre">short doOnce

if ( doOnce == 0 )
Lampe_Aus-&gt;Disable
set doOnce to 1
endif </pre>

Jetzt kann man mittels der Funktion OnActivate und einer Hilfsvariable (lightOff) die beiden Lampen gegeneinander austauschen so dass entweder die leuchtende oder die nicht leuchtende zu sehen ist:

<pre class="ip-ubbcode-code-pre">short lightOff

if ( OnActivate == 1 )
if ( lightOff == 0 )
Lampe_An-&gt;Disable
Lampe_Aus-&gt;Enable
set lightOff to 1
else
Lampe_An-&gt;Enable
Lampe_Aus-&gt;Disable
set lightOff to 0
endif
endif </pre>

Zusammen:

<pre class="ip-ubbcode-code-pre">Begin Scriptname

short doOnce
short lightOff

if ( doOnce == 0 )
Lampe_Aus-&gt;Disable
set doOnce to 1
endif

if ( OnActivate == 1 )
if ( lightOff == 0 )
Lampe_An-&gt;Disable
Lampe_Aus-&gt;Enable
set lightOff to 1
else
Lampe_An-&gt;Enable
Lampe_Aus-&gt;Disable
set lightOff to 0
endif
endif

End </pre>

Ich habe selbst noch keine Erfahrungen mit dem Disablen von Lichtquellen habe aber irgendwo gelesen, dass es nicht zu 100% zuverlässig funktioniert.
Es könnte also passieren, dass zwar die Light_Laterne gegen die Static_Laterne ersetzt wird aber das Licht trotzdem bleibt.

Edit:
Als Alternative könnte man beim Lichtausschalten die leuchtende Laterne auch mit "SetPos Z value" einfach weit genug im Boden versenken um sie UND ihr Licht verschwinden zu lassen und beim Einschalten mit "SetAtStart" wieder auf ihren alten Platz setzen:

<pre class="ip-ubbcode-code-pre">Begin Scriptname

short doOnce
short lightOff

if ( doOnce == 0 )
Lampe_Aus-&gt;Disable
set doOnce to 1
endif

if ( OnActivate == 1 )
if ( lightOff == 0 )
Lampe_An-&gt;SetPos Z -100
Lampe_Aus-&gt;Enable
set lightOff to 1
else
Lampe_An-&gt;SetAtStart
Lampe_Aus-&gt;Disable
set lightOff to 0
endif
endif

End </pre>

Das "-100" ist hier natürlich nur ein Beispiel für die Höhe, auf die die Laterne versenkt wird.

Edit Nr. 2:
Siehe auch meine Antwort in diesem Thread (http://forums-de.ubi.com/eve/forums?a=tpc&s=59010161&f=398100233&m=4401013792&r=2971036792#2971036792) für eine weitere Möglichkeit das Licht zuverlässig auszuschalten.

Uranor
24-03-05, 11:29
chis_tm, ich dank dir sehr, du behandelst das Thema sehr ausführlich. Ich antworte hier auf deine beiden Posts. Jau, ich mein GhanBuriGhan. Er schreibt:

"Achtung:Licht ausmachen
Da scheint's ein Game-Engine-Problem zu geben mit dem Ausmachen von Licht – Actors und einige andere Typen von Objekten scheinen noch immer illuminiert zu sein, wenn die Welt umher es nicht ist."

Nach diesem Einleitungssatz geh ich davon aus, dass man definitiv ausschalten!! kann.

Seine weiteren Ausführungen versteh ich dann klar als Möglichkeiten 2 und 3 für Problemlösungsfälle. Sie betreffen ganz allgemein das OnHide Setzen von ansprechbaren Objekten, gehen also nicht wirklich auf die Topic-überschrift ein. Vielleicht ist mein Sprachgebrauch nicht gut, aber ich versteh es gem. OOP so.

Eine zuverlässige (OnHide)-Möglichkeit hatte ich bereits erfüftelt, nachdem das pauschale Austauschen (also nicht!! ausschalten) nur bei einer der durch die ID betroffenen Laternen funktionierte. Als ich dann gestern "Licht ausmachen" las, war ich natürlich elektrisiert und ging auf die Pirsch.

Ole, als ich gemerxt hatte, dass es pauschal für alle ID-betroffenen Objekte (wohlgemerxt im gleichen Raum, in der Nachbarschaft) so nicht geht, hatte ich jeder Laterne eine eigene ID zugewiesen, alle im Skript behandelt und den Skript bei allen Objekte eingebunden. In den Tests klappte es bisher nun einwandfrei zuverlässig. In der Variante nutz ich gaghalber 2 Schalter (und Wechselfarblicht, was ich beim Aufbau als sehr reizvoll empfand), via Variablen-FlicFlac ginge es auch mit einem Schalter.

<pre class="ip-ubbcode-code-pre">begin 0_Hallenlicht

short einmal

; dunkle Quellen beim ersten Zell-Besuch unsichtbar machen.
if ( einmal == 0 )
0_Kerzenstaender_dh11 -&gt; disable
0_Kerzenstaender_dh12 -&gt; disable
0_Kerzenstaender_dh13 -&gt; disable
0_Kerzenstaender_dh14 -&gt; disable
0_Kerzenstaender_dh15 -&gt; disable
0_Kerzenstaender_dh16 -&gt; disable
0_Kerzenstaender_dh17 -&gt; disable
set einmal to 1
endif

; erst unsichtbar machen, damit es nicht zu einer blitzartigen Helligkeitssteigerung kommen kann.
if ( 0_Kristall_Schalter_ein -&gt; OnActivate == 1 )
0_Kerzenstaender_dh11 -&gt; disable
0_Kerzenstaender_dh12 -&gt; disable
0_Kerzenstaender_dh13 -&gt; disable
0_Kerzenstaender_dh14 -&gt; disable
0_Kerzenstaender_dh15 -&gt; disable
0_Kerzenstaender_dh16 -&gt; disable
0_Kerzenstaender_dh17 -&gt; disable

0_Kerzenstaender_dh01 -&gt; enable
0_Kerzenstaender_dh02 -&gt; enable
0_Kerzenstaender_dh03 -&gt; enable
0_Kerzenstaender_dh04 -&gt; enable
0_Kerzenstaender_dh05 -&gt; enable
0_Kerzenstaender_dh06 -&gt; enable
0_Kerzenstaender_dh07 -&gt; enable
elseif ( 0_Kristall_Schalter_aus -&gt; OnActivate == 1 )
0_Kerzenstaender_dh01 -&gt; disable
0_Kerzenstaender_dh02 -&gt; disable
0_Kerzenstaender_dh03 -&gt; disable
0_Kerzenstaender_dh04 -&gt; disable
0_Kerzenstaender_dh05 -&gt; disable
0_Kerzenstaender_dh06 -&gt; disable
0_Kerzenstaender_dh07 -&gt; disable

0_Kerzenstaender_dh11 -&gt; enable
0_Kerzenstaender_dh12 -&gt; enable
0_Kerzenstaender_dh13 -&gt; enable
0_Kerzenstaender_dh14 -&gt; enable
0_Kerzenstaender_dh15 -&gt; enable
0_Kerzenstaender_dh16 -&gt; enable
0_Kerzenstaender_dh17 -&gt; enable
endif

end 0_Hallenlicht</pre>

Das Prob bei Lichtquellen dürfte sicher kein Skript-Prob sein sondern hängt mit den Objekten zusammen. Man kennt im Editor den Effekt, dass plazierte Lichtquellen ihr Flammobjekte beim Umpositionieren nicht mitnehmen, die Objekte erscheinen erst beim Neustart und im Spiel an den richtigen Positionen. Hier scheint eine private Routine zu fehlen oder nicht zu funktionieren.

-Bleibt natürlich die Möglichkeit, dass es tatsächlich eine ggf. undokumentierte oder an anderer Stelle dokumentierte Zugriffsmöglichkeit auf die Objekteigenschaften der Lichtquellen gibt. GhanBuriGhan hat das doch nicht umsonst so geschrieben? Unsichtbar machen und Leuchteigenschaft auf NULL setzen (ausschalten) betrifft völlig verschiedene Eigenschaften (veröffentlichte Methoden).

chris_tm
25-03-05, 07:15
Es gibt Morrowind seit 2002.
Würde mich doch schwer wundern wenn plötzlich aus dem Nichts undokumentierte Funktionen auftauchen würden.

Lass Dich nicht von der Ruhe in diesem Forum täuschen. Es gibt eine riesige internationale Morrowind Modder Community und ich gehe davon aus, dass inzwischen sogut wie alles was mit der Scriptsprache machbar ist ans Licht gekommen ist.

Die einzige Möglichkeit die Beschränkungen der Scriptsprache zu umgehen ist wohl das Programm Morrowind Enhanced. Ob das beim Licht ausmachen helfen würde kann ich leider nicht sagen da ich das Teil nie ausprobiert habe.

TheStrongMage
25-03-05, 08:23
ich kann mich schwach erinnern, dass ich mal ein PI gesehen hab, wo man kerzen aus und anmachen kann. google mal n bissel. dann musste dir blos das script dazu angucken und nachmachen

Uranor
25-03-05, 12:13
<BLOCKQUOTE class="ip-ubbcode-quote"><font size="-1">quote:</font><HR>Originally posted by chris_tm:
Es gibt Morrowind seit 2002.
Würde mich doch schwer wundern wenn plötzlich aus dem Nichts undokumentierte Funktionen auftauchen würden.

Lass Dich nicht von der Ruhe in diesem Forum täuschen. Es gibt eine riesige internationale Morrowind Modder Community und ich gehe davon aus, dass inzwischen sogut wie alles was mit der Scriptsprache machbar ist ans Licht gekommen ist. <HR></BLOCKQUOTE>

Genau das denk ich auch, chris_tm. Das Werk von GhanBuriGhan besteht allerdings schon länger. Nach seiner Darstellungsform besteht eine Möglichkeit, die halt nur nicht sicher wirken wollte. Also nannte er ersatzweise nur die Austauschmöglichkeit. So les ich seinen Text. Und auch in der Praxis zeigt sich, dass das beschriebene Austauschen klappt. Das bedeutet doch, dass er etwas kennt, das eben nicht zuverlässig klappen muss. Er schien davon auszugehen, dass diesen Weg sowieso jeder kennt und nannte ihn nicht. - Mich würde aber der direkte Eigenschaftenzugriff interessieren, und sei es nur studienhalber.

Wenn tatsächlich Zugriff möglich wäre, sollten sich via Skript ggf. Farbe und Radius variieren lassen. Jedem die eigene Hausbeleuchtung, das wäre ein toller Gag.



TheStrongMage, leider werde ich ohne den PI-Namen oder bekannte Metatag- bzw. Textbestandteile keine Google-Chance haben. Ohne das PI untersucht zu haben, kannst du real gar nicht wissen, ob das Licht ausgeschaltet wurde, oder ob die Beleuchtungsköper ausgetauscht wurden. Beide Tauschleuchtköper werden ja an der gleichen Position plaziert. Für den Nutzer sehen beide Wege wie ausschalten aus.

Uranor
25-03-05, 16:20
übrigens, eine "Immer"Lumineszenz wird zu erwarten sein. Zum Beurteilen der Wirkung muss ich ja einen Satz jeweils unwirksam machen (oder aus der Umgebung entfernen). Also wählte ich Radius 0. CS setzte den Wert dann teilweise Auto auf 16. Ich geh davon aus, dass unter Radius 16 nix geht.


Das ist hier im speziellen Fall nicht so tragisch. 7 Lampen mehr oder weniger... unsichtbares belastet ja nicht die Prozesslast (würde ich zumindest annehmen).

Doch aus dem System kann noch viel mehr rausgeholt werden incl. Beleuchtungsfortschaltung bei Triggerpassagen, Auto-Dramatik bei diversen Feindauftauchungen. http://forums.ubi.com/images/smilies/icon_twisted.gif ... Irgendwann wird es dann zu mühsam, zich Lampensätze zu plazieren, auszurichten, Wirkung zu beurteilen. Man verzichtet also, während gutes vielleicht mit sinnvollem Aufwand möglich wäre. Grundsätzlich kann das Thema durchaus interessant bleiben.