Construction Set Kürzere Tagesabläufe

Fellan

Freund des Hauses
Fragen zu den Tagesabläufen

Ich will für eine Mod einige NPCs (um die 10) mit umfangreichen Tagesabläufen erstellen. Da finde ich es aber ein bisschen knapp, die Dauer von Sachen immer nur auf eine Stunde reduzieren zu können. Gibt es eine Möglichkeit, dass der NPC bestimmte Dinge im Tagesablauf nur für eine halbe Stunde, 10 Minuten o.ä. macht statt für eine ganze Stunde? Wer fegt schon seine kleine Kammer eine Stunde lang?

Wenn ich meinem NPC für eine bestimmte Zeit ein Wander-Package verpasse, er also in einem bestimmten Radius herumlaufen soll, woher weiß ich, was z.B. ein Radius von 500 ist? Was ist ein Radius von 10, 1'000 usw? Was entspricht dieser Wert? Oder kann ich den Radius einfach auf 10'000 stellen, damit er durch eine gesamte Cell hin und her wandert? Wie kann ich einstellen, dass der NPC keine Türen benutzt, obwohl er den Schlüssel dazu hat bzw. diese nicht abgeschlossen sind? Wie kann ich dieses Wandern auf 2 oder mehr Cells ausweiten?

Wie kann ich einen NPC dazu bringen, gegen einen Boxsack (Nebensache: Was hat der Boxsack aus der Arena für eine ID?) oder eine Trainingspuppe schlagen zu lassen oder mit Pfeil und Bogen auf ein bestimmtes Ziel schießen zu lassen? Was für einen Befehl brauche ich dafür?

Wie lasse ich einen NPC fegen, harken, wasauchimmer? Wenn ich "Use Item At" verwende und dem NPC meinetwegen einen Besen ins Inventar gebe, fegt er zwar, aber immer nur an ein und der selben Stelle. Er soll in einem bestimmten Radius herumwandern, wobei wir wieder beim gleichen Problem wären, wie ich den Radius bestimmen kann, da der fegende NPC in seinem Bereich fegen soll, nirgends anders. Der Bereich ist eigentlich nicht von den anderen abgegrenzt, ist ja alles eine Cell.


edit: Eine Frage habe ich noch, die nichts mit Tagesablauf zu tun hat: Um einen Container dem Spieler zugehörig zu machen, so dass die darin abgelegten Gegenstände nicht nach ein paar Tagen wieder verschwinden, reicht es da, den "Owner" als "Player" zu setzen oder braucht es da mehr?

edit²: Was muss ich beim Tagesablauf machen, damit der NPC irgendwelches Alchemiekram macht, Tränke braut etc., gibt es dafür überhaupt Animationen im Spiel?
 
Zuletzt bearbeitet:
also, die meisten fragen kannst du beantworten wenn du einfach mal vergleichbare dinge anguckst....Soll heißen du guckst mal bei sinderion und suchst was was nach deiner alchemieanimation aussieht.....soll heißen du gehst mal in die arena und guckst dir den ork an und suchst was der für eine animation hat und für ein package das ihn auf die trainingswand einschlagen lässt.

zum Radius, ja das würde mich auch interessieren, weil ich nicht gluabe das es der radius wie z.B. vom Landscapeediting ist, sondern einen anderen Massstab hat.

zum Eigentümer, ja ich glaube das reicht, probier es doch einfach, wirst doch wohl ne karotte erübrigen können^^


MfG heledir

Wann macht mal endlich jemand dazu ein Tutorial...^^
 
Der Boxsack hat die ID ArenaHeavyBag01 (00159450). Am besten man Erstellt sich ein neues Containerobjekt, Respawn ausschalten und Fertig. Wenn man Änderungen an der Basis von bestehenden Objekten durchführt wirkt sich das aufs gesamte Spiel aus. In der Ai kleiner als ne Stunde ist wohl nicht drin.
 
Zuletzt bearbeitet:
hmmm naja das mit den anderen Npcs is ja net soo einfach,... ich wollte vor einiger zeit das ein Npc bei mir mit einen buch interagiert, also es nimmt, und sich dann auf eine bank setzt, und es liest.

Was daraus wurde: der Npc wanderte vor dem Stuhl rum, und guckte das buch noch net mals annähernd an,..... zum vergleich habe ich das Script von Raminus Polus genommen (Magierschule/ Geheime Universität) und gebracht hat es mir eigentlich nichts,... habe dann anch dem 20en versuch aufgegeben,... weil es einfach net funzen wollte.
 
