Oblivion:Packages Window

Aus Skript-Wiki
Wechseln zu: Navigation, Suche

Packages allgemein

Packages ("Pakete") sind Bündel von AI ("KI") Instruktionen und Bedingungen, wann und wie sie ausgeführt werden. Sie werden an einem Actor platziert, indem sie auf die AI Package Liste gezogen werden.

Wenn ein Actor ein neues Package benötigt, wird die Liste von oben aus durchsucht. Das erste Package, das vom Zeitplan und den Bedingungen (conditions) her passt, wird dann ausgeführt.

Die AI Package List erreicht man, in dem man entweder im CS Window im Pulldownmenu "Character" auf "Packages" klickt, oder im Objektfenster einen Doppeklick auf einen Character. Nun öffnet sich das NPC Window (Bei einer Kreatur das Creature-Window). Nun klickt man hier auf den Button "AI" unten links. Ein weiteres Fenster öffnet sich und hier findet man die AI Package List, die alle Bewegungsabläufe für den jeweiligen Actor anzeigt. Will man nun einen neuen Eintrag erstellen, klickt man in die Liste mit rechten Maustaste und wählt "new" aus dem Kontextmenü. Das folgende Fenster erscheint:


Cs-aipackagelist.jpg


  • ID: Feste Bezeichnung für das Package. Dieser Name muss wie immer einzigartig sein.
  • Package Type: Setzt das Basis-Benehmen für das Package. Jeder Typ gibt unterschiedliche Eingabefelder frei.
  • Flags: Eine Anzahl von Eigenschaften, die zu dem erstellten Package zugefügt werden. Einige der Bezeichnungen sind einleuchtend (z.B. "Always Run": Der Actor rennt während dieses Packages).
  • Door Flags: Hiermit kann festgelegt werden, ob alle Türen innerhalb der Zelle, die ein Actor während des Package durchgeht, verschlossen werden oder geöffnet bleiben.
  • Schedule-Reiter: Setzt die Zeit fest, an der ein Package beginnt. Der Zeitrahmen kann nur zu vollen Stunden beginnen. Als ungeschriebene Regel gilt; setze Tag ("day") und Monat ("month") ODER Tag in der Woche ("day of the week"), niemals beides! Die Gründe sollten einleuchten ;)
  • Conditions-Reiter: Eine Liste von Bedingungen, die erfüllt werden müssen, damit das Package gestartet wird. Wird auch nur dann angewendet, wenn der Zeitpunkt richtig ist. "Run on Target" ist nur erlaubt, wenn das Package ein definiertes Ziel hat.
  • Location-Reiter: Definiert die Location, wo das Package läuft. Es wird ausdrücklich empfohlen, hier nur die "Near Reference" Optionen zu wählen. In der "Cell"-Option können ungewollte Verhaltensweisen auftreten. Wenn keine Location gewählt wird, gilt die nähere Umgebung als Standard.
    • Near Reference: Wähle den Bezug aus dem [[ob>ender Window|Render Window]] oder aus der Liste.
    • In Cell: Nicht empfohlen. Kann ungewollte Verhaltensweisen produzieren.
    • Near Current Location: Zentriert die Package-Location dort wo der NPC das Package beginnt.
    • Near Editor Location: Zentriert die Package-Location auf dem Punkt, an dem der NPC standardmäßig gesetzt wird (Erstplatzierung also).
    • Radius: Der Radius des Zentrums vom Package, in der es noch ausgeführt werden darf.
  • Target-Reiter: Einige Package-Typen haben Ziele die unabhängig von der Location sind.
    • Specific Reference: Wähle den Bezug aus dem Render-Fenster oder der Liste
    • Any Object: Wähle eine ObjectID oder eine Klasse von Objekten.
    • Value: Die Zahl dieser Items mit denen das Package interagiert, wenn es ein allgemeines Ziel ist. Es ist die Distanz zum Ziel, wenn es ein spezifisches Ziel ist.


