Elvui : montrer interface si on se cible soi-même

Bonjour,

Désolé je refais un sujet, je suis nouveau sur le forum et j’avoue j’suis un peu paumé. J’avais créé ce sujet : Elvui : les codes pour options avancées

et j’arrive pas à y répondre ou à lui redonner de la visibilité pour une autre question. Du coup désolé pour ça

J’voulais juste continuer mon bidouillage et faire en sorte du coup comme je le dis dans mon dernier message, que mes barres de sorts s’affichent aussi quand je me cible moi même. J’arrive pas à comprendre ce que je dois écrire dans les macros

Mmh pas certaine du tout de ce que je vais te dire mais tu as essayé @player en plus de @target ?
Ca fonctionne dans les macros, ça devrait fonctionner sur ElvUI.

Ouais j’avais vu ça justement sur le site qu’on m’avait donné sur le précédent topic.

J’ai essayé :

  • [petbattle] hide;show [combat][@target, harm, exists] show;hide [@player] show;hide
  • [petbattle] hide;show [combat][@target, harm, exists] show;hide [@player, exists] show;hide
  • [petbattle] hide;show [combat][@target, harm, exists] show;hide [@target=player] show;hide

Aucune des trois commande ne fonctionne. La barre sur laquelle je fais les test s’affiche h24 dans les trois cas.

J’ai aussi essayé de rajouté « player » à la commande « [@target, harm, exists] show;hide » mais ça ne change rien du tout là

Tu étais dans la bonne voie sur la 1ère ligne :

[petbattle] hide;show [combat][@target, harm, exists] show;hide [@player] show;hide

Ça ne marche pas tout simplement parce qu’il y a un hide en trop qui coince :wink:
Tu devrais essayer :

[petbattle] hide;show [combat][@target, harm, exists] show;show [@player] show;hide

ça devrait fonctionner, mais je suis pas en jeu.

Arf non ça ne fonctionne pas. La barre reste affichée en permanence dans ce cas. Et si je reviens comme j’étais avant soit :

  • [petbattle] hide;show [combat][@target, harm, exists] show;hide

Je suis obligé de bien avoir le « hide » à la fin, sinon la barre reste affichée, ennemi en ciblage ou non

J’avais oublié un show avant le [@player], teste comme ça.

Non plus, et j’y comprends vraiment plus rien haha.

En gros, sur la commande qui fonctionne actuellement :

[petbattle] hide;show [combat][@target, harm, exists] show;hide

Je suis en train de dire que…

  • [petbattle] hide = lors d’un combat de mascotte les barres sont cachées.
  • show [combat][@target, harm, exists] show = les barres se montrent lors d’un combat

Mais j’pige pas ce que représente le « ; » et pourquoi parfois le « show/hide » est avant ou après la commande entre crochets…

Typiquement sur la ligne :

show [combat][@target, harm, exists] show

Il y a deux show avant puis après la commande entre crochet, j’arrive pas à saisir pourquoi. Et si j’ai bien pigé lorsqu’ensuite il y a le « ; » ça veut dire qu’on change de « loi » et donc écrire « hide » permet de dire que sans aucune situation décrite entre crochet, les barres se cachent ?

Le point virgule, c’est un délimiteur.
En fait, la macro teste tous les cas séquentiellement les uns à la suite des autres.

Quand un des cas est vérifié, ça applique l’action qui suit la condition, et ça sort de la chaine de test.
Si la condition n’est pas vérifiée, ça passe au test de conditions suivant, ça teste, et ainsi de suite.

Si aucune condition n’est vérifiée, ben ça applique la dernière commande du train, à savoir hide, sans test de comparaison puisqu’il n’y en a pas.

Ok ok ok… Du coup, si j’ai à peu près compris… La solution serait :

  • [petbattle] hide;[combat][@target, harm, exists] show;[@player] show;hide

Je dis donc que blabla combat de mascotte ça cache. Puis, en combat et si j’ai une cible qui est hostile et/ou qui existe, ça se montre. Je termine la formule avec un « hide » en cas de bug dans la chaîne, et je refait une séparation « ; » pour dire que la barre doit s’afficher si je me cible

Mais pourtant ça ne fait rien non plus, les barres s’affichent h24

Je n’utilise plus ElvUI depuis un bon moment, mais attention, ce type de config ne fonctionne pas de manière magique.
Ces macros sont probablement déclenchées par des Events, pour simplifier des évènement générés par le jeu, et qu’on peut utiliser pour y associer du code.
https://wow.gamepedia.com/Events

Le tout, c’est de savoir quel évènement est utilisé pour déclencher tes macros.
A mon avis, ils doivent utiliser PLAYER_TARGET_CHANGED
(https://wow.gamepedia.com/PLAYER_TARGET_CHANGED)

Ces lignes de macro que tu cites, c’est des trucs que tu ajoutes quelque part dans ta config ElvUI c’est bien ça?
Parce que même si ça ressemble à des macros WoW, ça n’en est pas directement.

Ces lignes sont mises dans des tables, et parsées par une routine interne d’ElvUI, car par ex. ces commandes hide et show, ça ne correspond à rien dans les commandes de macros, ni même de l’API Lua, du moins pas utilisé comme ça.

Pour que ce soit plus clair, sur l’UI de base par exemple, si tu veux cacher les griffons de la barre principale, tu utilises les commandes :

MainMenuBarArtFrame.LeftEndCap:Hide()
MainMenuBarArtFrame.RightEndCap:Hide()

Là, dans tes macros, y a juste hide ou show, et des conditions.
Il faudrait voir comment le code d’ElvUI parse les lignes.

Et ensuite, connaitre l’event qui va déclencher le bout de code, parce que si c’est pas PLAYER_TARGET_CHANGED mais par exemple PLAYER_ENTER_COMBAT qui est déclenché quand le perso entre en combat en mélée, ou PLAYER_REGEN_DISABLED pour tester plus généralement le passage en combat peu importe la source (plus fiable), ben évidemment que le simple fait de te self-target ne fera rien et ne déclenchera pas l’event :slight_smile:

Pour ça, il faudrait que tu poses la question sur le forum ElvUI, ou à minima sur le forum Interface Personnalisée pour avoir une aide de quelqu’un qui utilise ElvUI, ce qui n’est pas mon cas.

Et en plus là, je bosse, donc j’ai pas le temps d’installer tout le bazar pour tester héhé

Bah dis donc…

Merci pour toutes ces précisions, j’suis complètement largué mais… J’comprends dans l’ensemble.

Je vais encore me triturer les méninges et tester de demander ça dans les forums que tu as cité… En tout cas merci pour ton coup de main

EDIT : Et sinon d’après l’infobulle ElvUI c’est bien de la macro de base du jeu :
« Ceci fonctionne comme une macro, vous pouvez exécuter différentes situations pour afficher ou masquer la barre d’action différemment. Exemple : [combat] show;hide »

De rien :wink:
C’est un peu le souci avec les addons WoW, et l’API WoW en général.

C’est pas un truc très complexe au demeurant pour un coder, le langage script Lua est un langage assez simple d’accès également, mais le souci, c’est que l’API WoW est super touffue, assez mal documentée, y a des trucs partout et dans tous les sens, des cas particuliers (les fonctions protégées par ex.), qu’il y a parfois (même souvent) plusieurs moyens d’obtenir en apparence le même résultat, et qu’en plus pour les addons, ben ils sont très souvent très peu documentés donc à part prendre son tuba et ses palmes et d’aller plonger dans le code et de le lire pour comprendre comment il marche, ben y a souvent pas ou peu d’alternatives.

Pour les petits addons simples, c’est en général rapide.

Mais pour les gros machins usine à gaz avec des modules , des librairies, etc, ça devient vite un enfer de chercher à tâtons comme ça.

Déjà qu’un coder ça a déjà souvent du mal à relire son propre code (comment ça je parle de moi? :eyes: Ah ben oui en fait … :smiley:) alors relire le code d’un autre, c’est du masochisme.

Et le pire, c’est que souvent, plus le coder est doué et expérimenté, plus il va avoir tendance à compacter et imbriquer son code, et ça devient super illisible.
La performance et la compacité poussée à l’extrême, c’est souvent malheureusement l’ennemie de la lisibilité …

Juste ça, ça m’a faite tiquer.
Ça fonctionne comme, pour l’évaluation des conditions, mais ce n’est pas une véritable macro du jeu.
D’ailleurs si tu tapes ça dans une véritable macro, ça ne fait rien.

Et dans le cas de Exemple : [combat] show;hide le point virgule est juste pour donner les options possibles, il faut le lire comme [combat] show **ou** hide

Et dernière chose à tester, tu devrais tester avec [target=player] en lieu et place de [@player].
L’arobase (@) dans ce cas, c’est fait pour un mode spécial de WoW qui s’appelle le FTL, acronyme de «Focusless Targetless Leaderless» qui permet de faire fonctionner certaines fonctions spécifiques (comme le cast de certains sorts par ex.) sans assigner directement de cible.

Avec [target=player]c’est légèrement différent, et dans ce cas ça a une chance de marcher :wink:
J’espère héhé, mais c’est sans garantie

[petbattle] hide;[combat][@target, harm, exists] show;hide;[target=player] show;hide

Avec cette commande au moins, j’ai pas le « bug » de la barre affichée en permanence mais ça ne fait rien quand je me cible moi-même.

Et ok ok pour l’infobulle et les autres détails, je digère mal mais j’essai de comprendre haha

Héhé, t’inquiète pas, ça va venir, Rome ne s’est pas faite en un jour :wink:

1 mention « J’aime »