Jump to content

some problems with party bot in openpvp


phoenix222
 Share

Recommended Posts

hello, i wanna use the party bot in openpvp and already created some fightclasses myself for this purpose, which also work so far quite good, but im currently dealing with the following problems i dont know how to solve:


1. in DPS (range spec) mode, the bot keeps chasing enemy targets when they are out of range, i want it even in combat to keep following the player/partyleader defined at "follow by player name" and not chase players.

2. in Healer mode, the bot stops following the player/partyleader defined at "follow by player name" as soon as it gets into combat. i want it to keep following him even in combat.

3. in openpvp combat, the dps bot sometimes keeps targeting and trying to attack neutral players (which is impossible) who have set their pvp status to inactive. it mostly happens when the neutral player is currently fighting against someone/something (for example dueling another neutral player).

4. the bot keeps targeting and attacking players randomly (who are attacking the bot). i want the bot to swap to the partyleader/player defined at "follow by player name" his target, when he is attacking it.

5. at the healer fightclass, resurrection just wont work. i have added the resurrection spell, changed spell settings: "combat only" "false"; "for friends (party)" "true" and added spell conditions: "target health percent" "equal 0"; "target distance" "smallerorequal 40"; "me in combat" "false"
but when a group member died and the healer bot is out of combat, it still wont start resurrecting.

has anybody got an idea how to solve them?

 

Link to comment
Share on other sites

Hello,

1: You can use this plugin to stop fight: http://wrobot.eu/files/file/650-party-chat-command/ (Add command with this c# code: 

wManager.Wow.Helpers.Fight.StopFight(); wManager.Wow.Helpers.MovementManager.StopMove();

).

2 & 3: I'll check it.

4: You can disable option to help party member in advanced general settings and, in plugin chat command... and use this c# code to attack current group leader target: 

if (wManager.Wow.Helpers.Party.IsInGroup()) { wManager.Wow.Helpers.Fight.StartFight(new wManager.Wow.ObjectManager.WoWPlayer(wManager.Wow.ObjectManager.ObjectManager.GetObjectByGuid(wManager.Wow.Helpers.Party.GetPartyLeaderGUIDHomeAndInstance()).GetBaseAddress).TargetObject.Guid); }

5: Sorry, dead units(players) are not supported. To it, you need to create fightclass in c# (or vb.net).

 

ps: You can found some codes for plugin here: http://wrobot.eu/forums/topic/2834-command-to-party-by-party-chat

Link to comment
Share on other sites

Quote

1: You can use this plugin to stop fight: http://wrobot.eu/files/file/650-party-chat-command/ (Add command with this c# code: 

wManager.Wow.Helpers.Fight.StopFight(); wManager.Wow.Helpers.MovementManager.StopMove();

according to the wrobot log the commands get executed, but the bot still keeps chasing and attacking with combat routine, it doesnt make it stop fighting or moving on execution as it should.

the same thing is when pressing the "stop move" and "stop fight" buttons under the tools tab at the bot window, doesnt work too.

 

is there really now way to disable the chase behavior and replace it with just keep following groupleader? and stop attacking as soon as a target gets out of range? and automatically attack attackable (player) targets who get in range? is there any programming way to change this combat behavior?

 

Quote

4: You can disable option to help party member in advanced general settings and, in plugin chat command... and use this c# code to attack current group leader target: 

if (wManager.Wow.Helpers.Party.IsInGroup()) { wManager.Wow.Helpers.Fight.StartFight(new wManager.Wow.ObjectManager.WoWPlayer(wManager.Wow.ObjectManager.ObjectManager.GetObjectByGuid(wManage

 

also here, when running this code and the bot is already attacking someone it doesnt swap to the partyleaders target. when the bot is out of combat and not attacking anyone yet, the code works fine and the bot starts attacking the partyleaders target.

 

and i got some other questions: 1. how to prevent the bot from attacking enemy player's pets?

2. is it possible to implement a wait time between character death and spirit release? because if the bot dies up in the air while sitting on a fly mount, it releases the spirit so fast that the corpse stays in the air and can not be reached anymore for resurrect.

 

Link to comment
Share on other sites

My code didn't work properly so i gotta work on it when i got time but here is code from my druid profile. It won't work like this but if you know something about programming you should be able to get this working

 

var resAll = getPartymembers().Where(o => o.IsValid && o.IsDead && !TraceLine.TraceLineGo(o.Position)).OrderBy(o => o.GetDistance);
if (resAll.Count() > 0)
{
	var u = resAll.First();
	WoWPlayer all = new WoWPlayer(u.GetBaseAddress);
	if (!TraceLine.TraceLineGo(all.Position) && all.IsDead)
	{
		Interact.InteractGameObject(all.GetBaseAddress, false);
		_rebirth.Launch();
		return true;
	}
}

 

Link to comment
Share on other sites

Its just a quick post but hope it helps

            // Get dead party member
            IEnumerable<WoWPlayer> partyMember = Party.GetParty().Where(p => p.IsValid && p.IsDead && !TraceLine.TraceLineGo(p.Position) && p.GetDistance < 30).OrderBy(p => p.GetDistance);

            // Process each player
            foreach(WoWPlayer player in partyMember)
            {
                Interact.InteractGameObject(player.GetBaseAddress, false);
                _rebirth.Launch();
            }

            return true;

If you dont want to target each player here the lua example

Lua.LuaDoString($"CastSpellByID({_rebirth.Id}, \"{player.Name}\")");

Instead of:

Interact.InteractGameObject(all.GetBaseAddress, false);
_rebirth.Launch();

 

Link to comment
Share on other sites

1 hour ago, iMod said:

Its just a quick post but hope it helps

            // Get dead party member
            IEnumerable<WoWPlayer> partyMember = Party.GetParty().Where(p => p.IsValid && p.IsDead && !TraceLine.TraceLineGo(p.Position) && p.GetDistance < 30).OrderBy(p => p.GetDistance);

            // Process each player
            foreach(WoWPlayer player in partyMember)
            {
                Interact.InteractGameObject(player.GetBaseAddress, false);
                _rebirth.Launch();
            }

            return true;

If you dont want to target each player here the lua example

Lua.LuaDoString($"CastSpellByID({_rebirth.Id}, \"{player.Name}\")");

Instead of:

Interact.InteractGameObject(all.GetBaseAddress, false);
_rebirth.Launch();

 

this won't work for rebirth because it has cooldown but resurrecting should work with this code

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
 Share

×
×
  • Create New...