NwN-Editor - Skripting

0
Tipp Ralph Wollner Als bevorzugte Quelle auf Google hinzufügen

NwN-Editor - Skripting Ich möchte in meinem Modul folgende Dinge einbauen, weiß aber nicht, wie die Skripts dafür aussehen müssen.
1. Wie kann ich einen NPC auf einen Stuhl hinsetzen?
2. Wie kann ich zum Beispiel ein Gespräch zwischen zwei NPCs simulieren?

Damit sich ein Charakter hinsetzt, benutzen Sie beispielsweise das folgende Skript bei der Zeile "OnHeartbeat" für Ihre Figur:
void main()
{
object oChair;
oChair = GetNearestObjectByTag ("stuhl_01", OBJECT_SELF);
ActionSit(oChair);
}

Wichtig: Sie müssen dem entsprechenden Stuhl eine genaue Bezeichnung geben, in unserem Fall stuhl_01.

Zur zweiten Frage: Sie können ein solches Gespräch zum Beispiel mithilfe eines Auslösers (Trigger) starten.
Schreiben Sie bei den Eigenschaften des Triggers in der Zeile OnEnter folgendes Skript:

void main()
{
object oG1 = GetNearestObjectByTag("Talker01",OBJECT_SELF, 1);
object oG2 = GetNearestObjectByTag("Talker02",OBJECT_SELF, 1);
object oPC = GetEnteringObject();
if (GetLocalInt(oPC, "npctalk") == 0)
{
AssignCommand(oG1, ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHING, 1.0, 5.0));
AssignCommand(oG2, ActionPlayAnimation(ANIMATION_LOOPING_TALK_LAUGHING, 1.0, 5.0));
DelayCommand(0.5, AssignCommand(oG1, SpeakString("Hast du gehoert, letzte Woche sind hier Goblins aufgetaucht!")));
DelayCommand(4.0, AssignCommand(oG2, SpeakString("Man ist heut aber auch nirgends mehr vor diesen Viechern sicher!")));
DelayCommand(8.0, AssignCommand(oG1, SpeakString("Ganz recht, wird Zeit, dass mal jemand damit aufraeumt!")));
DelayCommand(12.0, AssignCommand(oG2, SpeakString("Da hast du Recht.")));
SetLocalInt(oPC,"npctalk", 1);
}
}

Im Beispiel wurden die NPCs Talker01 und Talker02 bezeichnet! Mit den Animations-Befehlen vollführen die NPCs Bewegungen bei der Unterhaltung. Der Wert 5.0 gibt an, dass die Animation 5 mal gespielt wird. Soll es länger dauern, müssen Sie den Wert entsprechend ändern.

Wie skripte ich folgende Events?
1. Nachdem ich mit einem NPC gesprochen habe, soll er dahinscheiden.
2. Einige NPCs sollen ein Ritual durchführen.
Patrick, per E-Mail

Zu 1. Erstellen Sie eine Gesprächsdatei. Bei der Zeile, mit der der Dialog endet, gehen Sie auf "Erfolgte Aktionen". Dort müssen Sie ein Skript erstellen, das wie folgt aussehen muss:

void main()
{
object oNPC = GetObjectByTag("NPC_Name");
if (GetIsObjectValid(oNPC))
{
effect eDeath = EffectDeath();
ApplyEffectToObject( DURATION_TYPE_INSTANT, eDeath, oNPC);
}
}

Zu 2. Dafür müssen die NPCs mit einem "PlayAnimation"-Skript ausgestattet sein, das z. B. so aussehen kann:

void main()
{
if(IsInConversation(OBJECT_SELF) == FALSE)
{
ActionPlayAnimation
(ANIMATION_LOOPING_WORSHIP,1.0,4000.0);
}
}

Das Skript wird in der Skript-Schaltfläche in den Eigenschaften des NPCs unter "OnHeartbeat" eingesetzt.

Artikel teilen

Per E-Mail versenden

0
  • Print / Abo
    Apps
    PC Games 08/2026 PCGH Magazin 08/2026 play5 08/2026 N-Zone 08/2026 Linux Magazin 08/2026 LinuxUser 08/2026 Raspberry Pi Geek 09/2026
    PC Games PC Games Hardware Linux Magazin Raspberry Pi Geek Computec Kiosk