• Bitte beachte, dass wir eine Serverliste sind!
    Wenn du ein Problem auf einem Server hast (z.B. Entbannantrag, etc), dann ist das Forum hier der falsche Ort.
  • Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Erledigt Teleport Befehl funktioniert nicht so wie er soll (gelöst)

Teayo

Redstoneengineer
Mitglied seit
1 April 2015
Beiträge
36
Minecraft
Teayo
Hallo Forum,

ich habe ein Problem mit den teleport Befehl, weil der nicht so ausgeführt wird, wie er es soll.
Habe bis jetzt noch keine Lösung dazu. Ein danke im vorraus an alle die mir eine Lösung dazu geben können.

mcfunction Datei wird mit diesen Befehl angesteuert :
Code:
execute if score status regionleerer matches 3 as @e[type=armor_stand,tag=regioleer,limit=1,sort=nearest] at @s run function server_daten:regionentleerungssystem_ablauf_1
in der mcfunction Datei steht folgendes drin :
Code:
# ***

***
***
***


# ***

***
***
***
***


# ***

***
***
***
***
***


# ***

***
***
***
***


# Bewegungswandler

***
***
***
***
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. run teleport @s ~1 ~ ~
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches ..-1 run teleport @s ~-1 ~ ~
execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches 1.. run teleport @s ~ ~ ~1
execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches ..-1 run teleport @s ~ ~ ~-1
*** = Nicht relevant für dieses Problem. Wenn man dies Ablaufen lässt dann passiert folgendes : Der Rüstungsständer wird zuerst NUR in Z-Richtung teleportiert, wenn er dort an der Z-Ziel-Pos angekommen ist, ERST DANN wird er in X-Richtung teleportiert, bis er an der eigendlichen Zielposition angekommen ist.

Meine Frage : Warum wird er zuerst nur in X+ tpt und erst dann in Z+ tpt, statt nicht gleich wie von mir eigendlich Gedacht X+ und Z+ gleichzeitig tpt ?
 
Zuletzt bearbeitet:

JoValle

Minecrafter
Mitglied seit
17 März 2018
Beiträge
11
Alter
13
Minecraft
XiXDev
Liegt vllt an folgendem statt
#execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. run teleport @s ~1 ~ ~ #execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches ..-1 run teleport @s ~-1 ~ ~ #execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches 1.. run teleport @s ~ ~ ~1 #execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches ..-1 run teleport @s ~ ~ ~-1
Code:
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. run teleport @s ~1 ~ ~
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches ..-1 run teleport @s ~-1 ~ ~
execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches 1.. run teleport @s ~ ~ ~1
execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches ..-1 run teleport @s ~ ~ ~-1
 

Teayo

Redstoneengineer
Mitglied seit
1 April 2015
Beiträge
36
Minecraft
Teayo
Achso das mit den # war noch von früheren Tests. Es funktioniert trotzdem nicht so wie es soll

Also er tpt zuerst nur in X+ wenn er bei X-Ziel ist dann in Z+
Aber soll X+ und Z+ gleichzeitig bis Ziel machen
 

SirYwell

Vorarbeiter
Osterei Experte
Mitglied seit
30 Juni 2017
Beiträge
258
Alter
20
Minecraft
SirYwell
Wenn du die zwei Befehle hintereinander ausführst, wird die Teleportation auch zeitversetzt durchgeführt. Ich kenne mich mit Skript nicht aus, aber vermutlich musst du die if-Abfragen geschickter verketten.
 

Teayo

Redstoneengineer
Mitglied seit
1 April 2015
Beiträge
36
Minecraft
Teayo
Wie genau meinst du das mit if-Abfragen strikter machen ? Ich hab nur diese Bedingungen. Es gibt keine weiteren.
Außerdem konnte ich heraus finden das wenn ich anstatt /teleport den Befehl /give Teayo dirt eingebe hinter allen 4 Befehlen, mit den gleichen Bedingungen, dann bekomme ich 2 Erde. Also funktionieren die if-Bedingungen jedoch nicht der /teleport (Also nur einer der teleports gleichzeitig)
 

SirYwell

Vorarbeiter
Osterei Experte
Mitglied seit
30 Juni 2017
Beiträge
258
Alter
20
Minecraft
SirYwell
Du führst aktuell wenn ich das richtig sehe immer zwei Befehle aus. Wenn Skript die Möglichkeit bietet, if-Abfragen zu verschachteln (wovon ich mal ausgehe), kannst du dir den ersten Teil, der immer gleich bleibt, 3 mal sparen. Außerdem solltest du eben überprüfen, ob der x-Wert UND der z-Wert passt und dann einen Befehl ausführen. Das wird dann zwar etwas verschachtelter, aber um dir effizientere Tipps geben zu können, müsste ich mich selber erst mal mit Skript beschäftigen.
 

JoValle

Minecrafter
Mitglied seit
17 März 2018
Beiträge
11
Alter
13
Minecraft
XiXDev
du must vier befehle machen
z.B.
Code:
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. if score Z9 regionleerer matches 1.. run teleport @s ~1 ~ ~1
und z. B.
Code:
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches ..-1 if score Z9 regionleerer matches ..-1 run teleport @s ~-1 ~ ~-1
 

Teayo

Redstoneengineer
Mitglied seit
1 April 2015
Beiträge
36
Minecraft
Teayo
@SirYwell ich hab das mal ausprobiert, wie du das vorgeschlagen hast :
Code:
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. run teleport @s ~1 ~ ~
execute if score X9 regionleerer matches ..-1 run teleport @s ~-1 ~ ~
execute if score Z9 regionleerer matches 1.. run teleport @s ~ ~ ~1
execute if score Z9 regionleerer matches ..-1 run teleport @s ~ ~ ~-1
Dann passiert folgendes :
Der Rüstungsständer fährt nach der vorgegebenden Geschwindigkeit falls das Ziel in X+ liegt. Sobald aber das Ziel aber in X- oder nicht auf der Z-Achse vom Rüstungsständer ist dann wird er unkontrollierbar. Ich kann seine Geschwindigkeit nicht mehr kontrollieren.
@JoValle auch dein Vorschlag habe ich ausprobiert :
Code:
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. if score Z9 regionleerer matches 1.. run teleport @s ~1 ~ ~1
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches ..-1 if score Z9 regionleerer matches 1.. run teleport @s ~-1 ~ ~1
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. if score Z9 regionleerer matches ..-1 run teleport @s ~1 ~ ~-1
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches ..-1 if score Z9 regionleerer matches ..-1 run teleport @s ~-1 ~ ~-1
Dann passiert folgendes :
Der Rüstungsständer fährt zur Ziel Position, jedoch wenn er schon auf einer Achse gleich den Ziel ist dann eiert er immer im Zick-Zack rum. Es funktioniert, das er zum Ziel kommt aber das mit den Zick-Zack finde ich nicht schön.

Außerdem fährt er bei beiden Varianten immernoch zuerst in eine Achse und dannach in die andere

Folgende Ergänzung vom 03.11.2018

Ich bekam hilfe aus dem Gamepedia-Discord #Technik-Wiki .
Ausgangssituation war das der Rüstungsständer sowohl in X als auch in Z-Achse nicht auf der Zielposition lag.
Wenn nun die 4 Befehle für den Teleport, in der mcfunction ausgeführt wurden, dann bewegte sich der Rüstungsständer zuerst nur auf der X-Achse in Richtung Zielposition. hatte er die Zielposition auf der X-Achse erreicht, erst dann fuhr er auf der Z-Achse in Richtung Zielposition.
Dabei bin ich davon ausgegangen, das er sowohl in X als auch in Z-Achse, das Ziel gleichzeitig ansteuert.
execute if score status regionleerer matches 3 as @e[type=armor_stand,tag=regioleer,limit=1,sort=nearest] at @s run function server_daten:regionentleerungssystem_ablauf_1
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. run teleport @s ~1 ~ ~
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches ..-1 run teleport @s ~-1 ~ ~
execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches 1.. run teleport @s ~ ~ ~1
execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches ..-1 run teleport @s ~ ~ ~-1
Das Problem war, das es einen Bug bei den mcfunctions gibt, der dadurch entsteht, das wenn die mcfunction als und beim Selektor ausgeführt wird, das der erste Teleport Befehl erfolgreich ist, jedoch die nachfolgenden nicht, da die mcfunction mit allen Ihren Befehlen, an der Position des Selektors ausgeführt wird, wo dieser zu beginn der Ausführung der mcfunction stand. Durch den ersten erfolgreichen Teleport, des Rüstungsständers, befindet sich der Rüstungsständer nicht mehr an der Position, wo die mcfunction ausgeführt wird. Dadurch greift der Selektor @s beim Teleport nicht mehr und er ist erfolglos.
execute if score status regionleerer matches 3 as @e[type=armor_stand,tag=regioleer,limit=1,sort=nearest] at @s run function server_daten:regionentleerungssystem_ablauf_1
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches 1.. run teleport @e[type=armor_stand,tag=regioleer,limit=1,sort=nearest] ~1 ~ ~
execute if score ver_geschw regionleerer matches 1 if score X9 regionleerer matches ..-1 run teleport @e[type=armor_stand,tag=regioleer,limit=1,sort=nearest] ~-1 ~ ~
execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches 1.. run teleport @e[type=armor_stand,tag=regioleer,limit=1,sort=nearest] ~ ~ ~1
execute if score ver_geschw regionleerer matches 1 if score Z9 regionleerer matches ..-1 run teleport @e[type=armor_stand,tag=regioleer,limit=1,sort=nearest] ~ ~ ~-1
Die Lösung für das Problem ist simpel, jedoch bin ich alleine leider nicht drauf gekommen. Der Selektor im Teleport Befehl muss ergänzt werden, so das er unabhängig von der Ausführungsposition der mcfunction funktioniert. Dabei wirkt jedoch das as , wie die mcfunction ausgeführt wird, weiterhin auf den Teleport Befehl ein. ( as - als Rüstungsständer)

Ein Danke geht an Nethonos, Tobi und MarkusRost

THEMA GESCHLOSSEN
 
Zuletzt bearbeitet:

Twitter

Allgemein
Hilfe Benutzer
    Matthias Matthias: 2.200 Benutzer online :eek:
    Oben