Construction Set Lichter sollen angehen wenn man vorbeiläuft.

BlackZero500

Abenteurer
Hi. In einer Mod an der ich gerade arbeite sind in einer halle einige flammen die am rand der halle in die höhe züngeln. Nun will ich das diese angehen wenn man daran vorbeiläuft. Ich hab irgendwo schon mal sowas gelesen, weis aber nimmer wie das funzt.
 
Hi.

Im Ganzen musst du zwei Lampen anbringen.
Die erste ist eine verloschene Lampe, die zweite eine brennende.
Bei der brennenden musst du "Disable" angekreuzt haben, damit sie nicht sichtbar ist.
Du musst jeder brennenden Lampe, die angehen soll, eine Referenz geben wie zum Beispiel "Lampe01". (Doppelter Klick auf die Lampe im Render Window und "Persistent Reference" anklicken)
Die verloschenen Lampen musst du einfach platzieren, mehr nicht.
Dann musst du, wenn du die anderen brennenden Lampen mit einer Referenz bestückt hast, ein Questscript schreiben was ungefähr so aussieht:

scn DasLampenQuest ; Kannste nennen wie du willst 😉

Begin GameMode

If ( GetDistance Player < 400 )
Lampe01.Enable ; Die anderen Lampen-Referenzen musst du dann dadrunter schreiben.

Elseif ( GetDistance Player > 400 ) ; Schreibst du das dorthin, dann würden die Lampen wieder ausgehen, wenn du weit genug weg wärest.
Lampe01.Disable
endif

end

Du musst dem Player vorher aber noch das Quest geben.
Am Besten erstellst du einen NPC der dir dann das Quest gibt.

Beispiel:

Wir erstellen einen neuen NPC.
Nachdem du die Oblivion.esm geladen hast klickst du mit der rechten Maustaste auf die NPC-Liste und wählst "New" aus.
In dem Fenster, das erscheint, musst du die ID eingeben (in dem Beispiel "0QuestMann"), den Namen (in dem Beispiel "Hans") und die Rasse (in dem Beispiel "Imperial").
Nachdem du das getan hast klickst du auf den Button "AI".

Dort kannst du die Eigenschaften deines NPC´s erstellen:

Aggression: Wie schnell er dich angreift (Bei 100 sofort)
Confidence: Wie lange er im Kampf kämpft (Bei 100 bis zum Tod)
Energy Level: Wie aktiv er ist (Bei 100 bleibt er kaum noch stehen)
Responsebility: Wie ehrlich er ist (Bei 100 kann er einen verhaften)

Klick mit der rechten Maustaste in die "AI Package List" und wähle "New" aus.
Als ID gebst du "HansFindetPlayer" an. (Die Namengebung sollte genau sein)
Der "Package Type" ist von vornherein "Find". Ist er das nicht musst du "Find" auswählen.
Im Reiter "Schedule" brauchen wir nichts machen.
Du klickst jetzt auf den Reiter "Conditions" und klickst mit der rechten Maustaste in das Feld und wählst "New" aus.
Dann wählst du unter "Condition Function" "GetDistance" aus.
Rechts daneben ist ein Button wo "TARGET" draufsteht.
Du klickst drauf und wählst unter "Ref" Player aus. (Ganz unten)
Unter "Value" gibst du anstatt 100 "150" ein und fertig.

Du klickst auf den Reiter "Target" und machst ein Häkchen bei "Target" und "Specific Reference"
Als "Ref" wählst du dann wieder "Player" aus.

Jetzt kannst du das AI-Menü wieder verlassen und der NPC ist fertig und schon für unser Quest vorbereitet.
Unter "Cell View" kannst du per doppeltem Linksklick auf eine Cell im Render Window diese laden lassen.
Den NPC kannst du per "Drag'n'Drop" ins Render Window "ziehen" und ihn dort platzieren.

