[Editor1] Zwischensequenzen erstellen

Curom

Schussel-Magier
Registriert
21.07.2000
Beiträge
1.329
Horrido erstmal

Hab da zwei kleine Problemchen.
1. Wie heist der "Benommen" Zauber, Magier Zaubertrick auf englisch?

2: Wei kann man Zwischensequenzen erstellen die automatisch ablaufen ohne das der Spieler sichtbar ist oder eingreifen kann.
 

Knuddel

Knuddelzwerg
Registriert
16.01.2002
Beiträge
268
1. Keine Ahnung.

2. Es gibt da einen netten Befehl "SetCommandable(FALSE)", mit dem man dem Spieler die Kontrolle über seinen Charakter enzieht. So kann er nicht eingreifen... Den Rest scriptet man eben. Also z.B. wenn der Spieler über einen bestimmten Trigger rennt, will ich, das er stehen bleibt und dann ein NPC, der vorher in der Ecke stand auf ihn zugelaufen kommt und ein Gespräch anfängt. Am Ende des Gesprächs bekommt der Spieler die Kontrolle zurück. 2 Scripte, eins für den Trigger (OnEntered) und eins für den NPC (OnUserDefined).

Code:
// OnEntered

void main()
{
object oWhoEntered = GetEnteringObject();
object oNPC = GetObjectByTag("NPC");

if(GetIsPC(oWhoEntered) && GetLocalInt(OBJECT_SELF,"WAS_ALREADY_HERE") == 0)
{
SetLocalInt(OBJECT_SELF,"WAS_ALREADY_HERE",1);
AssignCommand(oWhoEntered,ClearAllActions());
AssignCommand(oWhoEntered,SpeakString("Irgent etwas ist seltsam hier..."));
AssignCommand(oWhoEntered,SpeakString("Wahrscheinlich meine Rechtschreibung..."));
SetCommandable(FALSE,oWhoEntered);
SetLocalObject(oNPC,"PC",oWhoEntered);
SignalEvent(oNPC,EventUserDefined(10001));
}
}

Code:
// OnUserDefined

void main()
{
if(GetUserDefinedEventNumber() == 10001)
{
object oPC = GetLocalObject(OBJECT_SELF,"PC");

ActionForceMoveToObject(oPC);
ActionStartConversation(oPC);
}
}

Am Ende des Gespräches (bei jedem "Gespräch beenden") muß dann noch unter "Andere Aktionen":

Code:
void main()
{
object oPC = GetLocalObject(OBJECT_SELF,"PC");

SetCommandable(TRUE,oPC);
DeleteLocalObject(OBJECT_SELF,"PC");
}

ins Script eigetragen werden. Unsichtbar machen könnte vielleicht gehen, indem man den PC in ein unsichtbares Objekt verwandelt... Habe ich allerdings noch nie versucht.
 

Turjan

Senior Member
Registriert
21.09.2000
Beiträge
7.037
1. Dazed

Gruß
Turjan
 

Curom

Schussel-Magier
Registriert
21.07.2000
Beiträge
1.329
Danke erstmal

Aber Knuddel so meinte ich das nicht. Sondern sowas wie ein Outro also kurz Mein Modul läßt bösen Chars die Möglichkeit etwas zu machen was er auch durchaus schaffen kann nur da er dadurch die Hauptquest gewissermaßen ignoriert wird er früher oder später ein Problem bekommen und dieses möchte ich gern kurz als Zwischensequenz andeuten da der Spieler das Spiel auf diesem Weg abgeschlossen hat. Allerdingngs handelt es sich dabei um eine andere Map und andere Personen d.h der Spieler soll nicht zu sehen sein.
 

Knuddel

Knuddelzwerg
Registriert
16.01.2002
Beiträge
268
Ok. Dein Problem ist gar nicht so anders, öh, eigentlich :rolleyes::D.

Der Auslöser ist eben eher Zeit oder ein bestimmtes Ereignis in der Handlung. Dann hast du das Gebiet in dem die Sequenz spielt. Dort muß der Spieler hin, so oder so (JumpToLocation). Wenn er angekommen ist, spielst du die Szene ab (irgendwie triggern...). Die Kontrolle entziehen geht wie gesagt mit SetCommandable. Das automatische Ablaufen geht ganz gut mit scripten der einzelnen Handlungen und Events, damit jeder weiß, wer wann dran ist. Das Unsichtbarmachen ist sicher das größte Problem. Eine Idee ist das Verwandeln in was unsichtbares, also ein unsichtbares Objekt. Oder, wenn das nicht geht, vielleicht in einen Statisten in der Szene, von dem aus man alles gut im Blick hat (nicht das Wahre, aber besser als nichts), oder einer den Visuellen Effekte, VFX_COM_UNLOAD_MODEL. Ich weiß allerdings nicht, ob der wirklich so geeignet ist, weil der PC langsam verschindet. Oder EffectInvisibility(). Die Zaubersprüche haben alle auch Scripts in denen du nach was suchen kannst (nw_s0_[name]). Es gibt ja ein paar, die das Aussehen verändern.
 
Oben