pikachu2003
New Member
- Joined
- Jun 11, 2012
- Messages
- 205
No api yet for party members. Going to do a release today and that will be in the next version.
Okay great! Can't wait to try out the new version!
No api yet for party members. Going to do a release today and that will be in the next version.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using ff14bot;
using ff14bot.Enums;
using ff14bot.Managers;
using ff14bot.Navigation;
using ff14bot.Objects;
using TreeSharp;
using Action = TreeSharp.Action;
namespace Kupo.Rotations
{
public class PugilistMonk : KupoRoutine
{
public override int PullRange
{
get { return 5; }
}
public override ClassJobType[] Class
{
get { return new ClassJobType[]{ClassJobType.Monk, ClassJobType.Pugilist, };}
}
protected override Composite CreatePull()
{
return new PrioritySelector(
r => Actionmanager.InSpellInRangeLOS("Bootshine", Core.Target),
new Decorator(r => (r as SpellRangeCheck?) == SpellRangeCheck.ErrorNotInRange, new Action(r => Navigator.MoveTo(Core.Target.Location))),
Cast("Bootshine", r => (r as SpellRangeCheck?) == SpellRangeCheck.Success || (r as SpellRangeCheck?) == SpellRangeCheck.ErrorNotInFront)
);
}
protected override Composite CreateCombat()
{
return new PrioritySelector(
Cast("Snap Punch", r => Actionmanager.LastSpell.Name == "Twin Snakes"),
Cast("Twin Snakes", r => Actionmanager.LastSpell.Name == "Bootshine"),
Cast("Bootshine", r=> true)// r => Actionmanager.LastSpellId == 0 || Actionmanager.LastSpell.Name == "Snap Punch" )
);
}
protected override Composite CreateBuffs()
{
return new PrioritySelector(
Apply("Internal Release", r => !Core.Player.HasAura("Internal Release"),r=> Core.Player)
);
}
protected override Composite CreateHeal()
{
return new PrioritySelector(
Cast("Strong Wind", r => Core.Player.HealthPercent <= 70, r => Core.Player)
);
}
}
}
Oh dearFigured out why its not healing for you, you spelt "Physick" wrong.
Overall:
Reworked mesh navigation system, old mesh profiles will no longer work and will need to be recreated.
Replaced many small memory reads in a row with one large read to improve performance
Color current target on the radar a different color
Added API to access current Pet for arcanists
Sprinkle more diagnostic output all over the place.
Fix radar now showing nodes when using a gathering class.
Grindbot:
Only be interested in targets that are visible to us (hopefully)
Kupo:
Updated Blackmage+Thaum,Maurder+Warrior, and Conj+Whitemage with input from Close0
Arcanist will now heal its self and its pet if it gets low
Prolly more stuff I forgot.
I used the other rotations to make a PugilistMonk one.
It works good for basic attack, but its not using the full rotation, only Bootshine, will not go into Twin Snakes.
It wont use Internal or Strong Wind, could you tell me whats wrong?
It seems as if sometimes actions caches are not built at the beginning... Twin Snakes and Snap Punch end up missing usually.
Code:using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; using ff14bot; using ff14bot.Enums; using ff14bot.Managers; using ff14bot.Navigation; using ff14bot.Objects; using TreeSharp; using Action = TreeSharp.Action; namespace Kupo.Rotations { public class PugilistMonk : KupoRoutine { public override int PullRange { get { return 5; } } public override ClassJobType[] Class { get { return new ClassJobType[]{ClassJobType.Monk, ClassJobType.Pugilist, };} } protected override Composite CreatePull() { return new PrioritySelector( r => Actionmanager.InSpellInRangeLOS("Bootshine", Core.Target), new Decorator(r => (r as SpellRangeCheck?) == SpellRangeCheck.ErrorNotInRange, new Action(r => Navigator.MoveTo(Core.Target.Location))), Cast("Bootshine", r => (r as SpellRangeCheck?) == SpellRangeCheck.Success || (r as SpellRangeCheck?) == SpellRangeCheck.ErrorNotInFront) ); } protected override Composite CreateCombat() { return new PrioritySelector( Cast("Snap Punch", r => Actionmanager.LastSpell.Name == "Twin Snakes"), Cast("Twin Snakes", r => Actionmanager.LastSpell.Name == "Bootshine"), Cast("Bootshine", r=> true)// r => Actionmanager.LastSpellId == 0 || Actionmanager.LastSpell.Name == "Snap Punch" ) ); } protected override Composite CreateBuffs() { return new PrioritySelector( Apply("Internal Release", r => !Core.Player.HasAura("Internal Release"),r=> Core.Player) ); } protected override Composite CreateHeal() { return new PrioritySelector( Cast("Strong Wind", r => Core.Player.HealthPercent <= 70, r => Core.Player) ); } } }
How far does the radar recognize mobs? I was thinking that I could make waypoints for FATEs and just add their creature name to the list.
Though I do learn fast, I have not much idea how to use these codes. So if I could help with something like running around perfecting waypoints for FATEs, then I would.
Great work anyway, thanks.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ff14bot;
using ff14bot.Enums;
using ff14bot.Managers;
using ff14bot.Navigation;
using TreeSharp;
using Action = TreeSharp.Action;
namespace Kupo.Rotations
{
public class ArcherBard : KupoRoutine
{
public override int PullRange
{
get { return 20; }
}
public override ClassJobType[] Class
{
get { return new ClassJobType[]{ClassJobType.Archer, ClassJobType.Bard, };}
}
protected override Composite CreatePull()
{
return new PrioritySelector(
r=> Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target),
new Decorator(r => (r as SpellRangeCheck?) == SpellRangeCheck.ErrorNotInRange, new Action(r => Navigator.MoveTo(Core.Target.Location))),
Cast("Heavy Shot", r => (r as SpellRangeCheck?) == SpellRangeCheck.Success || (r as SpellRangeCheck?) == SpellRangeCheck.ErrorNotInFront)
);
}
protected override Composite CreateHeal()
{
return new PrioritySelector(
Cast("Cure", r => Core.Player.HealthPercent <= 70, r => Core.Player)
);
}
protected override Composite CreateCombat()
{
return new PrioritySelector(
Apply("Venomous Bite"),
Cast("Bloodletter", r => Actionmanager.LastSpell.Name == "Straight Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Straight Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Bloodletter"),
Cast("Straight Shot", r => Actionmanager.HasSpell("Straight Shot") || Core.Player.HasAura("Straighter Shot")),
Cast("Straight Shot", r => Actionmanager.LastSpell.Name == "Heavy Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Heavy Shot"),
Cast("Heavy Shot", r => true)
);
}
}
}
First of all thanks for this it looks great. Though I cant seem to get it working been trying for a week now the profile creates fine the wp's connect when i hit arc and everything then i load it and nothing he just stands there. Not sure what im doing wrong and I am new to this. I'm running it in windowed and I installed your wizard my pc is updated to net 4.5 and all that any ideas?
When I load my old waypoints and start the bot, it crashes, is this expected?
On a side note, character not trying to get out of sight stuff so far...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ff14bot;
using ff14bot.Enums;
using ff14bot.Managers;
using ff14bot.Navigation;
using TreeSharp;
using Action = TreeSharp.Action;
namespace Kupo.Rotations
{
public class ArcherBard : KupoRoutine
{
public override int PullRange
{
get { return 10; }
}
public override ClassJobType[] Class
{
get { return new ClassJobType[]{ClassJobType.Archer, ClassJobType.Bard, };}
}
protected override Composite CreatePull()
{
return new PrioritySelector(
//Checking to see if we're in range -- If not, move to the location
new Decorator(
r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.ErrorNotInRange,
new Action(r => Navigator.MoveTo(Core.Target.Location))),
//Checking to see if we're not facing the target -- If not, face it
new Decorator(
r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.ErrorNotInFront,
new Action(r => Core.Target.Face())),
//We'll open with a Heavy Shot for heavy
Cast("Heavy Shot", r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.Success)
);
}
protected override Composite CreateCombatBuffs()
{
return new PrioritySelector(
//Dem deepz
Apply("Raging Strikes"),
Apply("Hawk's Eyes"),
Apply("Bloodbath", r => Core.Player.HealthPercent <= 80, r => Core.Player),
Apply("Protect", r => !Core.Player.HasAura("Protect"),r=> Core.Player)
);
}
protected override Composite CreateHeal()
{
return new PrioritySelector(
Cast("Second Wind", r => Core.Player.HealthPercent <= 50, r => Core.Player),
Cast("Cure", r => Core.Player.HealthPercent <= 70, r => Core.Player)
);
}
protected override Composite CreateCombat()
{
return new PrioritySelector(
//Apply DOTS
Apply("Venomous Bite"),
Apply("Fracture"),
//Combat rotation
Cast("Bloodletter", r => Actionmanager.LastSpell.Name == "Straight Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Straight Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Bloodletter"),
Cast("Straight Shot", r => Actionmanager.LastSpell.Name == "Heavy Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Heavy Shot"),
Cast("Heavy Shot", r => true)
);
}
}
}
Okay for the life of me... I can't get it to Apply Raging Strike and Hawk's Eye. I even copied and past the format for Raging Strike from your Thum/BLM rotation. Any help wold be greatly appreciated!!
Here my current Archer/Bard.
Buffs - Protect, Raging Stikes, Hawk's Eye, and Bloodbath when less than 80% health.
Heals - Cure less than 70% and Second wind when less than 50%
DOTS - Venomous Bite and Fracture.
Code:using System; using System.Collections.Generic; using System.Linq; using System.Text; using ff14bot; using ff14bot.Enums; using ff14bot.Managers; using ff14bot.Navigation; using TreeSharp; using Action = TreeSharp.Action; namespace Kupo.Rotations { public class ArcherBard : KupoRoutine { public override int PullRange { get { return 10; } } public override ClassJobType[] Class { get { return new ClassJobType[]{ClassJobType.Archer, ClassJobType.Bard, };} } protected override Composite CreatePull() { return new PrioritySelector( //Checking to see if we're in range -- If not, move to the location new Decorator( r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.ErrorNotInRange, new Action(r => Navigator.MoveTo(Core.Target.Location))), //Checking to see if we're not facing the target -- If not, face it new Decorator( r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.ErrorNotInFront, new Action(r => Core.Target.Face())), //We'll open with a Heavy Shot for heavy Cast("Heavy Shot", r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.Success) ); } protected override Composite CreateCombatBuffs() { return new PrioritySelector( //Dem deepz Apply("Raging Strikes"), Apply("Hawk's Eyes"), Apply("Bloodbath", r => Core.Player.HealthPercent <= 80, r => Core.Player), Apply("Protect", r => !Core.Player.HasAura("Protect"),r=> Core.Player) ); } protected override Composite CreateHeal() { return new PrioritySelector( Cast("Second Wind", r => Core.Player.HealthPercent <= 50, r => Core.Player), Cast("Cure", r => Core.Player.HealthPercent <= 70, r => Core.Player) ); } protected override Composite CreateCombat() { return new PrioritySelector( //Apply DOTS Apply("Venomous Bite"), Apply("Fracture"), //Combat rotation Cast("Bloodletter", r => Actionmanager.LastSpell.Name == "Straight Shot"), Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Straight Shot"), Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Bloodletter"), Cast("Straight Shot", r => Actionmanager.LastSpell.Name == "Heavy Shot"), Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Heavy Shot"), Cast("Heavy Shot", r => true) ); } } }
Apply("Hawk's Eyes",r=> true, r=>Core.Player),
try
Code:Apply("Hawk's Eyes",r=> true, r=>Core.Player),
[06:48:56.421 D] System.NullReferenceException: Object reference not set to an instance of an object.
at Kupo.Extensions.GetCachedAuraByName(GameObject unit, String auraName, Boolean myAura) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 331
at Kupo.Extensions.HasAura(GameObject unit, String aura, Boolean isMyAura, Int32 msLeft) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 379
at Kupo.KupoRoutine.<>c__DisplayClass1b.<Apply>b__19(Object ret) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 248
at TreeSharp.Decorator.CanRun(Object context)
at TreeSharp.Decorator.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.Decorator.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at ..()
[06:48:57.805 D] Stop called!
[06:48:57.806 Q] Bot Stopped! Reason: Pushed the stop button.
[06:48:57.828 D] System.NullReferenceException: Object reference not set to an instance of an object.
at Kupo.Extensions.GetCachedAuraByName(GameObject unit, String auraName, Boolean myAura) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 331
at Kupo.Extensions.HasAura(GameObject unit, String aura, Boolean isMyAura, Int32 msLeft) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 379
at Kupo.KupoRoutine.<>c__DisplayClass1b.<Apply>b__19(Object ret) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 248
at TreeSharp.Decorator.CanRun(Object context)
at TreeSharp.Decorator.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.Decorator.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at ..()
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ff14bot;
using ff14bot.Enums;
using ff14bot.Managers;
using ff14bot.Navigation;
using TreeSharp;
using Action = TreeSharp.Action;
namespace Kupo.Rotations
{
public class ArcherBard : KupoRoutine
{
public override int PullRange
{
get { return 10; }
}
public override ClassJobType[] Class
{
get { return new ClassJobType[]{ClassJobType.Archer, ClassJobType.Bard, };}
}
protected override Composite CreatePull()
{
return new PrioritySelector(
//Checking to see if we're in range -- If not, move to the location
new Decorator(
r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.ErrorNotInRange,
new Action(r => Navigator.MoveTo(Core.Target.Location))),
//Checking to see if we're not facing the target -- If not, face it
new Decorator(
r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.ErrorNotInFront,
new Action(r => Core.Target.Face())),
//We'll open with a Heavy Shot for heavy
Cast("Heavy Shot", r => Actionmanager.InSpellInRangeLOS("Heavy Shot", Core.Target) == SpellRangeCheck.Success)
);
}
protected override Composite CreateCombatBuffs()
{
return new PrioritySelector(
//Dem deepz
Apply("Raging Strikes",r=> true, r=>Core.Player),
Apply("Hawk's Eye",r=> true, r=>Core.Player),
Apply("Bloodbath", r => Core.Player.HealthPercent <= 80, r => Core.Player),
Apply("Protect", r => !Core.Player.HasAura("Protect"),r=> Core.Player)
);
}
protected override Composite CreateHeal()
{
return new PrioritySelector(
Cast("Second Wind", r => Core.Player.HealthPercent <= 50, r => Core.Player),
Cast("Cure", r => Core.Player.HealthPercent <= 70, r => Core.Player)
);
}
protected override Composite CreateCombat()
{
return new PrioritySelector(
Apply("Venomous Bite"),
Apply("Fracture"),
Cast("Bloodletter", r => Actionmanager.LastSpell.Name == "Straight Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Straight Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Bloodletter"),
Cast("Straight Shot", r => Actionmanager.LastSpell.Name == "Heavy Shot"),
Cast("Misery's End", r => Actionmanager.LastSpell.Name == "Heavy Shot"),
Cast("Heavy Shot", r => true)
);
}
}
}
[07:00:17.569 D] DoAction Spell 97 1073796868
[07:00:18.918 D] System.NullReferenceException: Object reference not set to an instance of an object.
at Kupo.Extensions.GetCachedAuraByName(GameObject unit, String auraName, Boolean myAura) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 331
at Kupo.Extensions.HasAura(GameObject unit, String aura, Boolean isMyAura, Int32 msLeft) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 379
at Kupo.KupoRoutine.<>c__DisplayClass1b.<Apply>b__19(Object ret) in c:\Buddy\Routines\Kupo\KupoRoutine.cs:line 248
at TreeSharp.Decorator.CanRun(Object context)
at TreeSharp.Decorator.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.Decorator.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at TreeSharp.PrioritySelector.<Execute>d__0.MoveNext()
at TreeSharp.Composite.Tick(Object context)
at ..()
Replace kuporoutine.cs with this:
using System; using System.Collections.Generic; using System.Linq; using Syst - Pastebin.com
Let me know if it still throws an error.