What's new
  • Visit Rebornbuddy
  • Visit Panda Profiles
  • Visit LLamamMagic
  • Visit Resources
  • Visit Downloads
  • Visit Portal

Little to no support for developers

Status
Not open for further replies.

Vastico

New Member
Joined
Jul 28, 2011
Messages
424
Reaction score
10
There is little to no support for developers wanting to make plugins or bots for Honorbuddy it's trial and error which isn't very productive. Maybe bossland or someone should actually make an upto date documentation rather than having a stuck outdated one.

Thanks.
 
There is little to no support for developers wanting to make plugins or bots for Honorbuddy it's trial and error which isn't very productive. Maybe bossland or someone should actually make an upto date documentation rather than having a stuck outdated one.

Thanks.
once you have your project properly setup in visual studio, 90% of the api is self explanatory. visual studio will make sure your using the api in the correct context since it wont compile if its not.
 
Yes I have that but theres nothing out there to say hey this thing does this and these do this, like an API. the stuck one is outdated and lacts any information at all...
 
Yes I have that but theres nothing out there to say hey this thing does this and these do this, like an API. the stuck one is outdated and lacts any information at all...
heres the thing, if you know how to program then drilling though and finding what you need is easy, its not like things are labeled wrong. WoWUnit.HealthPercent isn't a huge mystery, and besides documenting the 1000's of functions that we have (most of them that require no explanation what so ever) would take forever. besides what would you even put as the description for most of them?

WoWUnit.HealthPercent - The health percent of the wow unit.

theres no need.
 
on the note of support and development itself, its seems almost all of the CC's, plugins, and profiles are either out of date or bugged. i feel all paying customers should at least expect up to date and working CC's, plugins, and profiles. i would love to develope CC's and plugins, not so much profiles, BUT i am not a programmer so i rely on HB developers to not only keep the HB engine up to date and working but to also provide up to date CC's, plugins, and profiles. i think HB is a great product! however it's still only as good as the CC's, plugins and profiles written for it. The built in CC's and plugins leave a lot to be desired so we have to use the ones others have written. if the HB developers would PLEASE update any CC's, plugins and profiles you may have written.
 
I'm not a programmer either

I honestly couldn't create a program from scratch if my life depended on it. But I did make a CC for warriors, go check it out. Gladiatore. People for whatever reason, seem to love that. If I can do it, a frickin 1 eyed 3 fingered chimpanzee can do it.
 
Yes I have that but theres nothing out there to say hey this thing does this and these do this, like an API. the stuck one is outdated and lacts any information at all...

Alright bud, it seems as though you know a little bit about computer's

download this:
Visual C# videos(2.x GB)
Watch those 30? or so videos and then the HB API will make sense.

Anything else that doesn't - there's a Dev forum for concerns, as well as IRC:

QuakeNet Web IRC (qwebirc)

- Kick
 
Last edited:
I'm not a professional programmer either, but I am a current Sys Admin with LOTS of previous experience 'playing' with code... everything from DOS, to BASIC to Perl, to ASP and PHP. I don't do alot from scratch, but I've done alot of 'take something and figure out how it works' and then go from there to make it do what I want it to do. I'm thinking in the long run that I'll probably develop CCs and profiles...

Profiles seem pretty simple overall... I could probably look over current CCs to get an idea of what's available... but as CodenameG mentioned, there are 1000s of functions available. I don't need an explanation of what most of them do... it would be nice to have a list of what most of them are, period. It's kinda hard to code for something when you don't even know what's available to you.
 
Honorbuddy.xml has a list of everything available in the API, and this is used within Visual Studio which has the object browser which, again, allows you to browse through the entire API. I think the Honorbuddy API is actually fairly well documented -- from my experiences with it, if I need an API command I just type something that sounds reasonable into the search box of the object browser and bam, I have it. Anything that isn't self-explanatory generally has a description.

edit: BehaviorTrees could use a simple template in one .cs file, though. I couldn't for the life for me understand them until it finally just clicked -- but that clicking took a long time, and it would have taken but a few minutes if there was an easy template available showing the practical use that isn't drawn out between several .cs files.
 
Last edited:
edit: BehaviorTrees could use a simple template in one .cs file, though. I couldn't for the life for me understand them until it finally just clicked -- but that clicking took a long time, and it would have taken but a few minutes if there was an easy template available showing the practical use that isn't drawn out between several .cs files.

[wiki]TreeSharp[/wiki]

Not only comprehensive documentation, but several meaty examples, too. Several articles remain to be written, but the core documentation is complete and solid.

cheers,
chinajade
 
Honorbuddy.xml has a list of everything available in the API, and this is used within Visual Studio which has the object browser which, again, allows you to browse through the entire API. I think the Honorbuddy API is actually fairly well documented -- from my experiences with it, if I need an API command I just type something that sounds reasonable into the search box of the object browser and bam, I have it. Anything that isn't self-explanatory generally has a description.

edit: BehaviorTrees could use a simple template in one .cs file, though. I couldn't for the life for me understand them until it finally just clicked -- but that clicking took a long time, and it would have taken but a few minutes if there was an easy template available showing the practical use that isn't drawn out between several .cs files.
there isnt because if you did have one big CS file it would be a complete mess, specially with CC's, you dont need to know how to code to start learning to code a CC, Behavior Trees are really the Next step up for developers after they learn the in's and out's of the language itself.

i wrote a CC development guide with lots of pictures and templates, thats where you need to start, not just jump in the deep end with a Behavior Tree.
 
CodenameG,

I'm not asking for one big .cs file, I'm asking for one small and simple .cs file. Your guide is great, by the way -- it helped me start developing CustomClasses. Keep up the good work. :)

Chinajade and CodenameG,

I don't think you two quite understand exactly what I'm getting at (or perhaps I explained myself poorly) -- the wiki has fantastic documentation that explains (in quite some detail) exactly what each type of node does and how it fits into the greater picture. That documentation is fantastic and serves a fine job of complementing a developer's knowledge using the BehaviorTree model. What it does not do, however, is provide you with the knowledge to start coding a BehaviorTree CC.

Take, for example, the simple action of casting a spell. Using the HB API, the normal code to do this would be something akin to the following:

Code:
if (SpellManager.CanCast("spellname")
{
    Spellmanager.Cast("spellname");
}

Using TreeSharp, the following would be used instead:

Code:
return new Decorator(ret => SpellManager.CanCast("spellname"),
    new Action(ret => SpellManager.Cast("spellname"))
);

To me (as a developer who has used C# and C++ extensively in the past) the giant leap between the two was hard to wrap my head around -- not because of the complexity of TreeSharp, as it is really quite simple for the CC developer once you understand it, but rather because of lack of understanding how everything fits together practically.

I think it is because we only have two sources of code to look at for inspiration:

1) existing CustomClasses coded to make use of BehaviorTrees, which, for the most part, are gigantic in scale and the code is very difficult to navigate, or

2) the wiki article(s), which provides a few code fragments but nothing that I could take and apply to building a CustomClass without searching through numerous CustomClasses to understand how everything fits together practically.

As another example, take the following code:

Code:
private Composite _combatBehavior;

public override Composite CombatBehavior
{
    if (_combatBehavior == null)
    {
        _combatBehavior == CreateCombatBehavior();
    }

    return _combatBehavior;
}

private Composite CreateCombatBehavior()
{
    return new Decorator(ret => SpellManager.CanCast("spellname"),
        new Action(ret => SpellManager.Cast("spellname"))
    );
}

If I was given this code and ran it in Honorbuddy, I would clearly see it casts a simple spell. After a little contemplation and logical deduction I would understand that _combatBehavior is built once when CombatBehavior is called, and I would have the knowledge required to build upon that -- I could add in new decorators, actions, priorityselectors, etc, simply put I could use the knowledge offered in the wiki.