Flags

Flags on Packages

Eine "Flagge auf Pakete" wie es frei übersetzt heißen würde, sind bestimmte Bedingungen, die an ein Package geknüpft sind.


Folgende Flags gibt es:


  • Continue if PC near - Das Package wird nicht beendet (weiterhin abgefragt), so lange der Spieler-Charakter in der Nähe ist. Wird hauptsächlich dafür genutzt, einen Laden geöffnet zu lassen, so lange der Spieler noch drinnen ist, auch wenn das Package schon ausgeführt sein müsste.
  • Must Reach Location - Das Package wird nicht beendet, solange die Standard-Bedingung nicht erfüllt ist.
  • Offers Services - Wenn der Actor irgendwelche Dienstleistungen anbietet, wird er diese so lange anbieten, wie das Package ausgeführt wird. Damit kann man also "Geschäftszeiten" festlegen.
  • Must Complete - Das Package wird nicht beendet bis alle Bedingungen erfüllt sind. Als Beispiel: Ein Ziel muß gefunden werden, ein Standort mit einer Reise bereist sein usw.
  • Once per day - Das Package wird nur einmal am Tage ausgeführt. Ein Tag wird dabei als 24 Stunden-Block ausgeführt und zwar, wenn das Package das erste mal ausgeführt wird. Das ist hilfreich, damit ein Package nicht gleich noch einmal ausgewählt werden kann, sondern erst, wenn eine gewisse Zeit vergangen ist.
  • Skip Fallout Behavior - Der Actor wird keinem Dialog eingehen oder andere Verhaltensweisen des Package. Er wird den Kampf beginnen um sich selber zu verteidigen, aber aus keinem anderen Grund.
  • Always Run - Der Actor rennt während des Package. Einige Packages sind Teil anderer Packages. Als Beispiel: "Wander" kann einen Travel oder einen Dialog beginnen. In manchen Fällen wird der "Always Run" Status nicht in anderen Packages gebraucht - Dialog ist das beste Beispiel. Hierbei wird der Actor also von Punkt zu Punkt laufen, wenn er aber ein Gespäch mit einem anderen NPC anfängt, wird er aufhören zu laufen und zum NP gehen. Das kann aber auch mit dem "ForceRun" Script erzwungen werden.
  • Always Sneak - Der Actor schleicht ständig während des Package. Einige Packages sind Teil anderer Packages. Als Beispiel: "Wander" kann einen Travel oder einen Dialog beginnen. In manchen Fällen wird der "Always Sneak" Status nicht in anderen Packages gebraucht - Dialog ist das beste Beispiel. Hierbei wird der Actor also von Punkt zu Punkt schleichen, wenn er aber ein Gespräch mit einem anderen NPC anfängt, wird er aufhören zu schleichen und zum NPC gehen. Das kann aber auch mit dem "ForceSneak" Script erzwungen werden.
  • Allow Swimming - Der Actor wird nicht schwimmen um einen Standort zu erreichen, es sei denn dieses Flag ist gesetzt.
  • Allow Falls - Der Actor wird nicht irgendwo herunter springen und somit einen Schaden riskieren, solange dieses Flag nicht gesetzt wird.
  • Armor Unequipped - Der Actor wird während der Dauer des Packages seine Rüstung ausziehen (und normale Kleidung anziehen). Sehr nützlich bei Schlaf-Packages für Rüstungs-Charaktere (Wachen zum Beispiel)
  • Weapons Unequipped - Der Actor wird während der Dauer des Packages die Waffe ablegen. Hilfreich für Schlaf-Packages für Bewaffnete Charactere.
  • Defensive Combat - Der Actor wird keinen NPC oder Kreatur angreifen, solange er nicht angegriffen wird. Normalerweise greift ein Actor alle Charactere an, die er hasst, oder weil sie einen Freund angreifen oder seine Sachen stehlen. Dieses Flag schaltet diese Handlung aus. Die Ausnahme besteht bei Begleitung, Eskorte und Folgen-Packages. Für diese drei würde er einem Kampf beitreten, wenn das Ziel angreift.

