Construction Set npc anweisen einen activator zu benutzen

Cadhar

Reisender
so, die palette ist noch nciht zu ende :lol:

folgendes:
hab ein tor, das ist per skript versperrt..
jetzt soll aber auch ein npc in der lage sein das dingen zu öffnen..
daher brauch ich folgendes:

bei benutzung des tores soll der npc - gleicher skript wie der den der spieler zu spüren bekommt, also muss man das irgendwie filtern - die anweisung bekommen zuerst activator ab1 zu benutzen (auf dem liegt ein skript das das disabled wird), anschließend noch activator ab2 (der öffnet dann das tor, allerdings nur wenn ab1 disabled wurde^^)

das in klammern funktioniert - für den spieler
brauch nur die anweisungen für den npc..

soll für jeden beliebigen npc funktionstüchtig sein, evtl noch mit faction überprüfung, aber das ist vorerst noch unwichtig :)

Grüße,
 
Du gibts den beiden Activatoren eine Referenz und dem NPC natürlich auch.
Dann könnte der z.B. nach einem Gespräch eine Queststage höhersetzen. In dieser steht.
NPCREF.activate ACTIVATOR1REF
setstage xxxx y
ind der nächsten Stageresult steht dann halt
NPCREF.activate ACTIVATOR2REF

müsste funktionieren, habs aber nicht probiert.
 
Hm... leider Themaverfehlung :cry:

Obwohl..
Ich glaube man kann innerhalb eines Skriptes(!) überprüfen wer das öffnet, bzw ob es ein npc oder der player ist
kann ich da dann direkt sagen actor.activate xyz ?

dann an den activator xyz ein actor.activtate zyx ...

hm..
edit:
hm.. gut geht nicht, da actor keine persistent reference ist, war nen versuch wert:cry:
 
Zuletzt bearbeitet:
Wenn der NPC nur eine normale Tür öffnen soll, platzierst du einen XMarker hinter der Tür, die Tür darf dabei aber weder auf "Minimal Use" noch im Besitz einer Faction sein, der der NPC nicht angehört bzw. nicht im Besitz eines NPCs sein, der dein NPC nicht ist. Dann lässt du den NPC einfach zum XMarker gehen. Hat er den Schlüssel (oder die Tür ist nicht abgeschlossen), öffnet er die Tür. Sonst versuch, ihn vor die Tür gehen zu lassen und dann die Tür den NPC aktivieren.
 
der npc soll auf befehl einen activator benutzen, müsste machbar sein ;)

VIelleicht über aipackages? kann man die per skript steuern/starten? :?
ohje, mit denen hab ich mich noch gar nich befasst :lol:
 
Nein, die AI-Packages sind meines Wissens nach im Grunde nur Tagesabläufe.

scn lagertoröffnen
begin onActivate
lagerdrunken1.activate lagerdoor12
end


Sofortiger Absturz? Seltsam.

Gut, erstmal muss ich wissen, wie der Befehl aussehen soll. Ich meine den Befehl, den der Spieler gibt, damit der NPC den Activator benutzt. Ist das ein Activator, ein Dialog, eine QuestStage, soll der Spieler sich in einem bestimmten Abstand zu einem Objekt befinden, soll der Spieler ein bestimmtes Objekt ausgerüstet haben...
 
scn lagertoröffnen
begin onActivate

lagerdrunken1.activate lagerdoor12
end

das hängt an einem activator, ist aber nur zu testzwecken so geregelt..

später soll es dann sein - sobald ein npc eine tür benutzt das das dann gestartet wird..

ich werd das später nochmal testen, aber gestern ist mir das 2x in folge ohne fehlermeldung sofort abgestürzt
 
Ich bin mir nicht sicher ob ich es richtig verstanden habe, aber... wenn der Activator1 selbst sich gleich beim benutzen disabled, könnte das der Grund für den Absturz sein.
 
Also der Script soll gestartet werden, sobald ein NPC eine Tür öffnet? Sprich sobald der NPC Tür 1 öffnet, soll Tür 2 auch geöffnet werden? Müsste reichen, wenn du Tür 2 als Parent von Tür 1 stellst. Sonst probier folgendes:

Code:
scn lagertoröffnen

begin onActivate

if IsActionRef player == 0
[B]Tür2Ref[/B].Activate
endif

end

Ist aber nicht getestet. Oder habe ich dich falsch verstanden?
 
@dienerRE: ja, der activator disabled sich sofort.. kann das wirklich daran liegen? Ich werds mal testen..

So, um das ganze ein wenig besser zu beschreiben, folgender screen:



Der Skript

scn lagertoröffnen
begin onActivate
lagerdrunken1.activate lagerdoor12
end

liegt auf dem Stein "F".
Der weist den npc "B" an, den activator "D" zu benutzen.
Das war nur zu testzwecken ob das überhaupt möglich ist ...

Am ende will ich folgenden ablauf herausbekommen:
Ein beliebiger NPC, hier im Beispiel "B", kommt an die Türe "C" und benutzt diese.
Auf der Tür "C" soll jetzt ein Skript liegen, dass dem NPC "A" sagt das er "D" benutzen soll. Auf "D" wiederum liegt der Befehl "E" zu benutzen. Auf "E" liegt dann der befehl "activate.C" Dieser wird vom System dann ausgeführt. (Geht aber nur wenn eben D vorher aktiviert - und somit Weggelegt wurde ;) )
("G" ist "D" disabled^^)
 
Zuletzt bearbeitet:
Das wird nicht ganz trivial und nicht allein mit ein paar Skriptzeilen zu erledigen sein. Wenn Du möchtest, dass der NPC A die Aktivatoren auch sichtbar aktiviert, also hingeht und kurz daran herumfummelt, musst Du ihm entsprechende AI-Packages (Find) geben und diese nacheinander abspielen.

Der grobe Ablauf wäre dann in etwa folgender:

  • NPC B kommt bei der Türe an und aktiviert diese.
    OnActivate-Block im Skript auf der Tür "C" lädt NPC A die erste AI-Package (Find-Package mit Target "D") auf.
    NPC A geht zur Tür, aktiviert "D" und spielt dabei die entsprechende Animation ab.

  • OnActivate-Block im Skript von "D" lädt NPC A die nächste Find-Package mit Target "E" auf. Gleich danach wird "D" disabled und "G" eingeschaltet.
    NPC A geht zu "E" und aktiviert den Schalter.

  • OnActivate-Block im Skript von "E" aktiviert "C" und NPC A bekommt eine Travel-Package die ihn schließlich zum Ausgangspunkt (X-Marker-Heading) zurückkehren lässt.
Ob der Ablauf am Ende gut aussieht, weiß ich nicht. Evtl. müsste man noch zwei weitere X-Marker-Heading vor der Tür und dem Schalter plazieren und diese als Location in den Packages angeben (damit NPC A "richtig" steht).

Und noch zu dem Aktivieren im Skript:

Du schreibst:
Auf "E" liegt dann der befehl "activate.C"

Das muss genau andersherum lauten:
C.Activate

ebenso oben im Testskript:

lagerdrunken1.activate lagerdoor12

Sofern "lagerdrunken1" Dein NPC ist, würde die Skriptzeile bedeuten, dass die Tür den NPC aktivieren soll. Möglicherweise stürzt das Spiel deswegen ab.

Richtig wäre:

lagerdoor12.activate lagerdrunken1
 
  • Like
Reaktionen: Cadhar