I think the best way to ease an existing C# developer into the mindset of a BehaviorTree developer is to provide simple code examples that can be immediately placed into Honorbuddy and run. While the examples offered in the wiki are fantastic to teach one about each individual node type, no documentation exists which -- quite simply -- displays a CC, in full, that casts one simple spell, and I think if that documentation were to exist, the transition between traditional HB development and BehaviorTree development would be oh-so-easier for many people.


edit: just browsing through the wiki once again and I've noticed the following article that is currently empty.

http://www.thebuddyforum.com/mediaw...ow_to_hook_your_Behavior_Tree_into_Honorbuddy

That is exactly what I was looking for and I think that once it has been written life will become much simpler for programmers interested in this advanced topic of development.
 
Last edited:
everything that can be done in a BT can be done in a Normal CC layout, if you know how to use a BT, then use it, if you dont then dont. but we dont have the time and man power to think of make and document all 999 billion combinations for methods and if statements so you can just put a CC together like lego's it dost work like that, Coding isnt a Copy and Paste PreFab kind of operation, its more of a "Sit down and Write a Story" kind of exercise, where if you look at 2 people's CC's just like if you where to read 2 peoples story's, or essays or whatever, even though they are based on the same subject matter, they should be DIFFERENT. No one is forcing you to use a BT, ive written about a dozen plugins ac CC's using the normal lay out and you know what, they where fucking awesome.

Project Gamma
Orange Marmalade
FrozenHeart
Iblis
Kaboomkin
Mephiles
Ecliptor
Hawkeye
Hawkeye2

all where written without using a a Behavior tree.
 
I am sorry CodenameG, I did not mean to offend you with my polite suggestion on how to make BehaviorTree development more accessible to the common developer, thus bringing more quality CCs to the Honorbuddy forums and lending a helping hand to developers in who wish to expand their knowledge.

Because you do not have time to sit down and create "all 999 billion combinations" of templates (when, in reality, only one is required), I have done so in your stead and put together a quick template that demonstrates exactly how to make a BehaviorTree CC cast two spells.

Code:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;

using Styx;
using Styx.Combat.CombatRoutine;
using Styx.Helpers;
using Styx.Logic;
using Styx.Logic.Combat;
using Styx.Logic.Pathing;
using Styx.WoWInternals;
using Styx.WoWInternals.WoWObjects;

using CommonBehaviors.Actions;
using TreeSharp;
using Action = TreeSharp.Action;

namespace ExampleCC
{
   public class ExampleCC : CombatRoutine
   {
                public override sealed string Name { get { return "Example Rogue CC" } }
                public override WoWClass Class { get { return WoWClass.Rogue; } }

		// _combatBehavior represents our BehaviorTree.
	
		private Composite _combatBehavior;

		// When the CC is started, CombatBehavior is called and
		// our Behavior Tree is built using the code contained
		// in CreateCombatBehavior.
		
		// This Behavior Tree is then passed to the tree-walker to
		// be cached in memory and executed.
		
		// The tree-walker evaluates our Behavior Tree numerous
		// times every second.
		
		public override Composite CombatBehavior
		{
			if (_combatBehavior == null)
			{
				_combatBehavior == CreateCombatBehavior();
			}

			return _combatBehavior;
		}

		// Our Behavior Tree will attempt to cast Sinister Strike if it
		// can be cast and if we do not have five combo points.
		
		// If we do have five combo points, the decorator will fail and
		// the next node on our priority selector will be visited.
		
		// The next node will attempt to cast evicerate, and cast it
		// if possible.
		
		private Composite CreateCombatBehavior()
		{
			return new PrioritySelector(
				new Decorator(ret => SpellManager.CanCast("Sinister Strike") && ObjectManager.Me.ComboPoints != 5,
					new Action(ret => SpellManager.Cast("Sinister Strike"))
				),
				
				new Decorator(ret => SpellManager.CanCast("Eviscerate"),
					new Action(ret => SpellManager.Cast("Eviscerate"))
				)
			);
		}
	}
}

Perhaps something akin to my above code could be added to the wiki article I linked in my previous post to give aspiring BehaviorTree developers a jump start.
 
