Construction Set Frage zu Teleport-script

Eyja

Abenteurer
Hallo!
Ich wollte mir gerne einen eigenen Teleport-zauber erstellen. Aber wenn ich versuche den Script abzuspeichern bekomme ich eine Fehlermeldung. Der verwendete Script lautet:

scn AyleidMoveTo

begin scripteffectstart

player.moveto AyleidTeleportMarker

end

könnte mir jemand sagen was ich falsch gemacht habe? Danke im Vorraus für eure Antworten!

Eyja
 
Ich bin jciht der Profi aber: was für eine Fehlermeldung?
Braucht es nicht ein "if" und ein "endif"?
 
Am Script an sich ist alles OK. Das einzige,. was mir einfällt, wäre, wenn du die ReferenceID des XMarkers aus versehen falsch geschrieben hast

EDIT: Ausnahmsweise mal zu spät :roll:
 
Hat endlich geklappt! Ich hab den falschen Marker genommen. Mit dem XMarkerHeading hats dann geklappt!
Greets,
Eyja
 
Ich hätt noch Fragen zu dem Thema Teleportscript:

scn EnemyTeleportScript

begin Scripteffectstart

"Id des Actors (00SEP21ImperialTrader).Moveto "Reference-Id des Markers"

end

würde das klappen das ein anderer Actor diesen Spruch (wenn der Script überhaupt funktioniert natürlich) auf sich wirkt, und zwar nach einer Queststage, oder nach einem Dialog.
 
Wenn du die Anführungszeichen weglässt, denke ja

also diese:

"Id des Actors (00SEP21ImperialTrader).Moveto "Reference-Id des Markers"
 
  • Like
Reaktionen: Eyja
Danke! Jetzt müsst ich aber nur noch wissen wie das geht, das mein NPC den Spruch bei einer Stage castet. Ich würde das so machen, das das AI-Package folgendermaßen aussieht:

Package-Typ:Use Item
Day of Week:Any
Monte:Any
Day:Any
Time:Any
Duration:None

dann als Condition: GetIsStage 00SEP21HQ4 5
und als Target: Object-Id: 00SEP21TeleportOfEnemy
Count: 1
Dann müsst der den Spruch bei der Stage casten, oder etwa nicht?
 
scn 00SEP21TeleportScript

short button
Begin Scripteffectstart
MessageBox "Welchen Ort wollt ihr besuchen??", "Brindisi-Dorom", "Marktviertel", "Tempel","Wohnbezirk","Haupthalle","Schlafzimmer","Kampfraum","Garten","Gesellschaftsraum","Weinkeller"
End

Begin ScriptEffectstart
Set button to GetButtonPressed
if button == 0
;Auswahl 1 Brindisi-Dorom
Message "Teleport nach Brindisi-Dorom"
Player.Moveto SpaiqRef

elseif button == 1
;Auswahl 2 Marktviertel
Message "Teleport zum Markt"
Player.Moveto MarktRef

elseif button == 2
;Auswahl 3 Tempel
Message "Teleport nach Tempel"
Player.Moveto TempelRefS

elseif button == 3
;Auswahl 4 Wohnbezirk
Message "Teleport zum Wohnbezirk"
Player.Moveto WohnRef

elseif button == 4
;Auswahl 5 Haupthalle
Message "Teleport zur Haupthalle"
Player.Moveto HallenMarkerS

elseif button == 5
;Auswahl 6 Schlafzimmer
Message "Teleport zum Schlafzimmer"
Player.Moveto SchlafMarkerS

elseif button == 6
;Auswahl 7 Kampfraum
Message "Teleport zum Kampfraum"
Player.Moveto KampfRefS

elseif button == 7
;Auswahl 8 Garten
Message "Teleport zum Garten"
Player.Moveto GartenRefS

elseif button == 8
;Auswahl 9 Gesellschaftsraum
Message "Teleport zum Gesellschaftsraum"
Player.Moveto TrinkMarkers

elseif button == 9
;Auswahl 10 Weinkeller
Message "Teleport zum Weinkeller"
Player.Moveto WeinMarkerS

endif

end

Der Script lässt sich zwar saven, aber ich nen Button bei der Messagebox klicke, passiert nix. ( stürzt nicht ab!) Was hab ich wieder falsch gemacht?
 
Vieleicht solltest du die getbuttonpressed abfrage samt resultscripts für die button's in einen Gamemode block legen.
Wenn der Scripteffect gestartet wird, wird nur der erste frame danach abgefragt. Da aber die messagebox erst in diesem Frameaufgebaut wird, und erst im nächsten abfragbar, greift dein Getbuttonpressed nicht.Genauso wie deine Button's selbst, die nur dann funktionieren würden, wenn man genau dann drauf drückt, wenn du grade den Zauber machst.