Tür Flags

  • At package start: Lock/unlock doors - Wenn dieses Package startet, wird der Actor alle Türen in seiner Zelle abschließen oder aufschließen.
  • When at location: Lock/unlock doors - Für die Dauer des Package wird der Actor alle Türen in der Zelle abgeschlossen oder aufgeschlossen lassen. Wenn der Spieler oder ein NPC den Schloss-Status ändert, wird er diesen wieder in den vom Package gewünschten Zustand bringen.
  • At package end: Lock/unlock doors - Wenn das Package endet, wird der Actor alle Türen in der Zelle aufschließen oder abschließen.


Package Typen

Accompany Package (Begleiter-Paket)

Target (Ziel): Wer/was begleitet werden soll. Ein Target ist für ein Accompany-Package nötig.

Location (Ort): Nicht anwendbar. Der Begleitende Actor wird sich immer im Radius seines Ziels bewegen und dann dahin gehen, wohin sein Ziel geht.

Eine Dauer von 0 bedeutet, dass dieses Package nicht endet, bis ein Package von höherer Priorität gestartet werden muss.


Ambush Package (Hinterhalt-Paket)

Location: Actor bewegt sich zum Ort und wartet, dass das Ziel den Radius betritt.

Target: Actor findet dieses Ziel, wenn er den Radius des Location-Reiters betritt. Die Aktion des Actors hängt von anderen Spieleinstellungen ab.

Der Actor reist zum angegebenen Ziel und "aktiviert" es. Die Bedeutung von Aktivieren hängt vom Ziel ab:


Ziel Bedeutung
NPC Mit ihm sprechen oder kämpfen, wenn man ihn nicht mag, kämpft man mit ihm.
Kreatur Greift sie an. Aggression muss > 30 sein, ansonsten wird der NPC nicht angreifen.
Objekt Nimmt es auf.
Container Öffnet ihn.
Stuhl Setzt sich hin.
Tür Öffnet sie. Geht bei Ladetüren durch.

Cast Magic Package (Magie-Casten-Paket)

Der Ort ist dort, wo der Spruch gesprochen werden soll. Wenn der Ort eine Referenz ist und der Spruch ist "Touch" (Berühren) oder "Target" (Ziel), dann ist dies das gewünschte Ziel. Das Ziel des Pakets ist der Spruch, der gesprochen werden soll. Das kann ein bestimmter Spruch sein, der sogar gesprochen wird, wenn er nicht in der Zauberliste geführt wird. Wenn man einen Objekt-Typ zum Casten wählt, wird nur die Spruchliste genutzt.

Location: Ziel des Zaubers (nur gültig beim Sprechen eines Touch- oder Target-Zaubers).

Target: Spruch zum Casten

Eat Package (Ess-Paket)

Location: Wo gesessen werden soll, was ein bestimmter Stuhl in einer Kneipe sein kann oder aber die ganze Zelle einer Stadt-Kneipe. Generell versuchen NPCs, einen Ort zum Sitzen zu finden, wenn sie essen.

Damit ein Actor isst, muss er eine Zutat in seinem Inventar haben, die Ausdauer wiederherstellt. Wenn er/sie kein Essen hat, wird er/sie versuchen, das Objekt durch Kaufen, Töten, Stehlen oder Finden zu erlangen. Kein Actor mit einer responsiblity (Verantwortung) > 30 wird für Essen stehlen oder töten, außer es ist eine Kreatur. Wenn sie kein Essen finden, versetzen sie sich in einen Wander-Status (agieren so, wie beim Wandern) und suchen periodisch nach Essen.

Für Paket-Bedingungen mit aktiviertem "Run on target", wird das Ziel als erste Zutat aus dem Inventar des NPCs genommen, oder der ersten Zutat aus dem ersten Container, auf den der NPC Zugriff hat, wenn er nichts bei sich hat. Wenn der NPC mehrere Ess-Pakete hat, wird jedes das gleiche Ziel haben - ein zweites, drittes und viertes Ess-Paket werden immer noch die erste verfügbare Zutat nehmen. Somit kann man nicht festlegen, welche Zutat ein NPC essen wird.

Escort Package (Eskort-Paket)

Target: wer/was eskortiert werden soll. Ein Eskort-Paket wird dem Target ein Follow-(Folgen-)-Paket hinzufügen, wenn das Ziel ein Actor ist.

Location: das Ziel des Eskort-Pakets. Ein Ort wird benötigt, um ein Eskort-Paket zu erstellen.

Wenn der Folgende eine bestimmte Distanz zurückfällt, stoppt der eskortierende Actor und wartet, führt eine "come along"-Animation aus oder reist zum Actor, um wieder in den Radius zu gelangen. Die Wartedistanz wird durch zwei Spieleinstellungen ermittelt, eine für drinnen und eine für draußen.

Wenn der Spieler eskortiert wird, bekommt er kein Follow-Paket. Auch wird die Wartedistanz im Target-Reiter festgelegt. Es ist empfohlen, dass die Wartedistanz > 400 ist.

Wenn das Ziel ein Objekt ist, was aufgehoben werden kann (wie Essen oder ein Buch), wird der eskortierende Actor sein Inventar nach der angegebenen Menge an Gegenständen durchsuchen. Wenn die Anzahl nicht gefunden wird, wird er das Gebiet (einschließlich Containern) nach dem Gegenstand durchsuchen und diesen aufheben. Bei Verwendung auf diese Art ist der Wert beim Target-Reiter nicht die Warte-Distanz, sondern die Anzahl an Gegenständen, die eskortiert werden sollen. Wenn der/die Gegenstand/Gegenstände im Inventar des Actors sind, wird dieser zur Location reisen und eins der folgenden Dinge tun:

  • Wenn die Location ein Container ist, wird das Objekt im Container abgelegt.
  • Wenn die Location ein Actor ist, wird der eskortierende Actor zum zweiten Actor reisen und den Gegenstand ins Inventar des zweiten Actors geben.
  • In manchen Fällen (wie bei Büchern), wird der Eskortierer den Gegenstand nutzen, wenn er die Location erreicht (z.B. das Buch lesen).
  • Ansonsten wird der Gegenstand fallengelassen, wenn die Location erreicht wird.
  • Escort Item/Drop Item scheint fehlerhaft zu sein, wenn es in Interiors oder auf Essbares angewendet wird. Nutze stattdessen ein Travel-Paket mit einem Skript "OnPackageEnd [ExampleTravelPackage] drop [item]".

Find Package (Finden-Paket)

Location: Optional (wenn nicht angegeben, ist der Default die aktuelle Location). Wenn der Actor die Location erreicht, sucht er (innerhalb des Radius = fAIAcquireObjectDistance) und baut eine Liste an Zielen bis zur angegebenen Anzahl. Dann geht er und aktiviert jeden Gegenstand. Wenn nicht genug Targets gefunden werden, wird innerhalb des Radius der Location für die Dauer des Pakets gesucht.

Target: Reist zum Ziel, bis man in den Target-Radius gelangt, dann wird das Ziel aktiviert. Die Anzahl legt fest, wie viele der Ziele der Actor finden will.

Der Actor reist zum angegebenen Radius der Location, findet das Ziel und "aktiviert" es. Die Bedeutung von Aktivieren hängt vom Ziel ab:

Ziel Bedeutung
NPC Mit ihm sprechen oder kämpfen, wenn man ihn nicht mag, kämpft man mit ihm.
Kreatur Greift sie an.
Objekt Nimmt es auf.
Container Öffnet ihn.
Stuhl Setzt sich hin.
Tür Öffnet sie. Geht bei Ladetüren durch.

