Player.MoveTo Problem

Moderator: Moderatoren

7 Beiträge Seite 1 von 1
Ayonbird
Erzmagistrat
Erzmagistrat
Beiträge: 247
Registriert: 31.07.2010 17:03
Danksagung erhalten: 6 Mal


In meiner momentanen Mod würde ich gern ein Portal einbauen. An sich auch kein Problem, wenn es denn richtig funktionieren würde...
Habe dazu einen eine Triggerbox mit kleinem Script und einen XMarker mit REF genutzt. Also sollte der Spieler einfach den Trigger berühren und sich anschließend sonst wo wiederfinden. Soweit so gut, funktionier auch alles, nur kann ich mich am Zielort dann weder bewegen, noch die Kameraausrichtung verändern. (Wie in Sildren bei, kurz bevor man in die Feste gebracht wird.)

Der Script beinhaltet einen einfachen "Player.MoveTo REF" Befehl, wie ich ihn schon in Oblivion oft verbaut habe. Deshalb wundert es mich, dass es in Nehrim nicht klappen will. Hat jemand eine Idee woran es liegen könnte? Bzw. wie man es beheben kann?

Edit:
Eben vergessen zu schreiben: Die Konsole lässt sich ebenfalls nicht mehr öffnen. Seltsamerweise aber das Charaktermenü. Also ich denke das der Script irgendwo hängt, kann mir aber absolut nicht erklären wieso.
Arandor
Hoher
Hoher
Beiträge: 1250
Registriert: 12.09.2006 11:50
Hat sich bedankt: 5 Mal


Player.MoveTo arbeitet als return-Befehl, d.h. alles, was danach im Script steht, wird nicht beachtet. Du hast wahrscheinlich eine doonce-Bedingung eingebaut, aber die Variable soll erst nach dem MoveTo-Befehl hochgesetzt werden. Letztlich wrd sie das aber nicht, und so führt das Script jeden Frame den MoveTo-Befehl aus, weshalb du dich nicht bewegen kannst.

So sieht deins aus:

if ( doonce == 0 )
Player.MoveTo X
set doonce to 1
endif

So müsste es aussehen:

if ( doonce == 0 )
set doonce to 1
Player.MoveTo X
endif
Ayonbird
Erzmagistrat
Erzmagistrat
Beiträge: 247
Registriert: 31.07.2010 17:03
Danksagung erhalten: 6 Mal


Das kann ich leider nicht bestätigen und ich wünschte es wäre so einfach.

Habe mal einen PlaySound Befehlt hinzugefügt der mir bestätigt das der Script einfach unendlich oft wiederholt wird. Habe dann extra noch ein "Return" druntergehauen. Schaffte aber leider auch keine Abhilfe.

Eigentlich ist mein Script nur:

if Player.GetItemCount X == 1

Player.RemoveItem X 1
Player.MoveTo REFX

endif
Arandor
Hoher
Hoher
Beiträge: 1250
Registriert: 12.09.2006 11:50
Hat sich bedankt: 5 Mal


Und dieses Script wird unendlich oft ausgeführt, weil die Bedingung immer gilt. Es muss lauten:
Code: Alles auswählen
scn Script

short doonce

Begin GameMode

if Player.GetItemCount X == 1 && doonce == 0 

Player.RemoveItem X 1
set doonce to 1
Player.MoveTo REFX

endif

End
Edit: Ok, dein Gedanke war, dass die Bedingung nicht mehr gilt, weil ja das Item nicht mehr im Inventar ist. Aber bei Player.MoveTo-Scripten funktioniert das leider nicht. Möglicherweise funktioniert auch diese Version von mir nicht richtig. Am besten wäre es, wenn du das in einen OnActivate-Block legst, der nur einen Frame lang ausgeführt wird.
Ayonbird
Erzmagistrat
Erzmagistrat
Beiträge: 247
Registriert: 31.07.2010 17:03
Danksagung erhalten: 6 Mal


Gerade genau so gemacht, trotzdem danke^^

Damit ergibt sich aber leider direkt das nächste Problem: Das DoOnce wieder auf 0 zu bringen. Das Portal soll nämlich ständig einsatzbereit sein.
Wenn jedoch alle Befehle nach dem MoveTo ignoriert werden, was wäre die einfachste Option ohne eine Globale Variable zu erstellen?
Arandor
Hoher
Hoher
Beiträge: 1250
Registriert: 12.09.2006 11:50
Hat sich bedankt: 5 Mal


Mit OnActivate müsste das doonce überflüssig sein.
Ayonbird
Erzmagistrat
Erzmagistrat
Beiträge: 247
Registriert: 31.07.2010 17:03
Danksagung erhalten: 6 Mal


Dann kann ich mein OnTrigger wohl vergessen...
Wollte es eigentlich darüber laufen lassen, denn sonst könnte ich ja auch eine einfache Tür platzieren. Ich werd mal noch ein wenig rumprobieren und berichten wenn sich etwas ergibt.

Edit:

Habs hinbekommen :D War eigentlich so simple, aber manchmal ist genau das am schwersten herauszufinden...
Code: Alles auswählen
short DoOnce

Begin OnTrigger Player

if Player.GetItemCount XXX == 1 && DoOnce == 0

	PlaySound "SPLMysticismCast"
	Set DoOnce to 1
	Player.MoveTo XXXREF

else

 Set DoOnce to 0

endif

End
Trotzdem vielen Dank für die nette und vor allem schnelle Unterstützung :)
7 Beiträge Seite 1 von 1

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste