Résolu Probleme incompris

Brisingle

Bucheron
7 Juin 2016
10
0
12
24
Bonjour a tous,
je suis actuellement entrain de créer un "robot" en vanilla a l'aide des commandes blocs. Le problème étant que lors que je déplace le "robot" en dans une certaine direction, les robot de retourne face au sud.

Pour cela je fait tout d'abord :
/scoreboard players set @a robot 1 {SelectedItem:{id:"minecraft:redstone_torch",tag:{display:{Name:"Robot controler"}}}}

afin de donner au joueur aillant la télécommande. Je luis donne ensuite la possibilité de contrôleur le "robot" :
/tellraw @a[score_robot_min=1] ["",{"text":"[<]","color":"blue","bold":"true","clickEvent":{"action":"run_command","value":"/scoreboard players set @e[type=armor_stand,name=robot] roL 1"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Turn robot left","color":"green"}]}}},{"text":" ","color":"dark_gray","bold":"false"},{"text":"[^]","color":"blue","bold":"true","clickEvent":{"action":"run_command","value":"/scoreboard players set @e[type=armor_stand,name=robot] roF 1"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Forward robot","color":"green"}]}}},{"text":" ","color":"dark_gray","bold":"false"},{"text":"[>]","color":"blue","bold":"true","clickEvent":{"action":"run_command","value":"/scoreboard players set @e[type=armor_stand,name=robot] roR 1"},"hoverEvent":{"action":"show_text","value":{"text":"","extra":[{"text":"Turn robot right","color":"green"}]}}}]

Cela lui fait apparaître[<] [^] [>] dans les chat. [<] permet de donner au robot le score roL a 1, [^] roF a 1 et [>] roR a 1. Grâce au quatre commandes suivantes je peux connaitre la direction du "robot" :
- /scoreboard players set @e[type=armor_stand,name=robot] roRot 0 {Rotation:[0:0.0f]}
- /scoreboard players set @e[type=armor_stand,name=robot] roRot 1 {Rotation:[0:90.0f]}
- /scoreboard players set @e[type=armor_stand,name=robot] roRot 2 {Rotation:[0:180.0f]}
- /scoreboard players set @e[type=armor_stand,name=robot] roRot 3 {Rotation:[0:270.0f]}

Lors que le robot a le score roL a 1, je le fait tourner vers la gauche en fonction de sa rotation initiale :
- /entitydata @e[type=armor_stand,name=robot,score_roRot_min=0,score_roRot=0,score_roL_min=1] {Rotation:[0:270.0f]}
- /entitydata @e[type=armor_stand,name=robot,score_roRot_min=3,score_roRot=3,score_roL_min=1] {Rotation:[0:180.0f]}
- /entitydata @e[type=armor_stand,name=robot,score_roRot_min=2,score_roRot=2,score_roL_min=1] {Rotation:[0:90.0f]}
- /entitydata @e[type=armor_stand,name=robot,score_roRot_min=1,score_roRot=1,score_roL_min=1] {Rotation:[0:0.0f]}

(je fais de même mais vers la droite pour le score roR)

Je téléporte enfin mon "robot" et la le problème se pose :
- execute @e[type=armor_stand,name=robot,score_roRot_min=0,score_roRot=0,score_roF_min=1] ~ ~ ~ detect ~ ~ ~1 air 0 /tp @e[type=armor_stand,name=robot,score_roRot_min=0,score_roRot=0,score_roF_min=1] ~ ~ ~1 0 0
La téléportation se fait sans portable et le "robot" ne se tourne pas

- execute @e[type=armor_stand,name=robot,score_roRot_min=1,score_roRot=1,score_roF_min=1] ~ ~ ~ detect ~-1 ~ ~ air 0 /tp @e[type=armor_stand,name=robot,score_roRot_min=1,score_roRot=1,score_roF_min=1] ~-1 ~ ~ 90 0
De même ici

- execute @e[type=armor_stand,name=robot,score_roRot_min=2,score_roRot=2,score_roF_min=1] ~ ~ ~ detect ~ ~ ~-1 air 0 /tp @e[type=armor_stand,name=robot,score_roRot_min=2,score_roRot=2,score_roF_min=1] ~ ~ ~-1 180 0
- execute @e[type=armor_stand,name=robot,score_roRot_min=3,score_roRot=3,score_roF_min=1] ~ ~ ~ detect ~1 ~ ~ air 0 /tp @e[type=armor_stand,name=robot,score_roRot_min=3,score_roRot=3,score_roF_min=1] ~1 ~ ~ 270 0
Par contre pour ces deux la le "robot" se retrouve avec une rotation de 0° soit face au sud je je ne comprend pas pourquoi... et je comprend encore moins pourquoi la téléportation vers l'ouest ne change pas la rotation du "robot".

