Jump to content

Cast on Object


borg333

Recommended Posts

Hi, whether there is a way to cast any spell to object with out target?

For example:

I have list of enemy players and i want to doting everyone who don't have my dots:

WoWPlayer unit = listPlayersResult.OrderBy(u => u.HealthPercent).FirstOrDefault(u => u.GetDistance <= 39);

if (dot conditions)

string tarname = unit.Name.ToString();

and then cast on object

Lua.LuaDoString("CastSpellByName(GetSpellInfo(48463), \"" + tarname + "\")"); 

I know that tarname must be player, target, raid1 e.t.c and name of target in my party, but i want to cast spells on targets wich not in my party and dont target them.

Link to comment
Share on other sites

2 hours ago, borg333 said:

Hi, whether there is a way to cast any spell to object with out target?

For example:

I have list of enemy players and i want to doting everyone who don't have my dots:

WoWPlayer unit = listPlayersResult.OrderBy(u => u.HealthPercent).FirstOrDefault(u => u.GetDistance <= 39);

if (dot conditions)

string tarname = unit.Name.ToString();

and then cast on object

Lua.LuaDoString("CastSpellByName(GetSpellInfo(48463), \"" + tarname + "\")"); 

I know that tarname must be player, target, raid1 e.t.c and name of target in my party, but i want to cast spells on targets wich not in my party and dont target them.

Hello,

// Get target
WoWUnit target = ....

// Get Spell
Spell spell = new Spell("SpellName");

// Cast on target
Lua.LuaDoString($"CastSpellByID({spell.Id}, \"{target.Name}\")");

Hope that helps.

Link to comment
Share on other sites

24 minutes ago, borg333 said:

Lua.LuaDoString($"CastSpellByID({spell.Id}, \"{target.Name}\")");

has told me that unexpected symbol $. Perhaps because I use version 3.3.5?

Has nothing todo with the game it self. You need .net framework 4.6 i think.

If you don't want to install it you can replace the line with
 

// Cast on target
Lua.LuaDoString(String.Format("CastSpellByID({0}, \"{0}\")", spell.Id, target.Name));

 

Link to comment
Share on other sites

I have .net framework  4.6.01586.

Trying to do this:

 #region DotList test
        public bool DotListtest()
        {
			Spell spell = new Spell("Moonfire");
            List<WoWPlayer> listPlayersResult = new List<WoWPlayer>();
            List<WoWPlayer> allPlayers = ObjectManager.GetObjectWoWPlayer();
            foreach (var player in allPlayers)
            {
                if (UnitCanAttack.CanAttack(player.GetBaseAddress, ObjectManager.Me.GetBaseAddress) 
                && player.IsValid 
                && player.IsAlive
                && CheckBS(player)
                && !TraceLine.TraceLineGo(player.Position)
                && (ObjectManager.Me.Guid != player.BuffCastedBy(spell.Name)))
                    listPlayersResult.Add(player);
            }
            WoWPlayer unit1 = listPlayersResult.OrderBy(u => u.HealthPercent).FirstOrDefault(u => u.GetDistance <= 39);
            
                if (unit1 != null && ObjectManager.Me.Guid != unit1.BuffCastedBy(spell.Name))
                {
                    WoWUnit target = unit1;
                    Lua.LuaDoString(String.Format("CastSpellByID({0}, \"{0}\")", spell.Id, target.Name));
                }
        return false;
        }
#endregion

and nothing happens and no errors.

Link to comment
Share on other sites

Use WoWUnit instead of WoWPlayer, then it can be used on both, enemy players or mobs.

Remove the unit.IsValid => gives problems

What is CheckBS(player) ?

Missing a return true statement in your if (unit1 != null ....

Don't make new spells all the time, define it global.

private Spell moonfire = new Spell("Moonfire");

private Spell sunfire = new Spell("Sunfire");

Then call your bool with :

public bool DotListTest(Spell spell)   //DoListTest(moonfire);

{

 

}

remove the line Spell spell = new Spell("Moonfire");

That way you can use it for any check ex Sunfire

 

Link to comment
Share on other sites

If i use  WoWUnit and trying to add in list players -> Implicit conversion of type "System.Collections.Generic.List<wManager.Wow.ObjectManager.WoWPlayer>" in "System.Collections.Generic.List<wManager.Wow.ObjectManager.WoWUnit>"  impossible

and i tryed to use WoWUnit unit = ObjectManager.GetWoWUnitHostile().OrderBy(u => u.HealthPercent).FirstOrDefault(u => u.GetDistance <= 39); and it returns only mobs

CheckBS is my bool condition. i remove CheckBS and  unit.IsValid conditions

Link to comment
Share on other sites

it was example and return true does not exists coz of testing, needs to work all the time, when it will work, i add return true. ok, i post func that works by targetting valid unit and dotting by the target:

 

        _StarFire = new Spell(48465);
		_Swarm = new Spell(48468);
		
		#region DotList no shield
        public bool DotList()
        {

            List<WoWPlayer> listPlayersResult = new List<WoWPlayer>();
            List<WoWPlayer> allPlayers = ObjectManager.GetObjectWoWPlayer();
            foreach (var player in allPlayers)
            {
                if (UnitCanAttack.CanAttack(player.GetBaseAddress, ObjectManager.Me.GetBaseAddress) 
                && player.IsAlive
                && !TraceLine.TraceLineGo(player.Position)
                && (ObjectManager.Me.Guid != player.BuffCastedBy(_MoonFire.Name) 
                || ObjectManager.Me.Guid != player.BuffCastedBy(_Swarm.Name)))
                    listPlayersResult.Add(player);
            }

            WoWPlayer unit1 = listPlayersResult.OrderBy(u => u.HealthPercent).FirstOrDefault(u => u.GetDistance <= 39);

            if (unit1 != null && ObjectManager.Me.Guid != unit1.BuffCastedBy(_MoonFire.Name))
            {
                string unitName = unit1.Name.ToString();
                Lua.LuaDoString("TargetUnit(\"" + unitName + "\")");
                _MoonFire.Launch();
            }
            if (unit1 != null && ObjectManager.Me.Guid != unit1.BuffCastedBy(_Swarm.Name))
            {
                string unitName = unit1.Name.ToString();
                Lua.LuaDoString("TargetUnit(\"" + unitName + "\")");
                _Swarm.Launch();               
            }
		return false;
        }
        #endregion

Yes, i dont use Interact.InteractGameObject(unit1.GetBaseAddress); it useless in pvp.

This DotList() works but i dont want to target unit1, i want to cast spells on unit1 like on game object. Tryed 

Lua.LuaDoString("CastSpellByName( GetSpellInfo(48468), \"" + unitName + "\")");

and

Lua.LuaDoString(String.Format("CastSpellByID({0}, \"{0}\")", _Swarm.Id, unit1.Name));

not working

Link to comment
Share on other sites

Hello, try

            wManager.Wow.Helpers.Interact.InteractGameObject(unit1.GetBaseAddress, true);
            if (wManager.Wow.ObjectManager.ObjectManager.Me.Target == unit1.Guid)
            {
                Lua.LuaDoString(String.Format("CastSpellByID({0}, 'target')", _Swarm.Id));
            }

or

            wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid = unit1.Guid;
            if (wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid == unit1.Guid)
            {
                Lua.LuaDoString(String.Format("CastSpellByID({0}, 'focus')", _Swarm.Id));
            }

or

            wManager.Wow.Helpers.Interact.InteractGameObject(unit1.GetBaseAddress, true);
            if (wManager.Wow.ObjectManager.ObjectManager.Me.Target == unit1.Guid)
            {
                wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(_StarFire.NameInGame, "target");
            }

or

            wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid = unit1.Guid;
            if (wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid == unit1.Guid)
            {
                wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(_StarFire.NameInGame, "focus");
            }

 

Link to comment
Share on other sites

If i do 

InteractGameObject(unit1.GetBaseAddress, true)

i will target 

unit1

in frame, but i want cast on enemy as focus/party1.../raid1.../ arena1... etc, without target them in frame. I know that i can focusing enemy end cast on focus but it is not a way out

Link to comment
Share on other sites

Try to use this code 

            wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid = unit1.Guid;
            if (wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid == unit1.Guid)
            {
                wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(_StarFire.NameInGame, "focus");
            }

 

Link to comment
Share on other sites

My focus is not empty,  therefore i cant use focus to target valid unit1, and thats why i ask about cast on units without target them in frame. Tell me please, whether there is a way to cast an unit as an game object and if not whether this possibility in the future for 3.3.5?

Link to comment
Share on other sites

You cannot cast spell in select player/npc directly.

Try this:

            var f = wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid;
            wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid = unit1.Guid;
            if (wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid == unit1.Guid)
            {
                wManager.Wow.Helpers.SpellManager.CastSpellByNameOn(_StarFire.NameInGame, "focus");
            }
            System.Threading.Thread.Sleep(500);
            wManager.Wow.ObjectManager.ObjectManager.Me.FocusGuid = f;

 

Link to comment
Share on other sites

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...