1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

/tellraw: pseudo+clickEvent

Discussion dans 'Mapping' créé par matyce11, 16 Nov 2014.

  1. matyce11

    matyce11 Bûcheron

    Inscrit:
    2 Sept 2013
    Messages:
    109
    Points:
    74
    Sexe:
    Homme
    Boonjour, bonjour. Je fais une map pvp où l'on peut mourir et ne pas respawner. J'ai donc fait un système pour que les "morts" puissent se téléporter au autre joueur.
    Je voudrais qu'il apparaisse le pseudo d'un joueur encore en lice et que si on clique dessus, on est téléporter sur lui.
    Code (cpp):
    /tellraw @a [{selector:"@a", clickEvent:{action:show_text,value:"/tp matyce11"}}]
    Or, le problème est que si je clique sur le nom, il apppraît ça dans le chat:
    Code (cpp):
    /msg matyce11
     
  2. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 593
    Points:
    229
    Tu as utilisé la mauvaise action. "show_text" affiche en effet un texte dans le chat (qui est sensé être "tp matyce11" et non "msg matyce11").
    Pour que la commande mis dans value soit exécutée tu dois utiliser l'action "run_command" ce qui te donne donc :
    Code (cpp):
    /tellraw @a [{selector:"@a",clickEvent:{action:run_command,value:"/tp matyce11"}}]
    Deuxièmement ici la value est fixe, par conséquent elle téléportera toujours vers le joueur "matyce11" quel que soit le nom du joueur affiché.
     
  3. matyce11

    matyce11 Bûcheron

    Inscrit:
    2 Sept 2013
    Messages:
    109
    Points:
    74
    Sexe:
    Homme
    Le résultat est le même :( J'avais essayer en mettant un texte à côté, mais si le joueur était mort, le texte s'affichait tout seul.
    Peut être qu'avec des testfor... ou des execute... Je vais tester ça.
     
  4. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 593
    Points:
    229
    Peut être tout simplement que les selectors en tellraw fonctionnent comme le chat (ce qui serait logique vu que le chat marche en JSON depuis quelques versions), par conséquent cliquer sur le nom d'un joueur met la commande pour un message.
    Essai de mettre un texte à part comme ceci par exemple :
    Code (cpp):
    /tellraw @a [{selector:"@a"},{text:" tp",clickEvent:{action:run_command,value:"/tp matyce11"}}]
     
  5. matyce11

    matyce11 Bûcheron

    Inscrit:
    2 Sept 2013
    Messages:
    109
    Points:
    74
    Sexe:
    Homme
    Et y'aurait-il un moyen pour que ce texte ne s'affiche que si le selecteur trouve quelqu'un? En fait, au lieu de mettre @a, je met @a[score_teleportation=1]. Si personne n'a ce score, le "tp" s'affichera quand même :(
     
  6. Calambiel

    Calambiel Résident de l'End

    Inscrit:
    5 Août 2014
    Messages:
    6 593
    Points:
    229
    Tu peux toujours passer par un testfor ou un execute qui n'active le tellraw que si un joueur est trouvé. Le problème c'est qu'il ne sera pas possible de se tp sur tous les joueurs sans passer par un score. En effet le @a affiche tous les joueurs, quand bien même on pourrait mettre une commande dessus ce sera toujours la même elle ne téléportera qu'à un seul joueur. De même le texte "tp" n'accepte qu'une commande.

    La seule solution que je vois est de passer par un objectif dont chaque joueur à un score différent et mettre un tellraw pour chacune de ces valeurs, chacune ne s'activant (sur un courant s'activant à la demande) que si le testfor trouve un joueur de ce score (de cette manière ça affiche autant de lignes de tp qu'il y a de joueurs viables à une téléportation, il suffit de reset le score des perdants pour qu'ils n'apparaissent plus)
     
  7. matyce11

    matyce11 Bûcheron

    Inscrit:
    2 Sept 2013
    Messages:
    109
    Points:
    74
    Sexe:
    Homme
    C'est exactement ce que j'ai fait avec l'objectif teleportation :) Par contre je ne sais pas comment tester si un joueur à un score; ex: tester si un joueur a le score teleportation = à 2. Il faut le @a ou le @r?
    EDIT: C'est bon, j'ai trouvé! Je passe en résolu :)
     
    #7 matyce11, 16 Nov 2014
    Dernière édition: 16 Nov 2014

Partager cette page