Last edited:
I am sorry CodenameG, I did not mean to offend you with my polite suggestion on how to make BehaviorTree development more accessible to the common developer, thus bringing more quality CCs to the Honorbuddy forums and lending a helping hand to developers in who wish to expand their knowledge.

Because you do not have time to sit down and create "all 999 billion combinations" of templates (when, in reality, only one is required), I have done so in your stead and put together a quick template that demonstrates exactly how to make a BehaviorTree CC cast two spells.

Code:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;

using Styx;
using Styx.Combat.CombatRoutine;
using Styx.Helpers;
using Styx.Logic;
using Styx.Logic.Combat;
using Styx.Logic.Pathing;
using Styx.WoWInternals;
using Styx.WoWInternals.WoWObjects;

using CommonBehaviors.Actions;
using TreeSharp;
using Action = TreeSharp.Action;

namespace ExampleCC
{
   public class ExampleCC : CombatRoutine
   {
                public override sealed string Name { get { return "Example Rogue CC" } }
                public override WoWClass Class { get { return WoWClass.Rogue; } }

		// _combatBehavior represents our BehaviorTree.
	
		private Composite _combatBehavior;

		// When the CC is started, CombatBehavior is called and
		// our Behavior Tree is built using the code contained
		// in CreateCombatBehavior.
		
		// This Behavior Tree is then passed to the tree-walker to
		// be cached in memory and executed.
		
		// The tree-walker evaluates our Behavior Tree numerous
		// times every second.
		
		public override Composite CombatBehavior
		{
			if (_combatBehavior == null)
			{
				_combatBehavior == CreateCombatBehavior();
			}

			return _combatBehavior;
		}

		// Our Behavior Tree will attempt to cast Sinister Strike if it
		// can be cast and if we do not have five combo points.
		
		// If we do have five combo points, the decorator will fail and
		// the next node on our priority selector will be visited.
		
		// The next node will attempt to cast evicerate, and cast it
		// if possible.
		
		private Composite CreateCombatBehavior()
		{
			return new PrioritySelector(
				new Decorator(ret => SpellManager.CanCast("Sinister Strike") && ObjectManager.Me.ComboPoints != 5,
					new Action(ret => SpellManager.Cast("Sinister Strike"))
				),
				
				new Decorator(ret => SpellManager.CanCast("Eviscerate"),
					new Action(ret => SpellManager.Cast("Eviscerate"))
				)
			);
		}
	}
}

Perhaps something akin to my above code could be added to the wiki article I linked in my previous post to give aspiring BehaviorTree developers a jump start.
my point is you dont need a BT to make a "Quality" CC, you can get the same, if not better performance from a normal CC as long as you code for it.
 
Great thread ! learning alot about CC again, i started once and gave up as the information was not sinking in but this thread has giving me that extra boost.

Thanks for the link, samples etc etc downloading the video now.
 
And my point is that performance isn't the only reason you would choose to develop using BehaviorTrees -- whether it is for performance or simply because a developer wishes to expand his knowledge, adequate learning material should be provided by the Honorbuddy team to assist said developer. And, once again, I have to state that the material on the wiki is excellent, but it could do with more practical examples (see my code above.)

Regarding my use of "quality CCs": with an attitude of "I don't have time; go away", I'm afraid many CC developers would be put off from seeking support on the forums and these "quality CCs", whether using the standard HB method or using BehaviorTrees, would never see the light of day.
 
I am sorry CodenameG, I did not mean to offend you with my polite suggestion on how to make BehaviorTree development more accessible to the common developer, thus bringing more quality CCs to the Honorbuddy forums and lending a helping hand to developers in who wish to expand their knowledge.

Because you do not have time to sit down and create "all 999 billion combinations" of templates (when, in reality, only one is required), I have done so in your stead and put together a quick template that demonstrates exactly how to make a BehaviorTree CC cast two spells.

Code:
using System;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;