Evidemment après tout cela je remet tout les score a zéro excepté celui de la rotation.

Merci a ceux qui essaieront de m'aider ;)
 
Hey ! Je ne comprend pas cette phrase-ci :
La téléportation se fait sans portable et le "robot" ne se tourne pas
Ton problème est donc que lorsque tu téléportes ton robot, il n'est pas dans la bonne orientation ?
 
Je crois que j'ai trouvé une solution.
Je test ça sur minecraft et je te donne mes lignes de codes dans quelques minutes.
 
Hey ! Je ne comprend pas cette phrase-ci :

Ton problème est donc que lorsque tu téléportes ton robot, il n'est pas dans la bonne orientation ?
Autant pour moi je me suis tompé de mot je voulais dire ne se TOURNE pas.
Le problème est que le robot se téléporte dans la bonne direction mais apres cela il se trourne face au sud et je ne comprend pas pourquoi...

[Messages Fusionnés]

Je crois que j'ai trouvé une solution.
Je test ça sur minecraft et je te donne mes lignes de codes dans quelques minutes.
Merci beaucoup ;)
 
Dernière édition par un modérateur:
Je te donne tout ce que je viens de faire.

J'ai d'abord summon l'armorstand avec un tag robot:
Code:
/summon armor_stand ~ ~1 ~ {Tags:["robot"]}
Ensuite on aura besoin de l'objectif "rotation".
Le principe est qu'au lieu d'avoir un score de rotation vers la droite et un score de rotation vers la gauche, on a l'objectif rotation qui prend en compte ces deux variables. Quand le score rotation du robot est à 0, il fait face au Sud; 1 à l'ouest; 2 au nord et 3 à l'est.
Pour tourner le robot vers la droite, on ajoute 1 à l'objectif rotation.
Pour le tourner vers la gauche, on enlève 1 à l'objectif rotation.

Voici les commandes que l'on exécutera pour chaque tick:
Code:
/entitydata @e[tag=robot,score_rotation_min=0,score_rotation=0] {Rotation:[0:0.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=1,score_rotation=1] {Rotation:[0:90.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=2,score_rotation=2] {Rotation:[0:180.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=3,score_rotation=3] {Rotation:[0:270.0f]}

Comme on ne veut pas de score de -1 ou de 4. On remet le score à 3 pour -1 et 0 pour 4.
Code:
/scoreboard players set @e[tag=robot,score_rotation_min=-1,score_rotation=-1] rotation 3
Code:
/scoreboard players set @e[tag=robot,score_rotation_min=4,score_rotation=4] rotation 0

Pour faire bouger le robot, on a besoin de l'objectif move. On le mettra à 1 quand on veut le bouger dans la bonne direction.
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=0,score_rotation=0] ~ ~ ~1
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=1,score_rotation=1] ~-1 ~ ~
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=2,score_rotation=2] ~ ~ ~-1
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=3,score_rotation=3] ~1 ~ ~

On remet le score move à 0 pour éviter qu'il n'aille trop loin. :)
Code:
/scoreboard players set @e[tag=robot,score_move_min=1] move 0

Pour le bouger, j'ai utilisé des commandes blocs pour plus de faciliter mais tu peux toujours utiliser le tellraw.
Donc pour le bouger vers la droite:
Code:
/scoreboard players add @e[tag=robot] rotation 1
Vers la gauche:
Code:
/scoreboard players remove @e[tag=robot] rotation 1
Pour le faire avancer:
Code:
/scoreboard players set @e[tag=robot] move 1

Cela marche super bien, c'est très beau à voir.;)
 
  • J'aime
Reactions: Brisingle
Je te donne tout ce que je viens de faire.

J'ai d'abord summon l'armorstand avec un tag robot:
Code:
/summon armor_stand ~ ~1 ~ {Tags:["robot"]}
Ensuite on aura besoin de l'objectif "rotation".
Le principe est qu'au lieu d'avoir un score de rotation vers la droite et un score de rotation vers la gauche, on a l'objectif rotation qui prend en compte ces deux variables. Quand le score rotation du robot est à 0, il fait face au Sud; 1 à l'ouest; 2 au nord et 3 à l'est.
Pour tourner le robot vers la droite, on ajoute 1 à l'objectif rotation.
Pour le tourner vers la gauche, on enlève 1 à l'objectif rotation.