Ich will für eine Mod einige NPCs (um die 10) mit umfangreichen Tagesabläufen erstellen.
Viel Spaß. Die Abarbeitung der Tagesabläufe ist in Oblivion nämlich - um das mal zurückhaltend auszudrücken - "nicht so gut" und dazu im Detaill ziemlich schwer zu durchschauen. Dazu kommt, dass die Packages nicht geeignet sind, NPC zu wirklich *exakten* Zeitpunken irgend etwas tun zu lassen. Das gilt ganz besonders, wenn die jeweilige Zelle, in der sich der NPC befindet, nicht geladen ist oder das Package von weiteren Bedingungen abhängt, als von Uhrzeit und Dauer.

Da finde ich es aber ein bisschen knapp, die Dauer von Sachen immer nur auf eine Stunde reduzieren zu können. Gibt es eine Möglichkeit, dass der NPC bestimmte Dinge im Tagesablauf nur für eine halbe Stunde, 10 Minuten o.ä. macht statt für eine ganze Stunde?
Die Laufzeit eines Paketes beginnt an der Stelle, wo der NPC sich befindet, wenn er das Paket startet. Wenn der NPC also ein Paket von einer Stunde Dauer InGame-Zeit hat, aber für den Weg zum Zielort (da wo er fegen, malen oder sonstwas tun soll) bereits 20 Sekunden Realzeit braucht, sind schon 2/3 der gesamten Paketzeit abgelaufen. Unter diesem Gesichtspunkt, macht es also keinen Sinn, Pakete von unter einer Stunde InGame-Zeit zu erstellen.

Du kannst aber abweichende Zeitabläufe über ein Script festlegen, was dann auf dem NPC rennen sollte. Fragst also GetCurrentTime ab und setzt per Script Bedingungen, auf die das jeweils gewünschte Paket matcht. Du könntest globale Variablen definieren oder ein QuestScript machen, was nur Variablen halten soll, aber ansonsten nichts tut. Diese Variablen veränderst Du dann per Script und die Werte benutzt Du als Bedingungen für deine Packages. Du kannst auch eine Faction anlegen, den Rang des NPC per Script verändern und diese Ränge als Condition für die Packages benutzen. Das ganze ist aber sehr unzuverlässig bzw. unvorhersehbar, weil eine starke Abhängigkeit vom Speicherinhalt des Spielers besteht.

Wenn ich meinem NPC für eine bestimmte Zeit ein Wander-Package verpasse, er also in einem bestimmten Radius herumlaufen soll, woher weiß ich, was z.B. ein Radius von 500 ist?
Schau dir die Schrittweiten unter snap to grid bei den Grundeinstellungen des Editors an.
Was ist ein Radius von 10, 1'000 usw? Was entspricht dieser Wert?
Das sind GameUnits. 4096 units auf der X, Y oder Z Achse entsprechen knapp 60 Metern. Im Grunde nicht relevant, aber interessant, wenn man Dimensionen in Bezug zur Körpergröße setzen will.
Oder kann ich den Radius einfach auf 10'000 stellen, damit er durch eine gesamte Cell hin und her wandert?
Ja und Nein. Bestimmte Packages - z.B. Find - haben eine begrenzte Reichweite. Das heisst, dass der NPC keine Objekte auswählen wird, die sich ausserhalb eines bestimmten Radius befinden.

Wie lasse ich einen NPC fegen, harken, wasauchimmer? Wenn ich "Use Item At" verwende und dem NPC meinetwegen einen Besen ins Inventar gebe, fegt er zwar, aber immer nur an ein und der selben Stelle.
Die Stelle ist von der Location und vom Radius abhängig. Wenn der NPC am Anfang des Paketes eine Stelle ausgewählt hat, bleibt die für die gesamte Laufzeit gültig. Es sei denn, er wird durch eine andere Prozedur unterbrochen. In dem Fall bleibt zwar das Paket gültig, aber es wird eine Zwischenprozedur abgearbeitet (z.B. Paket Wander wird durch Prozedur Combat unterbrochen). Danach kann der NPC eine neue Stelle auswählen, wenn die Einstellungen des Paketes das zulassen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Fellan
Danke für die Hilfe. Habe jetzt noch eine Frage, dann habe ich das ganze, denke ich, zumindest in groben Zügen verstanden:

