Construction Set Teleport onTrigger

Fellan

Freund des Hauses
Ich will, dass der Spieler "onTrigger", also wenn er einen Activator betätigt, zu einem bestimmten Punkt teleportiert wird.

Der Punkt ist ein XMarker und somit Persistent Reference, hat auch eine ReferenceID und heißt "WGTPlayerPosIfJumpedTop", bei einem anderen Script "WGTPlayerPosIfJumpedMid", aber das ist ja egal.
Der Activator ist eine TriggerBox mit Script drauf.

Und genau da sind wir beim Problem angekommen, dem Script. Ich habe zwei Scripts erstellt, die eigentlich funktionieren müssten, es aber nicht tun.

Code:
scn WGTIfJumpedTop

short triggered

begin onTrigger
   if triggered == 0
   player.MoveToMarker WGTPlayerPosIfJumpedTop
   endif
end

Dieser Script funktioniert zwar, aber sobald der Script einmal ausgelöst wurde, wiederholt er sich immer und immer wieder, ich werde also zum Punkt "WGTPlayerPosIfJumpedTop" teleportiert, dann aber immer und immer und immer wieder. Also dachte ich mir folgendes (bzw. habe mir folgendes rausgesucht):

Code:
scn WGTIfJumpedTop

short teleportNow

begin onTrigger
  set teleportNow to 1
end

begin gameMode
  if ( teleportNow )
    set teleportNow to 0
    player.moveToMarker WGTPlayerPosIfJumpedTop
  endif
end

Dieser Script hingegen funktioniert offenbar gar nicht. Wenn der Script ausgelöst wird, kommt der Ladebildschirm und bleibt bei 100% stehen und bewegt sich kein Stück mehr weiter. Dann passiert nichts, bis ich eben den TaskManager aufmache und Oblivion beende.

Hat irgendjemand Ideen was diesen Script angeht?
 
Probier es mal so

Code:
scn WGTIfJumpedTop

short triggered
short doonce

begin onTrigger
  if doonce !=1
   if triggered == 0
   player.MoveToMarker WGTPlayerPosIfJumpedTop
   set donce to 1
  endif
end
 
Eine Frage @Dark: warum hats du noch die trigegred variable drin? ;)
Die brinbgt hier doch nichts mehr, die bleibt imemr auf 0, also wird die abfrage immer wahr ;)
 
scn WGTIfJumpedTop
short triggered

begin onTrigger player ; sonst läuft uns nachher ne Wildsau rein und teleportiert uns

if triggered == 0

set triggered to 1
player.MoveTo WGTPlayerPosIfJumpedTop ;nix movetomarker hier nur die RefID

endif
end

begin onreset

set triggered to 0

end

Keine Ursache...

und hier noch ein Bonus... wenn du das jetzt mehrmals machen möchtest:

scn WGTIfJumpedTop

short triggered
float timer


begin onTrigger player

if triggered == 0

set triggered to 1
set timer to 5
player.MoveTo WGTPlayerPosIfJumpedTop
endif

end

;moveto zur Sicherheit immer als letztes... wenn mit Player als Reference,
;weil in z.B. Stage die kommenden Lines nicht executed werden also lassen
;wir das auch mal so in den Scripts

begin gameMode

if triggered == 1 && timer <= 0
set triggered to 0
endif

if timer >= 0
set timer to timer - getSecondsPassed
endif

end

Gruß
Ryan
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Fellan
Nimm das erste Script in dieser Variante:

Code:
scn WGTIfJumpedTop
 
short triggered
 
begin onTrigger player
   if triggered == 0
   set triggered to 1
   player.MoveTo WGTPlayerPosIfJumpedTop
   endif
end

Dann wirst Du einmal teleportiert. Wenn beim neuen durchlaufen des Triggers wieder ein teleport geschehen soll, dann müsstest Du noch über einen Timer die triggered Variable auf 0 zurücksetzen. Wie das geht kannst Du Dir in den Triggerboxen ansehen welche RESET in der ID haben.

EDIT: Verdammt RYAN! Ich schreibe wohl zu langsam. Na, jedenfalls wenn Du dich innerhalb der gleichen Zelle teleportierst ist es wichtig das set triggered to 1 VOR dem Moveto steht. Warum? Frag Oblivion....

Ryan Du machst das mit Absicht....
 
Zuletzt bearbeitet:
Rofl... ein 3:0 Wooohooo!....lol ....

Warum? Frag Oblivion....

Weil wenn er den Spieler in ne andere Zelle teleportiert, das Script aus der vorherigen anhält... dürfte nicht passieren innerhalb einer Zelle... aber würde mich jetzt auch nicht wundern wenn du mir jetzt sagst: Doch, is so...

Gruß
Ryan
 
3:0 ? Wo ist die drei?
Naja jedenfalls musste ich das letztens feststellen. In einen kleinem, von Dir getesteten Worldspace, hatte ich genau dieses Problem. Obs in Interiors auch so ist? Keine Ahnung. Aber dort wars so und ich habe den Grund nicht verstanden. Aber anscheinend wird der Code nach einem moveto nicht mehr richtig weiterbearbeitet. Wenn ich die Cell wechsle werden die Scripts der alten nicht mehr fortgeführt, ja.
Von daher....Doch, is so.:-D
 
Ja, ja, ja.... aber auch innerhalb einer Zelle... wie z.B. in einem Interior... also jetzt von Dieners-Kräuterecke zu Dieners-Ryan-Abwehrstrauch...
<- Da bin ich mir nicht sicher ob das Moveto egal wo funktioniert...

Gruß
Ryan

1 fürs Script
2 fürs den Timer
3 weil ich auch noch die movto Erklärung gab.... lol
 
Danke mal wieder an Ryan, Darks Script funktioniert zwar auch, aber wenn man die Box dann zum 2. Mal auslöst funktioniert es nicht mehr, bei Ryans zweitem Script ist das anders.
 
einfach, dass player... löschen... oder wenn die Begleiter Questbezogen sind die moveto Zeile wiederholen oder ganz elegant via Target-Ref den Trigger-Auslöser == Spieler u.o. Charakter X zu besagtem Punkt zu teleportieren...

WOBEI ES BEI BESTIMMTEN REFs WICHTIG IST: Dass der Player dann immer, immer , immer als letztes teleportiert wird.... ich sag mal nur "Auf's Bout?" ...lol *zwinker zwinker

gruß
Ryan