using Styx;
using Styx.Combat.CombatRoutine;
using Styx.Helpers;
using Styx.Logic;
using Styx.Logic.Combat;
using Styx.Logic.Pathing;
using Styx.WoWInternals;
using Styx.WoWInternals.WoWObjects;

using CommonBehaviors.Actions;
using TreeSharp;
using Action = TreeSharp.Action;

namespace ExampleCC
{
   public class ExampleCC : CombatRoutine
   {
                public override sealed string Name { get { return "Example Rogue CC" } }
                public override WoWClass Class { get { return WoWClass.Rogue; } }

		// _combatBehavior represents our BehaviorTree.
	
		private Composite _combatBehavior;

		// When the CC is started, CombatBehavior is called and
		// our Behavior Tree is built using the code contained
		// in CreateCombatBehavior.
		
		// This Behavior Tree is then passed to the tree-walker to
		// be cached in memory and executed.
		
		// The tree-walker evaluates our Behavior Tree numerous
		// times every second.
		
		public override Composite CombatBehavior
		{
			if (_combatBehavior == null)
			{
				_combatBehavior == CreateCombatBehavior();
			}

			return _combatBehavior;
		}

		// Our Behavior Tree will attempt to cast Sinister Strike if it
		// can be cast and if we do not have five combo points.
		
		// If we do have five combo points, the decorator will fail and
		// the next node on our priority selector will be visited.
		
		// The next node will attempt to cast evicerate, and cast it
		// if possible.
		
		private Composite CreateCombatBehavior()
		{
			return new PrioritySelector(
				new Decorator(ret => SpellManager.CanCast("Sinister Strike") && ObjectManager.Me.ComboPoints != 5,
					new Action(ret => SpellManager.Cast("Sinister Strike"))
				),
				
				new Decorator(ret => SpellManager.CanCast("Eviscerate"),
					new Action(ret => SpellManager.Cast("Eviscerate"))
				)
			);
		}
	}
}

Perhaps something akin to my above code could be added to the wiki article I linked in my previous post to give aspiring BehaviorTree developers a jump start.

Very nice!

I created a new Wiki page after realizing where you were going with this a few posts ago...
[wiki]TreeSharp: Putting it all together?a trivial CC[/wiki]

Please feel free to populate it with your vision. To be honest, I'm a little burned out on writing at the moment, and have just added it to my "to do" list. The Wiki is a Community effort--not mine. :D

If you just want to supply content, I'll come back and 'decorate' it when you're done.


cheers,
chinajade
 
And my point is that performance isn't the only reason you would choose to develop using BehaviorTrees -- whether it is for performance or simply because a developer wishes to expand his knowledge, adequate learning material should be provided by the Honorbuddy team to assist said developer. And, once again, I have to state that the material on the wiki is excellent, but it could do with more practical examples (see my code above.)

Regarding my use of "quality CCs": with an attitude of "I don't have time; go away", I'm afraid many CC developers would be put off from seeking support on the forums and these "quality CCs", whether using the standard HB method or using BehaviorTrees, would never see the light of day.
i have time for anyone who sends me a PM with a development question, i have NEVER been too busy to respond, i have provided my person contact information on request for anyone who needs help, on a 24/7 basis, so you really need to re think that whole statement.

that being said, we dont have the time to sit and train anyone who get the urge to learn to code. Learn by trying, and Learn by doing, we cannot sit and hold your hand.
 
^^^^^^^^
Sorry CodenameG, that is just the gist of what I am getting from your posts. I am thankful that you are willing to lend a helping hand to developers in need. But, and again, I think you need to reread my posts (every single one of them) and try to understand the point I am making. This is not about teaching a developer to code, nor is it about holding their hand. This is about providing a simple piece of code that would help said developers immensely in their learning experience. I do not see the issue with my suggestion and I cannot comprehend why you are seemingly so hostile about it.


Thanks for that chinajade. Tomorrow I will see about putting together a real template (one that wasn't thrown together in haste at 5am) and populating that wiki article. :)
 
Last edited:
Status
Not open for further replies.
Back
Top