Construction Set Skriptthread zum Construction Set

Ich hab alles überprüft und überall ist auch der Haken bei "Persistent Reference". Was könnte da falsch sein?
 
@ Tywele: Vergiss mal kurz alles, was Kahmul und MvC gesagt haben. Das ist nämlich 1. viel zu performanceunfreundlich und 2tens macht man das so sowieso nicht. Der Nachteil an dieser Art von Scripten ist, dass man bei neuen Lichtern immer wieder das Script mit den neuen Referenzen aktualisieren muss.
Deswegen macht man es wie folgt: Willst du ein Licht mit dieser Tag-Nacht-Eigenschaft erstellen, musst du das gleiche Objekt nochmal mit einer neuen ID erstellen. In deinem Fall könntest du aus ARBlueGreen500 MeinARBlueGreen500 machen, sodass du dann diese 2 ID's im Editor hast. Dies ist wichtig, damit du nicht ungewollt die Eigenschaften der bestehenden Oblivion-Lichter änderst. Und nun muss nur noch folgendes Script auf das neu erstellte Licht.

Code:
scn MeinARBlueGreen500SCRIPT

ref myself

Begin GameMode
set myself to getself
If GameHour >= 20 && GameHour <= 7
myself.enable
else
myself.disable
endif
End
Jetzt kannst du deine Lichter beliebig im Editor platzieren, so viele wie du willst. Den Script kannst du übrigens auch auf andere Lichter legen, die um die selbe Uhrzeit aus- und angehen sollen. Aber nie vergessen: Immer eine neue ID erstellen, wenn du die Original-Lichter nicht verändern möchtest.

Grüße
Gildur
 
  • Like
Reaktionen: Tywele
Du müsstest das Skript auf deine Straßenlaternen (neue ID) legen:

Code:
SCN StraßenLaternenScript

Begin GameMode

Set Self to GetSelf
  If (Self.CanHaveFlames) && (GameHour >= 20 && <= 7) && (Self.HasFlames == 0)
        Self.AddFlames
    ElseIf (Self.CanHaveFlames) && (GameHour > 7 && < 20) && (Self.HasFlames)
          Self.RemoveFlames

  Endif


End
 
  • Like
Reaktionen: Karl C. Agathon
Erstmal danke, Kahmul. Zwei Fragen aber noch: Wie meinst Du das mit der ID und funktioniert das Skript auch, obwohl es Fakelampen, die mit einer unsichtbaren Lichtquelle bestückt sind? Das hätte ich vielleicht noch erwähnen sollen.
 
Du meinst doch Straßenlampen aus der Abteilung "Lights", oder? Wenn ja, die haben ja eigentlich die Feuer schon in der Mesh. Genau weis ich das jetzt nicht, sollte aber so funktionieren. Und falls diese kein Licht abgeben, musst du eben noch deine Lichtquelle erstellen und sie als Referenz in dem Skript eben enablen und disablen.
Und alles hat eine neue Editor-ID. Also Du sollst keine vorhanden Sachen verwenden. ;)
 
  • Like
Reaktionen: Karl C. Agathon
Code:
SCN StraßenLaternenScript

Begin GameMode

Set Self to GetSelf
  If (Self.[B]CanHaveFlame[/B]s) && (GameHour >= 20 && <= 7) && (Self.[B]HasFlames[/B] == 0)
        Self.AddFlames
    ElseIf (Self.CanHaveFlames) && (GameHour > 7 && < 20) && (Self.HasFlames)
          Self.RemoveFlames

  Endif


End

Verstehe ich die 2 dicken Befehle so, dass man mit diesen Scripts direkt die Mesh (bzw. die darin enthaltenen Flammen) beeinflussen kann? :eek:

Funktioniert das auch mit Waffen? Wie etwa die Flammenschwerter aus BEC?

:bye:
 
OK, dann hätte ich kurz eine Frage ...
Für die Nekroklinge aus BEC möchte ich einen Script schreiben.

Es soll folgendes bewirken.
Beim Zaubern eines Zaubers soll der Waffe dieser Flammeneffek hinzugefügt werden, sobald die Zauberdauer weg ist, soll es wieder weggehen.

Jetzt allerdings das Problem, denn sonst hätte ich es (denke ich) selbst hinbekommen.

Wie kann ich das anfängliche Flammenzeugs wegmachen? Denn bevor der Script schreibt, ist die Flamme ja schließlich da.

:bye:
 
Ich glaube, man kann nur die Objekte beeinflussen, die eine "FlameNode" benutzen. Schwerter, oder ähnliches, wenn meine Theorie stimmt, nicht.
Du könntest aber auch eine Mesh ohne Flamme und eine mit Flamme machen und diese dann im Skript removen/adden und equippen/unequippen. ;)
 
  • Like
Reaktionen: TheDarkRuler
Ich hab auch wieder mal ne Frage:

Ich habe mir ein paar Scripts gebastelt nur leider funzen sie garnicht oder nur z.t.

