Mordark
Community Developer
- Joined
- Mar 31, 2014
- Messages
- 291
- Reaction score
- 4
I've been playing a stone arrow and have written this for combos, so here is what I have so far:
Build:
ArcheAge Builder - Arche-Base
Key Feature:
Eureka! I've done it! This plugin will not force your character to follow the target after it engages, so if you clear your target it will STOP.
This plugin does not chase anything if you deselect your target.
Features:
Updated version. Will follow an enemy until You can't cast Stalker's mark on them at 33m. Or until you clear the target.
No movement version:
This one will not EVER move on its own. (unless you count Overwhelm and Drop Back)
The Gladiator Edition works based on if your target is in your party or not. Just be careful not to use this outside of arenas.
Fight4Me - StoneArrow - Gladiator Edition
Tips are greatly appreciated:
Update:
Implementing the PVP function into a widget. Uploading either today or in the next few days.
Build:
ArcheAge Builder - Arche-Base
Key Feature:
Eureka! I've done it! This plugin will not force your character to follow the target after it engages, so if you clear your target it will STOP.
This plugin does not chase anything if you deselect your target.
Features:
- will NOT loot
- will NOT clear your target if it dropped loot.
- will NOT cast Drop Back if the target was killed by Overwhelm (looked bot-ish otherwise)
- will cast combos
- will NOT cast buffs
- will NOT cast Boneyard
- will cast Revitalizing Cheer and Redoubt when health gets low
Updated version. Will follow an enemy until You can't cast Stalker's mark on them at 33m. Or until you clear the target.
Code:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;
namespace Follower
{
public class Fight4Me : Core
{
public static string GetPluginAuthor()
{
return "Mordark";
}
public static string GetPluginVersion()
{
return "0.1.5";
}
public static string GetPluginDescription()
{
return "Fight4Me for StoneArrows";
}
public void UseSkillAndWait(string skillName, bool selfTarget = false)
{
while (me.isCasting || me.isGlobalCooldown)
{
Thread.Sleep(50);
}
if (!UseSkill(skillName, true, selfTarget))
{
while (me.target != null && dist(me.target) < 35 && GetLastError() == LastError.NoLineOfSight)
{
if (dist(me.target) <= 5)
{
do
{
ComeTo(me.target, 2);
} while (me.target != null && dist(me.target) <= 5);
}
else if (dist(me.target) <= 10)
{
do
{
ComeTo(me.target, 3);
} while (me.target != null && dist(me.target) <= 10);
}
else if (dist(me.target) < 20)
{
do
{
ComeTo(me.target, 8);
}while (me.target != null && dist(me.target) < 20);
}
else if (dist(me.target) > 33)
{
CancelTarget();
}
else
CancelTarget();
}
}
while (me.isCasting || me.isGlobalCooldown)
{
Thread.Sleep(50);
}
}
public void PluginRun()
{
while (true)
{
while (me.target == null)
{
Thread.Sleep(50);
}
while (me.target != null && dist(me.target) < 35)
{
if(isAttackable(me.target) && isEnemy(me.target))
{
do
{
if (angle(me.target, me) > 45 && angle(me.target, me) < 315)
{
TurnDirectly(me.target);
}
if (hpp(me) <= 40 && skillCooldown("Revitalizing Cheer") == 0)
{
UseSkillAndWait("Revitalizing Cheer", true);
Thread.Sleep(50);
if (skillCooldown("Redoubt") == 0)
{
UseSkillAndWait("Redoubt", true);
Thread.Sleep(100);
}
}
if (skillCooldown("Intensity") == 0)
{
UseSkillAndWait("Intensity", true);
Log("Used: Intensity");
Thread.Sleep(100);
}
if(dist(me.target) <= 3 && skillCooldown("Overwhelm") == 0 && skillCooldown("Drop Back") == 0)
{
UseSkillAndWait("Overwhelm");
Log("Used: Overwhelm");
Thread.Sleep(50);
if(me.target != null && isAlive(me.target))
{
UseSkillAndWait("Drop Back");
Log("Used: Drop Back");
Thread.Sleep(50);
}
}
if (skillCooldown("Stalker's Mark") == 0)
{
UseSkillAndWait("Stalker's Mark");
Log("Used: Stalker's Mark");
Thread.Sleep(100);
}
if (skillCooldown("Concussive Arrow") == 0)
{
UseSkillAndWait("Concussive Arrow");
Log("Used: Concussive Arrow");
Thread.Sleep(100);
}
if (skillCooldown("Toxic Shot") == 0)
{
UseSkillAndWait("Toxic Shot");
Log("Used: Toxic Shot");
Thread.Sleep(100);
}
if (skillCooldown("Piercing Shot") == 0)
{
UseSkillAndWait("Charged Bolt");
Log("Used: Charged Bolt");
Thread.Sleep(100);
UseSkillAndWait("Piercing Shot");
Log("Used: Piercing Shot");
Thread.Sleep(100);
}
if (skillCooldown("Endless Arrows") == 0)
{
UseSkillAndWait("Endless Arrows");
Log("Used: Endless Arrows");
Thread.Sleep(50);
}
}while(me.target != null && isAlive(me.target));
if (me.target != null && !isAlive(me.target) && !me.target.dropAvailable)
{
CancelTarget();
}
}
}
}
}
}
}
No movement version:
This one will not EVER move on its own. (unless you count Overwhelm and Drop Back)
Code:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;
namespace Follower
{
public class Fight4Me : Core
{
public static string GetPluginAuthor()
{
return "Mordark";
}
public static string GetPluginVersion()
{
return "0.1.5";
}
public static string GetPluginDescription()
{
return "Fight4Me for StoneArrows";
}
public void UseSkillAndWait(string skillName, bool selfTarget = false)
{
while (me.isCasting || me.isGlobalCooldown)
{
Thread.Sleep(50);
}
if (!UseSkill(skillName, false, selfTarget))
{
while (me.isCasting || me.isGlobalCooldown)
{
Thread.Sleep(50);
}
}
}
public void PluginRun()
{
while (true)
{
while (me.target == null)
{
Thread.Sleep(50);
}
while (me.target != null && dist(me.target) < 35)
{
if(isAttackable(me.target) && isEnemy(me.target))
{
do
{
if (angle(me.target, me) > 45 && angle(me.target, me) < 315)
{
TurnDirectly(me.target);
}
if (hpp(me) <= 40 && skillCooldown("Revitalizing Cheer") == 0)
{
UseSkillAndWait("Revitalizing Cheer", true);
Thread.Sleep(50);
if (skillCooldown("Redoubt") == 0)
{
UseSkillAndWait("Redoubt", true);
Thread.Sleep(100);
}
}
if (skillCooldown("Intensity") == 0)
{
UseSkillAndWait("Intensity", true);
Log("Used: Intensity");
Thread.Sleep(100);
}
if(dist(me.target) <= 3 && skillCooldown("Overwhelm") == 0 && skillCooldown("Drop Back") == 0)
{
UseSkillAndWait("Overwhelm");
Log("Used: Overwhelm");
Thread.Sleep(50);
if(me.target != null && isAlive(me.target))
{
UseSkillAndWait("Drop Back");
Log("Used: Drop Back");
Thread.Sleep(50);
}
}
if (skillCooldown("Stalker's Mark") == 0)
{
UseSkillAndWait("Stalker's Mark");
Log("Used: Stalker's Mark");
Thread.Sleep(100);
}
if (skillCooldown("Concussive Arrow") == 0)
{
UseSkillAndWait("Concussive Arrow");
Log("Used: Concussive Arrow");
Thread.Sleep(100);
}
if (skillCooldown("Toxic Shot") == 0)
{
UseSkillAndWait("Toxic Shot");
Log("Used: Toxic Shot");
Thread.Sleep(100);
}
if (skillCooldown("Piercing Shot") == 0 && skillCooldown("Charged Bolt") == 0)
{
UseSkillAndWait("Charged Bolt");
Log("Used: Charged Bolt");
Thread.Sleep(100);
UseSkillAndWait("Piercing Shot");
Log("Used: Piercing Shot");
Thread.Sleep(100);
}
if (skillCooldown("Endless Arrows") == 0)
{
UseSkillAndWait("Endless Arrows");
Log("Used: Endless Arrows");
Thread.Sleep(50);
}
}while(me.target != null && isAlive(me.target));
if (me.target != null && !isAlive(me.target) && !me.target.dropAvailable)
{
CancelTarget();
}
}
}
}
}
}
}
The Gladiator Edition works based on if your target is in your party or not. Just be careful not to use this outside of arenas.
Fight4Me - StoneArrow - Gladiator Edition
Code:
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;
using System.Collections.Generic;
using System.Linq;
using ArcheBuddy.Bot.Classes;
namespace Follower
{
public class Fight4Me : Core
{
public static string GetPluginAuthor()
{
return "Mordark";
}
public static string GetPluginVersion()
{
return "0.1.5";
}
public static string GetPluginDescription()
{
return "Fight4Me for StoneArrows - Gladiator Edition";
}
public void UseSkillAndWait(string skillName, bool selfTarget = false)
{
while (me.isCasting || me.isGlobalCooldown)
{
Thread.Sleep(50);
}
if (!UseSkill(skillName, false, selfTarget))
{
while (me.isCasting || me.isGlobalCooldown)
{
Thread.Sleep(50);
}
}
}
public void PluginRun()
{
while (true)
{
while (me.target == null)
{
Thread.Sleep(50);
}
while (me.target != null && dist(me.target) < 35)
{
if(!isInMyPartyGroup(me.target))
{
do
{
if (angle(me.target, me) > 45 && angle(me.target, me) < 315)
{
TurnDirectly(me.target);
}
if (hpp(me) <= 40 && skillCooldown("Revitalizing Cheer") == 0)
{
UseSkillAndWait("Revitalizing Cheer", true);
Thread.Sleep(50);
if (skillCooldown("Redoubt") == 0)
{
UseSkillAndWait("Redoubt", true);
Thread.Sleep(100);
}
}
if (skillCooldown("Intensity") == 0)
{
UseSkillAndWait("Intensity", true);
Log("Used: Intensity");
Thread.Sleep(100);
}
if(dist(me.target) <= 3 && skillCooldown("Overwhelm") == 0 && skillCooldown("Drop Back") == 0)
{
UseSkillAndWait("Overwhelm");
Log("Used: Overwhelm");
Thread.Sleep(50);
if(me.target != null && isAlive(me.target))
{
UseSkillAndWait("Drop Back");
Log("Used: Drop Back");
Thread.Sleep(50);
}
}
if (skillCooldown("Stalker's Mark") == 0)
{
UseSkillAndWait("Stalker's Mark");
Log("Used: Stalker's Mark");
Thread.Sleep(100);
}
if (skillCooldown("Concussive Arrow") == 0)
{
UseSkillAndWait("Concussive Arrow");
Log("Used: Concussive Arrow");
Thread.Sleep(100);
}
if (skillCooldown("Toxic Shot") == 0)
{
UseSkillAndWait("Toxic Shot");
Log("Used: Toxic Shot");
Thread.Sleep(100);
}
if (skillCooldown("Piercing Shot") == 0 && skillCooldown("Charged Bolt") == 0)
{
UseSkillAndWait("Charged Bolt");
Log("Used: Charged Bolt");
Thread.Sleep(100);
UseSkillAndWait("Piercing Shot");
Log("Used: Piercing Shot");
Thread.Sleep(100);
}
if (skillCooldown("Endless Arrows") == 0)
{
UseSkillAndWait("Endless Arrows");
Log("Used: Endless Arrows");
Thread.Sleep(50);
}
}while(me.target != null && isAlive(me.target));
if (me.target != null && !isAlive(me.target) && !me.target.dropAvailable)
{
CancelTarget();
}
}
}
}
}
}
}
Tips are greatly appreciated:

Update:
Implementing the PVP function into a widget. Uploading either today or in the next few days.
Last edited: