Jump to content

Recommended Posts

Hello

 

I'm looking for a tip to :

 

Attack only a player Target. I have that to avoid neutral targets :

if (ObjectManager.Target.IsValid && ObjectManager.Target.Reaction <= Reaction.Neutral && UnitCanAttack.CanAttack(ObjectManager.Target.GetBaseAddress, ObjectManager.Me.GetBaseAddress))

Perhaps we can do better to test if a target is an hostile Player ?

 

---------------------------------------------------------------------------------------------

 

Anymore, is there a code to target "ObjectManager.Me.Target" ?

 

 

I've tryed this :

Interact.InteractGameObject(ObjectManager.Me.GetBaseAddress);

but  we can't adapt this with "ObjectManager.Me.Target"

 

So perhaps you have another solution ?

 

Instead of that i use a Lua code to scan targets \targetEnnemyPlayer until obtain the good target. It's not the best choice.

 

Thank you very much :)))

Link to comment
https://wrobot.eu/forums/topic/1547-hi-have-you-an-easy-tip-for/
Share on other sites

Hello,

 

To get if it is enemy player:

        if (ObjectManager.Target.Type == WoWObjectType.Player)
        {
            if (((WoWPlayer) ObjectManager.Target).PlayerFaction != ObjectManager.Me.PlayerFaction)
            {
                // Is enemy player
            }
        }

To interact with your current target (this is useless because it is already your target):

Interact.InteractGameObject(ObjectManager.Target.GetBaseAddress);

I ignore exactly what is your objective, but if you want search and interact with an enemy player you can use code like:

        List<WoWPlayer> enemyPlayerList;

        if (ObjectManager.Me.IsAlliance)
            enemyPlayerList = ObjectManager.GetWoWUnitHorde();
        else
            enemyPlayerList = ObjectManager.GetWoWUnitAlliance();

        WoWPlayer nearestPlayerEnemy = ObjectManager.GetNearestWoWPlayer(enemyPlayerList);

        if (nearestPlayerEnemy.IsValid && nearestPlayerEnemy.IsAlive && nearestPlayerEnemy.GetDistance < 150)
        {
            Interact.InteractGameObject(nearestPlayerEnemy.GetBaseAddress);

            if (ObjectManager.Me.Target == nearestPlayerEnemy.Guid)
            {
                // OK
            }
        }

To get the nearest attackable NPC:

        List<WoWUnit> unitList = ObjectManager.GetObjectWoWUnit();
        List<WoWUnit> enemyUnitList = new List<WoWUnit>();

        foreach (var woWUnit in unitList)
        {
            if (woWUnit.IsValid && woWUnit.IsAlive && woWUnit.Reaction <= Reaction.Neutral && UnitCanAttack.CanAttack(woWUnit.GetBaseAddress, ObjectManager.Me.GetBaseAddress))
                enemyUnitList.Add(woWUnit);
        }

        WoWUnit nearestUnitEnemy = ObjectManager.GetNearestWoWUnit(enemyUnitList);

        if (nearestUnitEnemy.IsValid && nearestUnitEnemy.IsAlive && nearestUnitEnemy.GetDistance < 150)
        {
            Interact.InteractGameObject(nearestUnitEnemy.GetBaseAddress);

            if (ObjectManager.Me.Target == nearestUnitEnemy.Guid)
            {
                // OK
            }
        }

Hi and thank you very much for your very quick answer.

 

Yes perhaps you need more informations but you gived me the right answer.

 

I'm working for a script

 

-On battlegrounds a list of ennemy players is build and always updated with their Pv

-If several members of this list are at good range, the choosed target will be the lesser PV target and the choosed target will be always targeted first

 

That's why i need this code to target something with his ID.

 

:))

 

I just want to be more efficient and sometimes to be efficient we must choose the right target.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...