Oben im CS klickst du auf "Character" und dann auf "Quests".
Links im Fenster ist eine Liste mit Quests.
Ein Rechtsklick auf diese und "New" ausgewählt.
Als ID gibst du "0HansQuest" an. (Ist optional, d.h. du kannst es nennen wie du möchtest)
Unter "Quest Name" gibst du "Hans erste Quest" ein und unter "Priority" 60.
Im "Quest Conditions"-Fenster musst du einen Rechtsklick tätigen und "New" auswählen.
Dann unter "Condition Function" die Funktion "GetIsPlayableRace" auswählen.
Nicht vergessen: Du musst unter "Value" 1 eingeben und nicht 0.

Bei "Script" musst du auf die drei Punkte klicken.
Es erscheint das Script-Fenster.
Du klickst auf "Script" oben links und wählst "New" aus.
Bei "Script Type" wählst du "Quest" aus.

Dann musst du das Script, was ich opben hingeschrieben habe, reinschreiben und abspeichern.
Dann wählst du bei "Script" nicht mehr die drei Punkte aus sondern unser Script was du gespeichert hast.

Dann gehst du auf den Reiter "Quest Stages" und machst ein neues.
Das nennst du meinetwegen 10.
Dann machst du noch eins und nennst es 20.
Bei beiden Stages musst du unter "Log Entry" etwas reinschreiben.
Bei 20 klickst du noch auf "Complete Quest".

Dann wechselst du zu dem Reiter "Topic".
Du klickst mit der rechten Maustaste unter "Editor ID" und wählst "Add Topic" aus.
Eine Liste erscheint und du wählst "GREETING" aus.
Im "Info"-Fenster ein rechter Mausklick und auf "New".
Im "Response Text" gibt du das ein, was der NPC sagen soll.
Unter "Emotion Type" wählst du aus, was der NPC für einen Gesichtsausdruck macht während er spricht und unter "Emotion Value" gibst du die Intensität dieser Asudrücke an.

Unter "Conditions" machst du eine neue Zeile und wählst unter "Condition Function" "GetIsID" aus.
Du klickst auf "INVALID" und wählst "0QuestMann" aus.
Das ist dafür gedacht, dass nur unser NPC diesen Satz sprechen kann.
Dann machst du noch ein Häkchen bei "Say Once" und gibt unter "Result Script" "SetStage 0HansQuest 10" ein.
Dann wird das Quest, welches wir gerade erstellen, dem Player gegeben.

Fertig 🙂



Jetzt sollten die die Lichter aufgehen 😉

MfG Wave
 
Wow, du hast dir echt Mühe gegeben. Alerdings geht es auch einfacher... Das wollte ich eigentlich leider nicht sagen, weil du dir da echt viel Mühe reinegsteckt hast, aber leider ist es so 🙁

Einfach dieser Script muss auf die Flamme:
Code:
scn Scriptname

ref myself

Begin GameMode
set myself to getself
if ( myself.getdistance player <= 400 ) && ( myself.hasflames == 0 )
myself.Addflames
elseif (myself.getdistance player > 400 ) && myself.hasflames == 1 )
myself.removeflames
Endif
End
Jetzt kannst du diese so oft wie möglich in die Welt platzieren und immer, wenn der Spieler in einer Distanz von 400 Units oder weniger zur Flamme steht, geht sie erst an.

MfG Gildur
 
Wow. Ich bin beeindruckt, solch professionelle antworten habe ich gar nicht erwartet. Aber gibt es da nicht einen einfacheren weg? Ich meine das ich irgendwo mal sowas gelesen habe, das man das zb auch dann anmachen kann wenn man zb einen bestimmten punkt erreicht.
 
Das ist doch bei den beiden Scripts der Fall... wenn du einen bestimmten Punkt irgendwo meinst, dann musst du nur einen Gegenstand(am Besten einen unsichtbaren😉) an diesen Punkt einfügen und GetDistance entsprechend auf den Gegenstand abändern😉
 
Du müsstest einen Activator benutzen, ihn, wie oben beschrieben, mit einer Referenz bestücken, "Disable" angekreuzt haben (Nur wenn er unsichtbar sein soll) und die neue Referenz anstatt der Lampenreferenz in mein oder Gildurs Script einfügen.

MfG Wave