Versuchs also so:

Code:
scn 00SEP21TeleportScript

short button
Begin Scripteffectstart
MessageBox "Welchen Ort wollt ihr besuchen??", "Brindisi-Dorom", "Marktviertel", "Tempel","Wohnbezirk","Haupthalle","Schlafzimmer", "Kampfraum","Garten","Gesellschaftsraum","Weinkell er"
End

Begin Gamemode
Set button to GetButtonPressed
if button == 0
;Auswahl 1 Brindisi-Dorom
Message "Teleport nach Brindisi-Dorom"
Player.Moveto SpaiqRef

elseif button == 1
;Auswahl 2 Marktviertel
Message "Teleport zum Markt"
Player.Moveto MarktRef

elseif button == 2
;Auswahl 3 Tempel
Message "Teleport nach Tempel"
Player.Moveto TempelRefS

elseif button == 3
;Auswahl 4 Wohnbezirk
Message "Teleport zum Wohnbezirk"
Player.Moveto WohnRef

elseif button == 4
;Auswahl 5 Haupthalle
Message "Teleport zur Haupthalle"
Player.Moveto HallenMarkerS

elseif button == 5
;Auswahl 6 Schlafzimmer
Message "Teleport zum Schlafzimmer"
Player.Moveto SchlafMarkerS

elseif button == 6
;Auswahl 7 Kampfraum
Message "Teleport zum Kampfraum"
Player.Moveto KampfRefS

elseif button == 7
;Auswahl 8 Garten
Message "Teleport zum Garten"
Player.Moveto GartenRefS

elseif button == 8
;Auswahl 9 Gesellschaftsraum
Message "Teleport zum Gesellschaftsraum"
Player.Moveto TrinkMarkers

elseif button == 9
;Auswahl 10 Weinkeller
Message "Teleport zum Weinkeller"
Player.Moveto WeinMarkerS

endif

end
 
Also eigentlich sollte das funtionieren, kommt den wenigstens die Meldung ? Wenn ja stimmen die Namen der Referencen nicht (XMarker).
Ansonsten kopier nochmal das untenstehende Script, teste es und Poste ob und welche Meldung(Message) du bekommst.



Code:
scn 00SEP21TeleportScript

short button

Begin Scripteffectstart
        MessageBox "Welchen Ort wollt ihr besuchen??", "Brindisi-Dorom", "Marktviertel", "Tempel","Wohnbezirk","Haupthalle","Schlafzimmer", "Kampfraum","Garten","Gesellschaftsraum","Weinkell er"
End

Begin Gamemode
        Set button to GetButtonPressed
        if ( button >= 0)  
                 if button == 0
                       ;Auswahl 1 Brindisi-Dorom
                       Message "Teleport nach Brindisi-Dorom"
                       Player.Moveto SpaiqRef
                 elseif button == 1
                       ;Auswahl 2 Marktviertel
                       Message "Teleport zum Markt"
                       Player.Moveto MarktRef
                 elseif button == 2
                       ;Auswahl 3 Tempel
                       Message "Teleport nach Tempel"
                       Player.Moveto TempelRefS
                elseif button == 3
                       ;Auswahl 4 Wohnbezirk
                       Message "Teleport zum Wohnbezirk"
                       Player.Moveto WohnRef
                elseif button == 4
                       ;Auswahl 5 Haupthalle
                       Message "Teleport zur Haupthalle"
                       Player.Moveto HallenMarkerS
                elseif button == 5
                       ;Auswahl 6 Schlafzimmer
                       Message "Teleport zum Schlafzimmer"
                       Player.Moveto SchlafMarkerS
                elseif button == 6
                       ;Auswahl 7 Kampfraum
                       Message "Teleport zum Kampfraum"
                       Player.Moveto KampfRefS
                elseif button == 7
                       ;Auswahl 8 Garten
                       Message "Teleport zum Garten"
                       Player.Moveto GartenRefS
                elseif button == 8
                       ;Auswahl 9 Gesellschaftsraum
                       Message "Teleport zum Gesellschaftsraum"
                       Player.Moveto TrinkMarkers
                elseif button == 9
                       ;Auswahl 10 Weinkeller
                       Message "Teleport zum Weinkeller"
                       Player.Moveto WeinMarkerS     
                endif
         else 
                 Message "Es Wurde kein Button Gedrückt"
         endif 
end
 
Wenn das stimmt was du sagst. Dann wird der Block "GameMode" im einen "Spellscript" nicht genutzt. Ich kann dazu nichts sagen, hab mich mit Spells noch nicht beschäftigt.

