Construction Set Skriptthread zum Construction Set

Code:
SCN ...

Begin GameMode

if(getstage <quest> == <stage>)
  if(getDayofWeek == 1)
   if(gamehour >= 0 && gamehour <= 1)
      if(getdisabled)
           enable
      endif
   else
     if(getdisabled == 0)
          disable
     endif
   endif
  else
   if(getdisabled == 0)
      disable
   endif
  endif
endif

End

Begin OnActivate

if(isactionref player)
   setstage <quest> <stage>
endif

End

So kann man es machen, wenn die Quest-Stage beim Aufnehmen der Waffe geändert wird.
 
  • Like
Reaktionen: Arielle 1000
Gibt es eine Möglichkeit einen NPC an einen Punkt gehen zu lassen, ohne die AI zu nutzen?

In etwa so:
Code:
<RefID>.GoToPos <Cell> <x> <y>

Die AI kann (oder sollte) ich dabei nicht nutzen, da das Ziel möglichst dynamisch gesetzt werden soll.
Wichtig ist auch das Gehen! Es soll die Animation abgespielt werden, ansonsten könnte ich ja MoveTo nutzen.
 
Ich denke, das musst du schon über ein AI-Package machen.
Aber es hindert dich doch niemand daran, dass Ziel zu bewegen ;), sonst währe follow ja vollkommen sinnlos...
 
  • Like
Reaktionen: 1 Person
Das wäre tatsächlich eine Möglichkeit. Aber wie sieht es dann mit anderen Ai-Paketen aus?
Der NPC soll dynamisch Infos erhalten - wie und wieso ich das mache ist vorläufig irrelevant.

Möglicher Ablauf:

  1. NPC soll sich in Zelle A an die Koordinaten x,y bewegen. Das geht evtl. über das Follow-Paket, aber da müsste ich einen Marker skripten, der den ganzen Weg im Script hat. Oder kann ich den Marker ans Ziel porten und der NPC folgt dann auf normalem Wege?
  2. Währenddessen ändert sich die Info: Plötzlich soll er gegen einen Gegner kämpfen! (Bewegung aus 1 abbrechen, Kamp über StartCombat starten.
Das Problem ist eigentlich die Dynamik. Der NPC soll nach Möglichkeit alle verfügbaren Ai-Pakete (Wandern, Folgen, Nutzen, ...) nutzen können, zu jeder Zeit. Auch sollen sie nicht einfach starten!
Der NPC soll warten, bis er seinen Input bekommt. Dann soll er das entsprechende Paket ausführen, bis ein erneuter Input kommt. Nach dem neuen Input soll das Paket angepasst (sprich gleiches Paket aber anderes Ziel) oder ersetzt werden (z.B. Wechsel von Wandern auf Nutzen).
 
zu 1: genau darum geht es beim follow-Package; der NPC läuft entlang des Pathgrids zu seinem Ziel. (also wenn es um einen eigenen Ort geht auf keine Fall die Grids vergessen!)

Zum Rest kann ich nicht viel sagen, weil ich noch nie an AI-Sachen rumgefummelt habe^^
Es gibt aber Befehle zum starten und beenden von Packages.
 
  • Like
Reaktionen: 1 Person
Danke für die beiden Links. Irgendwie muss ich die übersehen haben.
Klar, dann definiert ich ein paar Dummy-Pakete und der NPC bleibt vorläufig dumm.
Wenn nötig erhält er eines meiner Pakete. Dieses kann ich ja mit SetScriptPackageData (oder so ähnlich - *Link nochmal suchen geh*) anpassen.
 
Hallo! Ich bräuchte auch mal wieder eure Hilfe..

Diesmal geht es um folgendes:

Der Spieler betritt ein Dorf. Sofort soll ein NPc (Mit dem ref-Namen: Beorn) auf ihn zugerannt kommen, und ihn mit einer neuen Begrüßung ansprechen. Die Texte sind bereits geschrieben - Jetzt müssten wir das ganze also so einstellen, dass der NPC sich dem Spieler nähert, ihn mit einer besonderen Begrüßung anspricht, und dann ein neues Topic erscheint. Dieses kann ausgwählt werden, der NPC erklärt dem Spieler, dass er ihm folgen solle, und "beendet" das Gespräch.

Nun setzt sich unser NPC in Bewegung (Wie genau funktioniert das eingentlich? :/), läuft (gefolgt vom Spieler) ein wenig durch die Landschaft, betritt schließlich ein Haus, setzt sich auf einen Stuhl, und fordert den Spieler auf, sich ebenfalls zu setzen.
Wenn dieser das tut, soll der NPC den Spieler erneut ansprechen - Ihm weitere Informationen geben. Nachdem der Spieler sich durch die Topcis geklickt hat, bekommt er von Beorn die Aufgabe, das Dorf zu verlassen, und eine bestimmte Person aufzusuchen.
Falls der Spieler ihn nocheinmal anspricht, soll er ihn nun mit einer Begrüßung ansprechen, die ihm klar macht, dass er nun den anderen NPC zu suchen habe, und das Gespräch dann wieder beendet.

Ist das vielleicht schon zu viel für den Skriptthread, oder schneidet es zu viele andere Themenbereiche an?

Ich hoffe allenfalls auf Hilfe. ;)

