Zu deinen ersten Problem:
Willkommen im Club, genau das war auch mein erstes Script:
Du benötigst einfach einen Schalter mit einer einzigartigen ID und ein Wandstück, ebenfalls mit einer einzigartigen ID.
Du mußt mit
if ( "ID_Schalter"->onactivate == 1 )
überwachen wann der Schalter activiert wird, sollte das geschehen wird eine Variable (status) höher gesetzt, die bewirkt, daß das Wandstück mittels Movez in die höhe fährt. Damit das ganze im zuge einer fließenden Bewegung geschieht sollte das ganze über einen Timer laufen. Also so in die richtung:
if (status == 1)
.."ID_Wand"->movez 100
..set timer to ( timer + GetSecondsPassed )
..if ( timer >= 2.0 )
....set status to 2
....set timer to 0.0
..endif
endif
Mit den genauen Werten für den Timer und die Z-Bewegung mußt du herumspielen: Je größer der Timer desto langsamer und desto kleiner der Z-Wert und umgekehrt.
Dann brauchst du noch einen weiteren Timer-Durchlauf der den Status nach einer gewissen Zeit, in der die Türe offen steht, auf einen neuen Wert setzt und damit das Schließen auslöst. Wenn die Türe wieder geschlossen ist, sollte der Status wieder auf 0 zurück gesetzt werden damit alles von vorne beginnen kann.
Noch einige Anmerkungen:
Aufgrund der Timer bewegen sich die Teile nie um einen bestimmten Betrag sondern innerhalb eines Bereiches, deswegen kann es nach mehrmaligen Öffnen sein das die Wand "daneben" steht. Das läßt sich leicht beheben, indem du die Wand immer wieder auf die Ausgangsposition zurück setzt, wenn der Status 0 erreicht ist.
Der Timer ist eine Gleitkommavariable, also nicht short, sondern float.
Wärend das Script seine arbeit verrichtet sollte es nicht möglich sein den Schalter zu aktivieren, weil dieser dann den Status wieder verändert, deswegen sollte der Schalter nur aktivierbar sein, wenn der Status 0 ist.
Achja, und über dem Bereich in dem die Wand hochfährt sollte auch genug Platz sein, wäre doch blöd, wenn die Wand oben im Zimmer Raus kommt.
Zu deinem zweiten Problem:
Dafür brauchst du kein Script, mach es einfach über das Result-Feld des Dialog-Fensters. Bei dem Thema, bei dem der Kampf beginnen soll fügst du einfach im Result-Fenster folgendes ein:
SetFight 100
StartCombat Player
Goodbye
Damit beendet der NPC das Gespräch und greift den PC sofort an.
__________________
Die Dummheit der Menschen und das Weltall sind unendlich, wobei ich mir beim Weltall noch nicht sicher bin.
Albert Einstein
Wenn die Klügeren nachgeben, regiert Dummheit die Welt.
Marie von Ebner-Eschenbach
Dieser Beitrag wurde von Hephaistos am 29.10.2003, 16:04 Uhr editiert.
|