October 15, 201510 yr HelloJe me demandais si vous saviez pourquoi les rotations ne se declenchaient pas lorsqu'on passe en duel (en arène aussi).Une question qui ne s'est toujours pas résolue meme avec les "Attack all selected targets (friends also), option qui ne fonctionne apparemment pas dans le cas de duels.Merci encore...
October 15, 201510 yr Author Pour ma part j'ai essaye d'avancer un peu : Il en sort que pour determiner si une cible en est une, j'utilisais le bout de code suivant : if (ObjectManager.Target.Reaction <= Reaction.Neutral && wManager.Wow.Helpers.MovementManager.IsFaci.........Hors les Allies (en vert) apparaissent comme Friendly.MaisSi on passe en mode duel, l'adversaire (rouge donc) reste "Friendly" et donc la routine d'attaque ne se declenche pas.Si je fait sauter ce test, tout se passe bien.Il semble que le meme probleme affecte les arenes : Si on tombe sur un adversaire du meme camp que nous, la routine ne se declenche pas meme si l'adversaire apparait cerclé de rouge.
October 16, 201510 yr Salut,WRotation (sauf erreur de ma part) fonctionne maintenant en duel ou arene.Pour détecter si la cible actuelle est attaquable le mieux est d'utiliser lua:Lua.LuaDoString<bool>("return UnitCanAttack('player', 'target');")(si tu utilise WRotation tu peux utiliser le code "Fight.InFight" pour savoir si WRobot est en combat ou pas)
October 17, 201510 yr Author BonjourVoila mon retourRegarde ce log sur lequel j'ai fait un duel :22:20:48 - Chargement Druide PVP[D] 22:20:48 - [FSM] State wManager.Wow.Bot.States.Idle already launched, ignore it.[D] 22:20:48 - [FSM] State WRotation.Bot.EcimiuDuajolala already launched, ignore it.[D] 22:20:48 - [FSM] State wManager.Wow.Bot.States.FightHostileTarget already launched, ignore it.[D] 22:20:48 - [FSM] State wManager.Wow.Bot.States.MyMacro already launched, ignore it.[D] 22:20:48 - [FSM] State wManager.Wow.Bot.States.Pause already launched, ignore it.[F] 22:20:59 - [Spell] Cast (onself) Récupération (Rejuvenation)[F] 22:21:26 - [Spell] Cast (onself) Récupération (Rejuvenation)[F] 22:21:49 - [Spell] Cast (onself) Récupération (Rejuvenation)[F] 22:22:12 - [Spell] Cast (onself) Récupération (Rejuvenation)[F] 22:22:30 - [Spell] Cast (onself) Récupération (Rejuvenation)[F] 22:22:48 - [Spell] Cast (onself) Récupération (Rejuvenation)[F] 22:22:55 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:22:56 - [Spell] Cast Colère (Wrath)[F] 22:22:56 - [Spell] Cast Colère (Wrath)[F] 22:22:57 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:22:59 - [Spell] Cast Colère (Wrath)[F] 22:22:59 - [Spell] Cast Feu stellaire (Starfire)[F] 22:22:59 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:00 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:00 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:00 - [Spell] Cast Colère (Wrath)[F] 22:23:01 - [Spell] Cast Forme de félin (Cat Form)[F] 22:23:01 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:01 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:02 - [Spell] Cast Colère (Wrath)[F] 22:23:03 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:03 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:03 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:04 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:04 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:04 - [Spell] Cast Colère (Wrath)[F] 22:23:04 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:05 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:05 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:05 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:06 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:06 - [Spell] Cast Colère (Wrath)[F] 22:23:06 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:06 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:07 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:07 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:07 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:08 - [Spell] Cast Colère (Wrath)[F] 22:23:08 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:08 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:09 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:09 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:09 - [Spell] Cast Colère (Wrath)[F] 22:23:10 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:10 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:10 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:10 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:11 - [Spell] Cast Colère (Wrath)[F] 22:23:11 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:11 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:12 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:12 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:12 - [Spell] Cast Colère (Wrath)[F] 22:23:15 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:15 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:15 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:16 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:16 - [Spell] Cast Colère (Wrath)[F] 22:23:16 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:16 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:17 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:17 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:17 - [Spell] Cast Colère (Wrath)[F] 22:23:18 - [Spell] Cast Feu stellaire (Starfire)[F] 22:23:18 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:18 - [Spell] Cast Eruption stellaire (Starsurge)[F] 22:23:19 - [Spell] Cast Eclat lunaire (Moonfire)[F] 22:23:19 - [Spell] Cast Colère (Wrath)22:23:27 - Dispose Druide Equi22:23:27 - Session statistics:Elapsed time: 00h:02m:41sXP/HR: 0 - 0 minKills: 0 (0/hr)Deaths: 0 (0/hr)Farms: 0 (0/hr)Loots: 0 (0/hr)Money/HR: 0 G 00 S 00 C (0 G 00 S 00 C)Honor/HR: 0 (0)Apexis Crystal/HR: 0 (0) Dans ce script j'avais introduit ceci :if (!ObjectManager.Me.IsDead && !Usefuls.IsLoadingOrConnecting && Usefuls.InGame) { Defense(); if (Fight.InFight != FIGHT) { if (Fight.InFight == true) Logging.WriteDebug("Fight Infight passe a TRUE "); if (Fight.InFight == false) Logging.WriteDebug("Fight Infight passe a FALSE "); FIGHT = Fight.InFight; } //if (Fight.InFight) { Permanent(); if (ObjectManager.Target.IsAlive && !TraceLine.TraceLineGo(ObjectManager.Target.Position)) { if (wManager.Wow.Helpers.MovementManager.IsFacing(ObjectManager.Me.Position, ObjectManager.Me.Rotation, ObjectManager.Target.Position, 2.20f)) Attaque(); if ((ObjectManager.Target.Type == WoWObjectType.Player) && ObjectManager.Target.IsAlive && ObjectManager.Target.Reaction > Reaction.Neutral && (ObjectManager.Target.Health < (ObjectManager.Target.MaxHealth - (2 * SOINS)))) Heal(); } } } Comme tu peut le voir plus haut, a aucun moment le Fight.InFight n'est passe a true dans le duel face a un joueur de la meme faction.J'ai l'impression qu'il ne fonctionne pas comme il devrais. Il est vrai que parfois il bascule a true, mais c'est cet aléa qui rend wrotation peu fiable pour les duels et arenes. Edited October 18, 201510 yr by PierreDeRosette
October 21, 201510 yr Author Si tu veut on pourra se donner rdv afin de mettre cela en lumiere dans une session WOW ? On pourra se lancer des duels et observer le comportement de Fight.InFight . J'ai 4 jours de libres du 22 au 25.
October 21, 201510 yr le code "Lua.LuaDoString<bool>("return UnitCanAttack('player', 'target');")" retourne quoi en arene?ret = UnitCanAttack('player', 'target'); Edited October 21, 201510 yr by Droidz
October 21, 201510 yr Author juste que je ne sait pas insérer cela en c# sinon je l'aurai teste depuis 10 ans lol Edited October 21, 201510 yr by PierreDeRosette je le teste ce soir des que je suis chez moi
October 21, 201510 yr C'est le code C#:bool cibleAttaquable = Lua.LuaDoString<bool>("return UnitCanAttack('player', 'target')"); if (cibleAttaquable) { // ta rotation... }
October 31, 201510 yr Author Bonjour Voila mon retour : Log d'une situation de combat avec une bestiole : [F] 15:24:48 - [Spell] Cast Lambeau (Shred) [F] 15:24:48 - [Spell] Cast Lambeau (Shred) [E] 15:24:49 - Engagement : True [E] 15:24:49 - InCombat : True [E] 15:24:49 - InFight : False [E] 15:24:49 - return UnitCanAttack... : True [F] 15:24:49 - [Spell] Cast Fureur du tigre (Tiger's Fury) [F] 15:24:49 - [Spell] Cast Déchirure (Rip) [F] 15:24:49 - [Spell] Cast Lambeau (Shred) [F] 15:24:50 - [Spell] Cast Forme de félin (Cat Form) Portion de script utilisée pour le test : if (_Rapport2.IsReady) { Logging.WriteError("Engagement : " + Engage); Logging.WriteError("InCombat : " + ObjectManager.Me.InCombat); Logging.WriteError("InFight : " + Fight.InFight); Logging.WriteError("return UnitCanAttack... : " + cibleAttaquable); _Rapport2 = new Timer(1000); } Comme tu le voit, de tout le marqueurs de combat, c'est Fight.InFight qui ne semble pas réagir normalement Sinon je ne voit pas la signification et la différence de InCombat par rapport a Infight. Pour en revenir sur bool cibleAttaquable = Lua.LuaDoString<bool>("return UnitCanAttack('player', 'target')"); Cela fonctionne très bien....a condition d'avoir une cible. (Engage est une methode artisanale de ma confection qui signifie qu'on a engagé le premier coup - Tres utile pour les attaque sournoise des voleurs dont la premiere frappe portée doit etre absolument ambush et pour les druides feral dissimulés dont la premiere frappe doit absolument etre Rake)
October 31, 201510 yr "Fight.InFight" retourne "true" quand WRobot est lui-même en combat (qu'il a fait Fight.StartFight(...)), rien à voir avec ce qui ce passe dans wow, WRobot peut être InFight alors que le combat n'a pas encore commencé (il est InFight dès qu'il a choisi la cible (par exemple dans le bot "Grinder", par en étape par étape ca donne: Recherche de la cible > On utilise la fonction Fight.StartFight(...) (InFight = true) > On va vers la cible > Sélection de la cible (ciblage, on clique dessus) > Lance le premier sort des que le joueur est à portée > combat > cible morte > sort de la fonction StartFight(...) (InFight = false)). InCombat, lui vérifie plusieurs éléments: Que le joueur n’est pas mort. Que le portrait du joueur clignote rouge (Me.InCombatFlagOnly). Recherche dans la liste des objets les units qui ont pour cible le joueur, ou le pet du joueur, ou un membre du groupe. UnitCanAttack est limité comme tu le dis, car il faut que le joueur ait pour cible l'unit, c'est à faire en dernier, avant de lancer la rotation, pour vérifier si la cible est bien attaquable.
October 31, 201510 yr Author Le seul hic c'est qu'en combat vs un player de la meme alliance (duel ou arene), ObjectManager.Me.InCombat qui devient donc le parametre le plus interressant ne passe pas a true => Il faut donc un mix entre ObjectManager.Me.InCombat et bool cibleAttaquable = Lua.LuaDoString<bool>("return UnitCanAttack('player', 'target')"); afin d'etre efficace.
Create an account or sign in to comment