Flee Package (Flucht-Paket)

Veranlasst einen Actor an eine Location oder von einem Ziel zu fliehen. Wenn man dem Paket kein Target mitgibt, wird der Actor zur Location fliehen, dort bleiben und die Verstecken-Animation ausführen. Wenn man ein Target angibt, wird der Actor davor wegrennen und die Distanz halten, die in den Target-Daten angegeben ist. Wenn er in der richtigen Distanz zum Target ist, wird er stehenbleiben und sich verstecken. Dieses Paket beendet sich nicht, bis ein neues ausgeführt wird.

Location: Wohin geflohen wird. Wird ignoriert, wenn ein Ziel angegeben ist.

Target: Vor wem oder was geflohen wird. Distance ist die Distanz, die der Actor zum Flucht-Ziel einhalten will.


Follow Package (Folgen-Paket)

Target: Wem oder was man folgt. Ein Target ist für ein Folgen-Paket notwendig.

Location: Das Ziel des Folgenden (eine Location ist nicht erfordlich). Das Folgen endet, wenn das Ziel erreicht wird oder wenn die Dauer (welche höher ist als 0) vorbei ist. Eine Dauer von 0 meint, dass das Paket nicht endet, bis ein Paket höherer Priorität gestartet wird.

Sleep Package (Schlaf-Paket)

Target: Nicht verwendet.