Mit freundlichen Grüßen,

MadHatter :)
 
Zuletzt bearbeitet:
Sofort soll ein NPc (Mit dem ref-Namen: Beorn) auf ihn zugerannt kommen,
AI-Package Find oder Follow
und ihn mit einer neuen Begrüßung ansprechen.
startconversation player, Topic
dass er ihm folgen solle,
AI-Package Escort
setzt sich auf einen Stuhl,
StuhlREF.activate
und fordert den Spieler auf, sich ebenfalls zu setzen.
sayto player, topic, 1 (die 1 steht für erzwungenen Untertitel, sonst weglassen)
Wenn dieser das tut, soll der NPC den Spieler erneut ansprechen
nochmal startconversion player, anderes topic (dieses mal im Script des Stuhls (On activate)
 
  • Like
Reaktionen: MadHatter16
Hallo Freunde, ich hätte mal wieder eine Frage.

ein Teleporter, ich meine diese Ayleiden-Teleport-Tore, soll, nachdem er den Player an einen neuen Ort teleportiert hat, seine Funktion verlieren. Er soll praktisch nicht mehr teleportieren können. Wie stelle ich das an?
 
Du stellst genau an den Ort des Teleporters einen zweiten, identisch ausehenden Teleporter ohne Funktionalität. Diesen machst du dann noch "initially disabled". (Das machst du für beide "Seiten". In den OnActivate-Block des Teleporters nach dessen Nutzung nichts mehr gehen soll (wenn beide kannst du das Script ja auf beiden laufen lassen), schreibst du "REF_mitFunktion.disable" und "REF_ohneFunktion.enable" (auch das für beide Seiten)
 
Das ist eine gute Idee, Schmelz. So könnte ich das machen.
Ich weiß allerdings nicht, was du mit dem "onActivateBlock" meinst. Der Teleporter hat kein Skript, ist ja eine "Door" und hat Doormarker.
 
Klar, da ist ein Feld für ein Skript. Ich hab aber keines drin, ist auch nicht nötig.
Dein Vorschlag wird doch bestimmt auch ohne Skript gehen, wenn ich einfach, wie du schon gesagt hast, ein zweites Tor platziere und beide Türen zur entsprechenden Stage enable/disable.
 
Ich weiß jetzt zwar nicht, welche Art Portal Du meinst, aber wenn es eine Door ist, dann reicht ein Skript darauf aus:

Code:
SCN ...

Short i

Begin OnActivate

if(i == 0)
  set i to 1
  activate
 return
endif

End
 
@Arielle: natürlich, dann muss es in irgendein Result-Script, aber da du gesagt hast, es würde am einmaligen benutzen hängen...

@Kahmul: Bei meiner Methode spart man sich die Abfrage.
 
@Kahmul: Bei meiner Methode spart man sich die Abfrage.

Kommt mir gerade ein bisschen kindisch vor, dass Du Dich so rechtfertigst, aber ich finde, schnell ein kurzes Skript zu schreiben (was dann ggf. universell genutzt werden kann, wenn mehrere Teleporter zum Einsatz kommen) ist wesentlich schneller, als mehrere Teleporter zu platzieren und diese dann zu enablen bzw. disablen.
 
Also, es ist ein OblivionMagicGate, hab gerade nochmal nachgeschaut.(hab mich vertan, kein AyleidenTor)

Selbstverständlich kann ich das auch verskripten, aber was ist im Endeffekt einfacher?
 
Du musst dich entscheiden zwischen weinger Script, oder weniger Referenzen.

@Kahmul: Tut mir leid, das sollte nicht so rüberkommen!
 
Dann lasst uns das jetzt mal ganz professionell machen, dazu müsst ihr mir aber helfen, wird ein wenig umfangreich....

Story:
Der Player durchschreitet das Magic-Tor und kommt auf der anderen Seite an. Dann soll es einen lauten Knall geben, das Tor ist danach kaputt.


Ausführung:
Unmittelbar vor dem Magic-Tor werde ich einen Trigger platzieren, der eine Stage auslöst, sobald der Player ihn betritt. In diesem Triggerskript muss auch der Knall drin sein und die Message, die ich mir noch ausdenken werde.
Aktiviert der Player anschließend das Magic-Tor, erscheint die Message, dass es defekt ist.

Ist diese Idee ausführbar? Wie würdet ihr das machen? Und wie würden die Skripte aussehen?