scn MvCSeelenband

short doonce

Begin OnEquip

if player. getitemcount MvCSteindesLebens < 1 && doonce == 0

message "Wollt ihr ohne den Stein gehen?"

elseif player. getitemcount MvCSteindesLebens == 1 && doonce == 0

player. moveto XMARKER.ref

Endif

End

Es passiert einfach nichts, wenn ich das Amulett ausrüste. egal ob ich den Stein habe oder nicht.





scn MvCBlutViole

short abfuellen

Begin OnEquip

messagebox "Möchtet ihr die Viole mit eurem Blut füllen?" "Ja", "Nein"

set abfuellen to GetButtonPressed

if abfuellen == 0

player. removeitem LeereViole
player. additem VolleViole
cast <spellid> player

elseif abfuellen == 1

Endif

End

Das funzt iwie auch nicht. Die auswahl erscheint, aber es passiert nichts, auch wenn ich auf ja klicke. :(

Ich hoffe jemand kann helfen. :)
 
Zuletzt bearbeitet:
Zu 1)

Es heißt player.getitemcount und nicht player. getitemcount
Außerdem würde ich die Bedingungen in Klammern setzen. Hilft enorm bei der Übersichtlichkeit.
Gleich heißt auch nicht = sonder ==. Und außerdem wäre >= vielleicht passender. Ich weißt allerdings auch nicht, auf wie viele der Steine du treffen wirst. :?

Von daher ... probiere es doch mal so ...
Code:
scn MvCSeelenband
 
 short doonce
 
 Begin OnEquip
 
 if (player.getitemcount MvCSteindesLebens < 1) && (doonce ==  0)
 
 message "Wollt ihr ohne den Stein gehen?"
 
 elseif (player.getitemcount MvCSteindesLebens = 1) && (doonce ==  0)
 
 player.movetto <Referenz>
 
 Endif
 
 End
Außerdem noch was ... wenn das "Wollt ihr ohne den Stein gehen?" eine Abfrage sein soll, dann musst du eine Messagebox machen und nicht nur eine Message.

Etwa so.

Code:
scn MvCSeelenband
  
  short doonce
short Entscheidung
  
  Begin OnEquip
  
  if (player.getitemcount MvCSteindesLebens < 1) && (doonce ==  0)
  
  MessageBox "Wollt ihr ohne den Stein gehen?" "Ja" "Nein"
set Entscheidung to getbuttonpressed

;Das was du mit der Entscheidung machen willst
  
  elseif (player.getitemcount MvCSteindesLebens = 1) && (doonce ==  0)
  
  player.movetto <Referenz>
  
  Endif
  
  End

:bye:

EDIT:

Deine Probleme hängen meiner Meinung nach mit den Begins zusammen.
Du benutzt ja Begin onEquip. Das kann allerdings nur für den (sehr kurzen) Moment des Ausrüstens benutzt werden.
Ein Gamemode-Block dahinter würde vielleicht helfen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Meister von Cyrodiil
Also...
Ich hab' jetzt mal noch mal drüber nachgedacht.
Probiere es doch bei Script 2 mal so ...

Code:
scn MvCBlutViole

short abfuellen
short DoOnce

Begin OnEquip

messagebox "Möchtet ihr die Viole mit eurem Blut füllen?" "Ja", "Nein"

set abfuellen to GetButtonPressed
[B]set DoOnce to 0[/B]

[B]End

Begin GameMode[/B]

[B]If (DoOnce == 0) [/B]
If (abfuellen == 0)

player. removeitem LeereViole 1
player. additem VolleViole 1
cast <spellid> player

[B]set DoOnce to 1[/B]

Elseif (abfuellen == 1)

;was auch immer hier passiert

Endif
[B]Endif[/B]

End

Die fetten Teile sind neu.

:bye:
 
  • Like
Reaktionen: Meister von Cyrodiil
Machs doch mal so:

(Im Übrigen musst du das Inventar schließen, damit das passiert)

Code:
SCN ...

Short Choice
Short Next

Begin OnEquip

If (Player.GetItemCount <Stein>)
    set Next to 1
 Else
      return
Endif

End


Begin GameMode

If (Next == 1)
  MessageBox "WasWeisIch" "A", "B"
  set Next to 2
 Endif
  If (Next == 2)
    set Choice to 0
    set Choice to GetButtonPressed
   If (Choice == 0)
       set Next to 3
       Player.MoveTo <MarkerRef>
     ElseIf (Choice == 1)
          set Next to 0
          set Choice to 0
         return
    Endif
 Endif


End
 
  • Like
Reaktionen: Meister von Cyrodiil
Danke ihr beiden! :) Bei deinem, Kahmul, blick ich zwar nicht mehr durch, aber wenn es funzt, ist mir das egal. :-D

@DarkRuler:

Bei der Auswahl "nein" soll garnix passieren, deswegen steht da nix. :)