World of Gothic Archiv > NWN-Hilfe
Nach dem Gespräch
Seite 1 von 1  1 
10.09.2002, 10:26 #1
Vuje
Beiträge: 14
Nach dem Gespräch
Ich möchte gerne, daß eine Kreatur nach unserem Dialog verschwindet. Nur wie muss da gescripted werden, bzw. was oder wo?
Entweder soll sie zum Ausgang gehen, oder einfach "verblassen".

vuje
10.09.2002, 13:04 #2
The King
Beiträge: 100

Das ist leicht:

Zuerst musst du einen WP mit dem kennzeicehn Ausgang bei einer Tür oder am ende es Moduls machen dann gehst du zum gesrächseditor:
beim letzten Satz des NPC das hier bei erfolge aktionen eingeben:


object wp = GetWayPointByTag("Ausgang");

void main()
{
ActionmoveToObject(wp);
ActionDoCommand(DestroyObject(OBJECT_SELF)
}
10.09.2002, 13:13 #3
Vuje
Beiträge: 14

Wollte ich grade ausprobieren, aber er kann es schon gar nicht kompillieren. Und zwar scheint die erste Zeile (object wp....) einen fehler zu haben. FEHLER: VERARBEITUNG DER VARIABLENLISTE <-- fehlermeldung.

Tja, ansonsten hört sich das schon alle verständlich an.
Trotzdem danke

vuje
10.09.2002, 13:22 #4
The King
Beiträge: 100

OK da war ein Fehler drinn:
object wp = GetWaypointByTag("Ausgang"); -weis nicht was da der unterschied ist zwischen alt und neu
10.09.2002, 13:23 #5
The King
Beiträge: 100

object wp = GetWaypointByTag("Ausgang");

void main()
{
ActionMoveToObject(wp);
ActionDoCommand(DestroyObject(OBJECT_SELF));
}

Beim oberigen sind noch ein paar andere Fehler die ich hier korrigiert habe!
10.09.2002, 14:40 #6
Vuje
Beiträge: 14

WUNDERBAR

hat jetzt alles geklappt. Wüßte auch nicht warum die erste Zeile vorhin nicht ging...komisch.

ein großes DANKE erstmal.

Habe aber eine neue Frage. Wie muss das script denn aussehen, wenn der Gesprächspartner sterben soll danach? Geht das auch so einfach oder braucht man dafür schon mehr?

vuje
10.09.2002, 15:08 #7
Rhaegar
Beiträge: 296

Das Problem vorhin war dass es Waypoint heissen muss nicht WayPoint, Groß- und Kleinschreibung macht eben doch einen Unterschied ;) !

Zum Ableben des NPC:

code\:

void main()
{effect eDeath=EffectDeath();//wenn du EffectDeath(TRUE) nimmst stirbt er besonders spektakulaer
//(zumindest in der englischen Version)
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eDeath,OBJECT_SELF);
}




___________________________

Verliebt in den UserDefined Event ^^
Überzeugter Episode 2 Hasser[/font]
10.09.2002, 15:52 #8
Vuje
Beiträge: 14

Vielen Dank.
Es klappt mit dem Sterben...Ich habe vorweg noch zeile eingefügt die beim scripteggehen&verschwinden gut geklappt hat.
und zwar habe ich ActionWait(); benutzt. Doch leider scheint sie beim Sterbescript nicht sichtbar zu wirken...
mach ich da was falsch, sollte ich etwa den DELAY benutzen?

vuje
10.09.2002, 15:54 #9
Vuje
Beiträge: 14

oh...wusste nicht, daß " : w " diesen smiley erzeugt....benutz halt nicht viele smileys. Also, es soll "script: weggehen&verschwinden" bedeuten...so long

vuje
10.09.2002, 23:33 #10
Rhaegar
Beiträge: 296

ApplyEffectToObject ist keine Action, das ist das Problem!

Zu den Actions
Bei ActionMoveToObject passiert folgendes:
Der Actionbefehl wird ausgefuehrt sobald das Skript an der Stelle angekommen ist. Die Action selbst also das bewegen landet aber erst auf der ActionQueue einer Art ToDo-List, die nach und nach abgearbeitet wird.

Bei nicht-action Befehlen wird das was der Befehl bewirkt sofort ausgefuehrt ohne umwege.

Beispiel:
code\:

ActionMoveToObject...
ActionSpeakstring...
ApplyEffecttoObject...
ActionMoveToObject...

wird wie folgt abgearbeitet:

1.)ActionMoveToObject wird ausgefuehrt und infolgedessen landet der Move-Befehl auf der Queue(englisch: Schlange)
2.)ActionSpeakstring wird ausgefuehrt und der SpeakString-Befehl kommt auf die Queue
3.)ApplyEffect.. wird ausgefuehrt und bewirkt keine Aenderung auf der Queue sondern hat sofortige Auswirkungen!
4.)siehe 1.)
5.) Wenn das Skript durch ist wird erst die Queue abgearbeitet!

Also: 1.)MoveTo. Erst wenn der fertig ist kommt:
2.)Speak.Erst wenn das durch ist kommt:
3.)Move To.

Deswegen nuetzt das ActionWait nichts, weil das nur Befehle in der ActionQueue verzoegert. Das ApplyEffect ist aber schon laengst fertig, bevor ueberhaupt die Queue startet...

Abhilfe: Das ApplyEffect in ein Delaycommand einbauen, oder am Besten in ein ActionDoCommand(...)!

Dann wird naemlich der ApplyEffect-Befehl auf die Queue gelegt und wie eine Action an der richtigen Stelle ausgefuehrt!

(Problem: ActionDoCommand funtzt nicht mit allen Befehlen, probier's einfach mal aus , ob es mit ApplyEffect funtzt...)


___________________________

Verliebt in den UserDefined Event ^^
Überzeugter Episode 2 Hasser[/font]
Seite 1 von 1  1