Construction Set Der Scriptthread

Moin, ich hab auch ne Scriptfrage:
Ich brauch ein script, das den Spieler in den Himmel über Balmora teleportiert, genauer über den Platz vor dem Hlaalu-Ratshaus.
Das Script soll auf ne Editorbox, so wie in Gramfeste, sodass, wenn der spieler auf die box fällt, er nach balmora teleortiert wird, und dann runterfällt ^^
Danke schon ma :)
mfg erc
 
Guten Tag,

ich will ja nicht dummschwätzen, aber es sollte mit diesem Befehl gehen:

Code:
coe, X, Y

Und das der Spieler die Box berührt...meinst du Activate oder nur wenn er nur irgendwie draufsteht. Activate ist leicht, das andere weiss ich gerade nicht.

Bedien dich doch am Scriptingtutorial von Killfetzer.
 
coe (oder CenterOnExterior) bringt ihn aber nur auf Bodennähe.
Er soll aber ÜBER Balmora erscheinen.
Und ja, ich meine berühren, nicht aktivieren.
mfg erc
 
Der Befehl lautet Player->Position, -24845 -12688 2000 270
Die vorletzte Zahl, die ich einfach mal 2000 genannt habe, bestimmt, aus welcher Höhe du herabfällst. Das sollte man schon genau testen, sonst fällt man nur einmal. ;)

Das Script müsste dann in etwa so aussehen (entnommen aus dem Tribunalscript 'ExitBlockMessage'):

begin SturzScript

short notified

if ( GetCollidingPC == 1 )
if ( notified == 0 )
set notified to 1
Player->Position, -24845 -12688 2000 270
endif
else
set notified to 0
endif

end
 
Zuletzt bearbeitet:
Also, bisher gab es ja keine wirklich hilfreichen Tipps hier.
So in etwa müsste das Script aussehen:

begin my_editorbox_script

if ( GetStandingPC == 1 )
Player->PositionCell xpos ypos zpos zrot "Zellenname"
endif

end


In dem Fall musst du für Zellenname natürlich Balmora einsetzen.
 
@Teridan: Der GetCollidingPC liefert nur eine 1, wenn der Spieler seitlich oder von unten mit dem Objekt kollidiert. Wenn man von oben auf ein Objekt fällt, muss man GetStandingPC benutzen.
Der Position-Befehl funktioniert nur, wenn sich der Editorblock höchstens 2 Zellen neben dem Ziel befindet, sonst gibt es Fehler beim Laden der Zelle.
 
Jetzt wo du es sagst... ;) Ich weiß doch weniger, als ich dachte zu wissen. Und ich dachte schon, dass ich wenig wüsste. :D
 
Mach es so: erstelle einen neuen Zauber, Festigen Ausdauer 5000 Punkte für 10 Sekunden in 10 Fuss auf Berühren.

Dann erstelle die "Trittplatte" als Aktivator und mach an diese ein Script:

begin BeamPCWeg

float Zauberpause
short aktiviert

if ( menuMode )
return
endif

if ( Zauberpause > 0 )
set Zauberpause to Zauberpause - GetSecondsPassed
return
endif


if ( Aktiviert )
enableplayercontrols
set Aktiviert to 0
player-> Position X Y Z rot "balmora"
return

else

if ( getStandingPC )
messagebox "Magischer Beam sollte jetzt starten"
Cast "ID des Ausdauer-Festigen-Zaubers" Player
disableplayercontrols
; damit man auch was davon abkriegt:
set Zauberpause to 5
set Aktiviert to 1
endif

endif

end

Das Script muss aber an ein Aktivator-Objekt mit einem sichtbaren Mesh gemacht werden (Editor-Marker o.ä. gehen nicht!!!) Optional ginge es auch mit Objekten des Typs Door und Container- wobei eine Falltür vieleicht noch logisch wäre....)
Die beste Länge der Zauberpause musst Du durch Probieren herausfinden- sie sollte so lang sein das die 10 Sekunden des Ausdauer-Festigen-Zaubers erst dann abgelaufen sind nachdem der Spieler wieder festen Boden unter den Füssen hat, sonst überlebt er den Fall nicht.

Und der Position-Befehl funktioniert immer: die Zielzelle muss aber einen Eigennamen haben.
Position X Y Z rot ["Bitterküste"] geht nicht wenn man sich nicht in der gleichen oder in einer Nachbarzelle befindet. Aber alles was auf der Karte durch ein Kästchen dargestellt ist (Balmora, Vivec,Suran, Hlormaren o.ä. geht. Man muss nur dem Position-Befehl den Zellnamen anhängen.
NPC_ID-> Position X Y Z rot "Balmora" geht solange X Y und Z auch in Balmora sind.
 
Zuletzt bearbeitet:
Und der Position-Befehl funktioniert immer: die Zielzelle muss aber einen Eigennamen haben.
Position X Y Z rot ["Bitterküste"] geht nicht wenn man sich nicht in der gleichen oder in einer Nachbarzelle befindet. Aber alles was auf der Karte durch ein Kästchen dargestellt ist (Balmora, Vivec,Suran, Hlormaren o.ä. geht. Man muss nur dem Position-Befehl den Zellnamen anhängen.
NPC_ID-> Position X Y Z rot "Balmora" geht solange X Y und Z auch in Balmora sind.

Dann muss es doch aber PositionCell heißen, oder?
Position besitzt doch gar nicht die nötigen Argumente, um noch einen Zellennamen anzuhängen.
 
Dann muss es doch aber PositionCell heißen, oder?
Position besitzt doch gar nicht die nötigen Argumente, um noch einen Zellennamen anzuhängen.
Doch, das Argument "CellID" ist optional, d.h. man kann es weglassen.
Wahrscheinlich fehlt's deswegen auch in jeder Beschreibung ;)
PositionCell teleportiert den teleportierten Charakter eigentlich in Interior-Zellen hinein und der einzige Weg einen Charackter von drinnen nach draussen zu bekommen so das er wirklich dort erscheint ist eben
Char_ID-> Position X Y Z rot "CellID"
wobei wie gesagt nur Zellen mit Eigennamen möglich sind. Probier's aus,
schreib einen Dialog zum Thema "Balmora" für einen TestNPC (z.B. Todd) den Du per PlaceAtPC über die Konsole ins Spiel rufst.
Schreib da sowas:

Text 1: Gut , dann nicht...
function: choice >1
result :(keine)

Text 2: Alles klar, ich bin dann in Balmora"
function choice=1
result:
position x y z rot balmora
goodbye
; position muss aber eingetragen werden

Text3: Was ist mit Balmora?
result Choice "Nix wie hin" 1 "Och, nix" 2

Egal von wo, Du kannst tausend Todds nach Balmora blasen...
 
@Nenedeira: Genau, du hast es erfasst.

@ReneMiner: Also bei mir funktioniert der PostionCell-Befehl auch wunderbar für Exteriors (natürlich nur solche mit Eigennamen).
Aber dein so viel gepriesener GetPlayerDistance funktioniert ja bei mir auch nicht. Scheinbar haben wir zwei verschiedene Editorversionen.
 
Mal eine Zwischenfrage dazu:

Die CellID variabel zu machen geht nicht, weil es keine String-Variablen gibt, oder doch?


Um String-Variablen zu benutzen brauchst Du den MWSE (Morrowind Script Extender) - das wird dann aber auch beim Benutzer der das damit erstellte PlugIn benutzen will benötigt.

Echte Strings sinds auch da nicht sonderen Zahlen (Ascii-Code) z. B. der String "ABC" wird umgerechnet in 65(A) 66(B) 67 (C) und die Zahl sieht dann etwa so aus:

656667

Ich persönlich halte nix vom MWSE- das ist "Cheaten für Modder" :D
Killi- wenn's nicht mit GetPlayerDistance will haben wir ja noch unsere Standard-Abfrage

if (Player-> GetDistance "Player" <> 0 )
messagebox "Hilfe, Spiel kaputt!"
endif

Ich glaub GetPlayerDistance geht nur mit Dingen die Licht oder Geräusche machen - wenn überhaupt.
 
Kennt jemand so ein Programm, dass das Scripten bei Morrowind erleichtert.( Ich glaub ich hab mal so was gehabt, weiß aber nicht wie es heißt):cry:
 
Kennt jemand so ein Programm, dass das Scripten bei Morrowind erleichtert.( Ich glaub ich hab mal so was gehabt, weiß aber nicht wie es heißt):cry:

In welcher Beziehung meinst du erleichtern?
Es gibt ein Programm, dass verschiedene if-Verschachtelungen in verschiedenen Farben darstellt. Ich weiß aber nicht wie das heißt.