Mein NPC hat mittlerweile einen kompletten Tagesablauf, der für ihn einen normalen Tag regeln soll. Einen normalen Tag heißt, das, was jetzt in seinem Tagesablauf steht, soll er immer machen, wenn er nichts anderes zu tun hat.
Und das ist der springende Punkt. Wenn ich meinen "Standard-Tagesablauf", also dass, was er normalerweise tun sollte, habe und dann noch einen Eintrag hinzufügen, meinetwegen Einkaufen an bestimmten Wochentagen oder zur Kirche gehen am Sonntag um 10. Überschreibt dann immer das letzte am jeweiligen Tag den "Standard-Tagesablauf"?

Also überschreibt der letzte Eintrag, der sagt "Sonntags um 10 Uhr Kirche" den Eintrag davor, indem steht "jeden Tag um 10 Uhr essen"? Der "10 Uhr essen"-Eintrag ist für jeden Tag, jeden Monat und jedes Datum geregelt, nur eine Uhrzeit ist eingetragen, der "Sonntags um 10 Uhr Kirche" ist halt auf "immer Sonntags" begrenzt. Welcher Eintrag wird bei sowas berücksichtigt?


edit: Noch eine Sache: Wenn der NPC bei "Wander" oder "Use Item At" durch eine bestimmte Cell geht, die aber abgeschlossen ist, der NPC aber den Schlüssel hat, schließt er die Tür automatisch auf oder nimmt er dann den Weg, auf dem keine abgeschlossene Tür liegt?
 
Überschreibt dann immer das letzte am jeweiligen Tag den "Standard-Tagesablauf"?
Ich benutze zwar keine überlappenden Pakete, aber ich vermute, dass Pakete, die weiter oben in der Liste stehen, die höhere Prio haben, wenn sie ansonsten gleichrangig sind.

Auserdem denke ich, dass Anytime-Pakete grundsätzlich von Paketen mit definierten Zeiten überschrieben werden. Ein Paket mit der Anweisung "Sonntags" um 10 Uhr für 4 Stunden etwas zu tun, sollte Vorrang vor der Anweisung haben, "jeden Tag" ab 10 Uhr für 4 Stunden etwas zu tun.

Wenn der NPC bei "Wander" oder "Use Item At" durch eine bestimmte Cell geht, die aber abgeschlossen ist, der NPC aber den Schlüssel hat, schließt er die Tür automatisch auf oder nimmt er dann den Weg, auf dem keine abgeschlossene Tür liegt?
NPC betrachten Türen nicht als verschlossen, wenn sie ihrer Faction gehören und sie den erforderlichen Rang haben, oder wenn sie einen Schlüssel besitzen. Wenn es mehrere Zugänge gibt, wird das Pathfinding also eher von der Entfernung bzw. der Priorität des Pfades abhängen, als davon, ob die Türe für den Player verschlossen ist.
 
  • Like
Reaktionen: Fellan
zu den reichweiten:

im mw cs hatte ich mir da immer ligths gebaut mti dem entsprechendem radius, dann angeschaltet das man den radius von den lichtern angezegit bekommt und schon siehst du wieweit das geht...
 
@Cadhar: Gute Idee, werde das auch mal so machen. Das Problem mit dem Radius hat sich aber im Grunde erledigt, weil es ja den Befehl gibt, dass ein NPC in der ganzen Cell fegen, herumlaufen, wasauchimmer soll.
 
Ich will, dass mein NPC bis zum Abschluss einer bestimmten Quest an ein und dem selben Ort stehenbleibt. Sobald die Quest abgeschlossen ist, soll er seinem normalen, bereits erstellen Tagesablauf nachgehen. Wie regle ich das? Per Script, Result Script im Dialog, in der Stage oder als Condition sämtlicher Tagesabläufe (sowas wie "GetStage QuestID QuestStage" bei jedem Eintrag im Tagesablauf)?
 
Ich will, dass mein NPC bis zum Abschluss einer bestimmten Quest an ein und dem selben Ort stehenbleibt.
Ich würde das Paket, mit dem Du den NPC an der Stelle festtackern willst, ganz nach oben in die Liste schieben und als Condition

GetQuestRunning QuestID == 1
AND
GetStage QuestID < x

setzen. Dann sollte er, sobald die Quest rennt, zu dem Ort gehen und da bleiben, bis entweder Stage x erreicht oder die Quest beendet ist. Die anderen Pakete würde ich erst mal davon unberührt lassen und sehen, ob das so klappt. Da die Frage nach den Prioritäten immer noch ein kleines Mysterium ist, kommt´s auf einen Versuch an ;)