Voici les commandes que l'on exécutera pour chaque tick:
Code:
/entitydata @e[tag=robot,score_rotation_min=0,score_rotation=0] {Rotation:[0:0.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=1,score_rotation=1] {Rotation:[0:90.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=2,score_rotation=2] {Rotation:[0:180.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=3,score_rotation=3] {Rotation:[0:270.0f]}

Comme on ne veut pas de score de -1 ou de 4. On remet le score à 3 pour -1 et 0 pour 4.
Code:
/scoreboard players set @e[tag=robot,score_rotation_min=-1,score_rotation=-1] rotation 3
Code:
/scoreboard players set @e[tag=robot,score_rotation_min=4,score_rotation=4] rotation 0

Pour faire bouger le robot, on a besoin de l'objectif move. On le mettra à 1 quand on veut le bouger dans la bonne direction.
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=0,score_rotation=0] ~ ~ ~1
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=1,score_rotation=1] ~-1 ~ ~
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=2,score_rotation=2] ~ ~ ~-1
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=3,score_rotation=3] ~1 ~ ~

On remet le score move à 0 pour éviter qu'il n'aille trop loin. :)
Code:
/scoreboard players set @e[tag=robot,score_move_min=1] move 0

Pour le bouger, j'ai utilisé des commandes blocs pour plus de faciliter mais tu peux toujours utiliser le tellraw.
Donc pour le bouger vers la droite:
Code:
/scoreboard players add @e[tag=robot] rotation 1
Vers la gauche:
Code:
/scoreboard players remove @e[tag=robot] rotation 1
Pour le faire avancer:
Code:
/scoreboard players set @e[tag=robot] move 1

Cela marche super bien, c'est très beau à voir.;)
j'essai cela et je vous dis si c'est bon ;)

[Messages Fusionnés]

Je te donne tout ce que je viens de faire.

J'ai d'abord summon l'armorstand avec un tag robot:
Code:
/summon armor_stand ~ ~1 ~ {Tags:["robot"]}
Ensuite on aura besoin de l'objectif "rotation".
Le principe est qu'au lieu d'avoir un score de rotation vers la droite et un score de rotation vers la gauche, on a l'objectif rotation qui prend en compte ces deux variables. Quand le score rotation du robot est à 0, il fait face au Sud; 1 à l'ouest; 2 au nord et 3 à l'est.
Pour tourner le robot vers la droite, on ajoute 1 à l'objectif rotation.
Pour le tourner vers la gauche, on enlève 1 à l'objectif rotation.

Voici les commandes que l'on exécutera pour chaque tick:
Code:
/entitydata @e[tag=robot,score_rotation_min=0,score_rotation=0] {Rotation:[0:0.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=1,score_rotation=1] {Rotation:[0:90.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=2,score_rotation=2] {Rotation:[0:180.0f]}
Code:
/entitydata @e[tag=robot,score_rotation_min=3,score_rotation=3] {Rotation:[0:270.0f]}

Comme on ne veut pas de score de -1 ou de 4. On remet le score à 3 pour -1 et 0 pour 4.
Code:
/scoreboard players set @e[tag=robot,score_rotation_min=-1,score_rotation=-1] rotation 3
Code:
/scoreboard players set @e[tag=robot,score_rotation_min=4,score_rotation=4] rotation 0

Pour faire bouger le robot, on a besoin de l'objectif move. On le mettra à 1 quand on veut le bouger dans la bonne direction.
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=0,score_rotation=0] ~ ~ ~1
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=1,score_rotation=1] ~-1 ~ ~
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=2,score_rotation=2] ~ ~ ~-1
Code:
/tp @e[tag=robot,score_move_min=1,score_rotation_min=3,score_rotation=3] ~1 ~ ~

On remet le score move à 0 pour éviter qu'il n'aille trop loin. :)
Code:
/scoreboard players set @e[tag=robot,score_move_min=1] move 0

Pour le bouger, j'ai utilisé des commandes blocs pour plus de faciliter mais tu peux toujours utiliser le tellraw.
Donc pour le bouger vers la droite:
Code:
/scoreboard players add @e[tag=robot] rotation 1
Vers la gauche:
Code:
/scoreboard players remove @e[tag=robot] rotation 1
Pour le faire avancer:
Code:
/scoreboard players set @e[tag=robot] move 1

Cela marche super bien, c'est très beau à voir.;)
MERCI ! <3
 
Dernière édition par un modérateur: