Jump to content

Talamin

Elite user
  • Posts

    329
  • Joined

  • Last visited

Posts posted by Talamin

  1. 13 minutes ago, jiraiyasm said:

    hi

    anyone can help me have the correct setting for the fight class im making please. my FC doesn't cast Corruption because it already sees another lock's corruption as it's own. I highlighted the possible line that needs to be changed to it will buff Corruption to it's target. Thank you.

     

    if (Corruption.IsSpellUsable && Corruption.KnownSpell && Corruption.IsDistanceGood && SpellManager.GlobalCooldownTimeLeft() == 0 && !ObjectManager.Target.Rooted 
                && !ObjectManager.Target.HaveBuff("Corruption") && ObjectManager.Me.HaveBuff("Life Tap"))
            {
                Corruption.Launch();
                return;
            }

    Add something like this, but you should think about moving all the casting checks into one Function and do the Checks only once.
     

    if (Corruption.IsSpellUsable && Corruption.KnownSpell && Corruption.IsDistanceGood && SpellManager.GlobalCooldownTimeLeft() == 0 && !ObjectManager.Target.Rooted && ObjectManager.Me.HaveBuff("Life Tap")) 			
                {
      				if(!DebuffCheckOwner("Corruption")
                       {
                          Corruption.Launch();
                          return;                   
                       }
                }
                       
    public static bool DebuffCheckOwner(Spell spell, bool owner = true)
                       {
                         List<Aura> DebuffList = ObjectManager.Target.GetAllBuff();
                         Aura aura = null;
                         if (owner)
                         {
                           aura = DebuffList.FirstOrDefault(s => s.GetSpell.Name == spell.Name && s.Owner == ObjectManager.Me.Guid);
                           if (aura != null)
                           {
                             return true;
                           }
                         }
                         return false;
                       }

     

  2. hmm, your Spells have a Base Damage per Tick. 

    I would take the Basedamage and compare it to the actual health. Let´s say you have a Target with 1000 Health, but the Basedamage of your ShadowWord: Pain is 300 per Tick (total of 5 Ticks) it´s not worth to cast it. On the other side, when you "wand" the target down like every SPriest does while leveling, a DoT comes in Hand. So in General, there are different Ways to Achieve what you want:
    1. Read the dmg Output out of Combatlog of the Spell you desire and compare this against the enemy health
    2. Calculate the Base Damage of the Spell you want to see and compare this against the enemy health
    3. Limit your Dot´s, compared to the Health again, flat to the kind of Mob you are Facing (Normal Grind, Trash in Dungeon, Bossfight in Dungeon)

    4. Maybe some more...

    Actually i try to understand the Point of the Addon above. In the AIO we did Point 3. We checked for the kind of Target we have actually and this is the Trigger for the Rotation. Like in ShadowWord:Pain (Bossfight: Ignore Health, Trashmobs in Dungeon: 5%, Grindmobs outside Dungeon 30% <-- Because we Wand them down). 

    Hope i could give you a rough idea what i am talking about. If you need something more specific, let me know.

  3. It could be that you will face some new Problems here and there. The Movement is called on several points inside Quester/Grinder and other Products. The only reliable way is to use your own product where you have full control over your movement (for example if you want to use keystroke movement instead of ctm).

  4. 3 hours ago, Remkoz01 said:

    i understand that but the thing is i want to take control of the bot combat movement.Instead of letting the bot move to target i want my own move to target logic and no i dont want XML file i prefer raw C# code which i can have full control of my stuff.Btw i dont want to use the MovementPulse event which i think is a bad idea because it might cause some issue.I guess the only way to do that is probably replace the farming state with ur own state.

     

    exactly, if you want control over the incombat movement without depending on the standard movement you have to build your own combat state where you can handle the movement to the target, after engaging combat.

  5. On 5/26/2021 at 7:28 PM, ynphea said:

    Well finaly i coded this one, seems simpler and works well

     

     

    Still have one problem, how to dynamicaly change the target in fight to the _mainTank now ? For exemple the tank changes target mid fight.

    @Ordush you said 

    So is this even possible after all ? Or how do I stop the current combat

    As Ordush said, you only will be able to Assist the "Tank" if he is a Warrior and only one Warrior. If it is your own preset group you should be fine.

    If you want to handle Target switching in Combat, it would be the best to add it to the OnFightLoop like Ordush said too. Take a look in the Fightclass Section, there you find some examples how to handle Combat MidFight. Alternatively you can check in your FC Pulse if the Target of your Tank is the same as yours, and if not then change it.

  6. I only can recommend to use less LUA, as  Matenia said, LUA can slow down your Rotation a lot if you don´t use it correct or unneeded.

    Let the Debug Output stay in wrobot like Logging.Write().

    I can recommend to take a look how Matenia handled Stuff in his free Framework for Developers which he posted on Wrobot.

  7. So, assuming you use wrotation you can do something like this to get the Tankname:

            public static string LUAGetTankName()
            {
                return Lua.LuaDoString<string>(@"
                                for i = 1, 4 do 
                                    local isTank,_,_ = UnitGroupRolesAssigned('party' .. i)
                                    if isTank then
                                        name, realm = UnitName('party' .. i)
                                        return name;
                                    end
                                end");
            }

    With this you get the Tank name.

    Then you can use ObjectManager.GetObjectWoWPlayer().FirstOrDefault(p => p.Name == Tankname) and store it in a variable.

    With this you have the Basic to Assist the Tank, Ignore the TankTarget and much more. Same goes for every Member in the Group. But be aware that the  LUA only works after you joined the  Dungeon through  Dungeonfinder. If you don´t use Dungeonfinder you have to set the Tank by yourself.

    If you need more Help, or have more Questions feel free todo so.

    Sometimes it would help more to post the part of the  Code where you struggle, this helps more then describing the things ?

     

  8. Do you use a specific FC or do you build your own?

    1. You have to differentiate between auto  Choosing Targets (handled by the  Product) or you choose manual a Target. Which one is the case?

    2. You can store a guid into a Variable or set an FocusTarget or Filter through Enemies and so on. You should be a little bit more specific.

    3. This is something which should be handled by the Product (or the  FC if you make your own).

    4. Again, this is something the FC you use handles.

     

    Overall everything you mentioned is doing (with less effort in C#).

  9. If you use the Updater through Teamviewer or something like this, the Screen will go black. If you then just hop on your PC you will see that the Updater started normally. Have the same problem since a long time and the only fix for this is to hop on the PC and do it one Time without the Updater. Or you dl it on your normal machine and push it over to the Remote PC

×
×
  • Create New...