Ändere wieder die Zeile "Begin GameMode" in "Begin ScriptEffectUpdate" und stelle die Dauer(Duration) deines Zaubers auf mindestens 5 Sekunden besser 10. ;)

Hier nochmal die Neue Version des Scriptes.

Code:
scn 00SEP21TeleportScript

short button

Begin Scripteffectstart
        MessageBox "Welchen Ort wollt ihr besuchen??", "Brindisi-Dorom", "Marktviertel", "Tempel","Wohnbezirk","Haupthalle","Schlafzimmer", "Kampfraum","Garten","Gesellschaftsraum","Weinkell er"
End

Begin ScriptEffectUpdate
        Set button to GetButtonPressed
        if ( button >= 0)  
                 if button == 0
                       ;Auswahl 1 Brindisi-Dorom
                       Message "Teleport nach Brindisi-Dorom"
                       Player.Moveto SpaiqRef
                 elseif button == 1
                       ;Auswahl 2 Marktviertel
                       Message "Teleport zum Markt"
                       Player.Moveto MarktRef
                 elseif button == 2
                       ;Auswahl 3 Tempel
                       Message "Teleport nach Tempel"
                       Player.Moveto TempelRefS
                elseif button == 3
                       ;Auswahl 4 Wohnbezirk
                       Message "Teleport zum Wohnbezirk"
                       Player.Moveto WohnRef
                elseif button == 4
                       ;Auswahl 5 Haupthalle
                       Message "Teleport zur Haupthalle"
                       Player.Moveto HallenMarkerS
                elseif button == 5
                       ;Auswahl 6 Schlafzimmer
                       Message "Teleport zum Schlafzimmer"
                       Player.Moveto SchlafMarkerS
                elseif button == 6
                       ;Auswahl 7 Kampfraum
                       Message "Teleport zum Kampfraum"
                       Player.Moveto KampfRefS
                elseif button == 7
                       ;Auswahl 8 Garten
                       Message "Teleport zum Garten"
                       Player.Moveto GartenRefS
                elseif button == 8
                       ;Auswahl 9 Gesellschaftsraum
                       Message "Teleport zum Gesellschaftsraum"
                       Player.Moveto TrinkMarkers
                elseif button == 9
                       ;Auswahl 10 Weinkeller
                       Message "Teleport zum Weinkeller"
                       Player.Moveto WeinMarkerS     
                endif
         else 
                 Message "Es Wurde kein Button Gedrückt"
         endif 
end
 
Ich hatte das Problem auch. Ein Spell-Script wird leider nur für die Zeit der Duration ausgeführt, mit 10 Sekunden kannst du das Problem zwar umgehen, abern icht vollends umgehen. Ich hab das Problem durch ein zweites Script gelöst, das ständig ausgeführt wird und an das dann eine Variable übergeben wird, die dann signalisiert, ab wann dieses zweite Script arbeiten soll und ab wann nicht (ALso nur zwischen Messagebox geöffnet und Button gedrückt)... Wo du das hinmachst bleibt dir überlassen, evtl. Questscript, oder ein Script auf den Player, das ganze muss dann in einen GameMode block. Entweder du machst es mit einer globalen Variable oder fragst die Variable aus dem anderen Script ab, hab grad die Syntax dafür nicht zur Hand, steht hier im Forum aber bestimmt auch an mehreren Stellen.
 
@Zerlix: Thx! Jetzt hat der Zauber endlich gefunzt! Aber immer wenn man den Zauber spricht, kommt eine Meldung "Es wurde kein Button gedrückt".
 
Eyja schrieb:
@Zerlix: Thx! Jetzt hat der Zauber endlich gefunzt! Aber immer wenn man den Zauber spricht, kommt eine Meldung "Es wurde kein Button gedrückt".

Die Meldung war nur zum Testen.
Entferne diese 2 Zeilen vor dem "endif". Dann sollte die Meldung nicht mehr kommen.
Code:
         else 
                 Message "Es Wurde kein Button Gedrückt"

aber trotzdem hat Baal Lukor nicht unrecht mit dem was er gesagt hat.
Wenn jemand den Zauber spricht und nicht innerhalb von 10 Sekunden den Button klickt, funktioniert das Script nicht mehr.
"Sauber" kann man das wohl nur über ein Questscript lösen.

Du könntest aber die Dauer des Zauber auf 600 Sekunden setzen, das sollte auch für den langsamsten ausreichend Zeit seien.
Im Script fügst du dann noch nach dem ersten "endif" folgende Zeile ein
Code:
player.dispel MySpellID
MySpellID muss natürlich mit der richtigen ID ersetzt werden. Das entfernt dann denn "Spelleffect" nach dem Porten vom Spieler.

Grüsse Zerlix