Location: Wo geschlafen wird. Kann so spezifisch wie das dritte Bett links in der Magiergilde oder aber so generell wie Toms Haus sein. Wenn es eine allgemeine Location ist, wird der Actor in jedem Bett schlafen, das keinem anderen NPC gehört (außer, er hat eine niedrige responsibility (Verantwortung) und es nicht belegt ist. Wenn er kein Bett finden kann, wird er sich in den Wander-Status begeben und periodisch nach einem Bett suchen. Während des Schlafens zieht der NPC Rüstung und Waffen aus. Rüstung wird durch normale Kleidung ersetzt.

Beachte, dass es einen Bug bei Bogenschützen gibt, wenn er schläft oder sich in ein Wander-Paket auf dem Weg zum Bett begibt. Wenn der Bogenschütze sich während eines Schlaf-Pakets in den Kampf begibt, scheint er den Bogen zu nutzen, wobei aber die Pfeile nicht ausgerüstet sind! Du wirst sogar den Sound der fliegenden Pfeile hören, aber schau genau hin - keine Pfeile werden dargestellt. Der Bogenschütze ist in diesem Zustand hilflos, weil keine Pfeile abgeschossen werden.

Travel Package (Reise-Paket)

Target: Nicht genutzt.

Location: geht zur angegebenen Location. Wenn die Quest-Bedingungen den Actor dazu zwingen, dieses Paket nochmals zu nutzen, wird er einfach dort rumstehen. Wenn ein Möbel-Objekt wie ein Bett oder ein Stuhl ausgewählt wird, wird sich der Actor hinlegen oder hinsetzen.

Duration (Dauer) = 0: nichts aktiviert: reisen, bis man den Ort erreicht, aber man könnte auf ein höher priorisiertes Paket zurückfallen, bevor man hinkommt. Must complete (muss beendet werden): reisen, bis man den Ort erreicht. Kein anderes Paket wird vor dem Erreichen ausgeführt. Must reach location (muss Ort erreichen): wie must complete, wird aber bei der Location sofort neu ausgewertet, nicht wie beim normal getimten Reeval-Timeout (Auswertungs-Timeout).

Duration > 0: nichts aktiviert: reisen, bis man den Ort erreicht, aber man könnte auf ein höher priorisiertes Paket zurückfallen, bevor man hinkommt. Beim Erreichen des Ortes vor dem Ende der Dauer, bleibt man dort (könnte aber auf ein höher priorisiertes Paket gelangen). Wenn man den Ort nicht vor Ende der Dauer erreicht, wird ein neues Paket ausgewertet. Must complete: reisen, bis der Ort erreicht wird. Wird nicht auf ein anderes Paket fallen, bevor die Location erreicht wird und die Dauer abläuft. Must Reach Location: reisen, bis zum Erreichen der Location. Wird auf kein anderes Paket fallen, bevor die Location erreicht ist. Wenn die Location vor Ende der Dauer erreicht wird, wird, wenn möglich, auf ein höher priorisiertes Paket zurückgegriffen.


UseItemAt Package (NutzeGegenstandBei-Paket)

Target: Der Gegenstand, der genutzt werden soll. Es kann im Inventar des Actors liegen oder irgendwo bei der Location.

Location: die Location, an die gereist werden soll, bevor man versucht, das Ziel zu nutzen.

Wenn die Idle-Animation richtig aufgesetzt ist, wird der Actor die Idle abspielen, die mit dem Gegenstand verknüpft ist.

Beachte: wenn du einen NPC auf einem Stuhl sitzen lassen willst, ohne eine Referenz zu dem Stuhl, musst du Travel nutzen. Mit einem Travel-Package und Location: irgendein Objekt, Möbel, der NPC setzt sich auf einen Stuhl mit der höchsten FormID. UseItemAt klappt hier nicht jedesmal.


Wander Package (Wander-Paket)

Target: nicht verwendet.

Location: geht zur angegebenen Loaction und läuft dort in der Nähe rum, im angegebenen Radius. Der Radius muss > 0 sein. Empfohlen ist ein Radius > 100. Actors in Wander-Paketen versuchen auch, Leute innerhalb ihres sozialen Status' zum Reden zu finden. Wenn ein Actor keinen Dialog anfangen soll, wenn er rumläuft, muss das skipfallout-Verhalten aktiviert sein. Das Energielevel eines Actors bestimmt ebenfalls, wie sehr sich ein Actor beim Wandern bewegt. Wenn sie einen Stuhl in ihrem Radius finden, werden sie sich höchstwahrscheinlich eine Weile hinsetzen.

Offers Services (Bietet Dienste an): wenn der NPC Dienste anbietet, werden sie nicht andere NPCs in Konversationen verwickeln, sondern dem Spieler folgen und versuchen, in Sichtweite zu bleiben. Dieses Verhalten ignoriert den Radius, immer Schleichen und andere Einstellungen.

Duration = 0: Nichts aktiviert: rumwandern, bis etwas höher priorisiertes ausgewertet wird. Must complete (muss vollständig sein): bedeutungslos. Must reach location (muss Location erreichen): wird auf kein anderes Paket fallen, bis die Location erreicht ist. Bei der Location wird herumgelaufen, bis etwas höher priorisiertes eintritt.

Duration > 0: Nichts aktiviert: laufe zur Location, bis die Dauer ausläuft, solange nichts höher priorisiertes eintritt. Must complete: wandere zur Location, bis die Dauer ausläuft. Wird kein anderes Paket ausführen, bis die Location erreicht ist UND die Dauer ausläuft. Must Reach Location: wird kein anderes Paket ausführen, bis die Location erreicht ist. Bei der Location wird herumgewandert, bis etwas höher priorisiertes eintritt.

Zusätzliche Bemerkungen:

  • damit der NPC nicht in Mauern rennt, musst du zuerst einen "Priority"-Path erstellen. Dafür klicke auf den "Path mode"-Button und während du dann STRG und ALT drückst, lege den Pfad, dem der NPC folgen soll.
  • Die Zeit, die der Actor im Idle während eines Wander-Pakets verbringt, wird zumindest teilweise durch die Spieleinstellungen fAIMaxWanderTime und fAIEngergyLevelMult kontrolliert.