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

How to Write a Custom Class, a Guide for Beginners.

Update is awesome!! managed to add some working spells into my CC, any chance your going to be doing one like this for plugins? or is it fairly similar
 
is there any way to set this up to use this with Notepad++ ?
 
Yes, notepad ++ is an editor just like visual studio. But VS has the major advantage of many many features to help with code production.
 
Yes, notepad ++ is an editor just like visual studio. But VS has the major advantage of many many features to help with code production.
exactly, its better to use visual studio even if its only the free express edition
 
fianll part 2 hehe thnx for that can continue now!
 
when would you think there will be more? or is this all for now:(?
 
Excellent write up.... patiently waiting for if in the future about BT basics as this is using the "Legacy" way of making CC's. It's currently what I use to write my own specific need CC's but after looking through a couple of examples on BT. BTlooks to streamline the code and appears to be more efficient. Again A+ on the guide.
 
Excellent write up.... patiently waiting for if in the future about BT basics as this is using the "Legacy" way of making CC's. It's currently what I use to write my own specific need CC's but after looking through a couple of examples on BT. BTlooks to streamline the code and appears to be more efficient. Again A+ on the guide.
its not going to happen, there are things I still even dont understand about BT's and for writing code to run a CC, even a complicated one, can be done its all about how quickly you can do that pulse. take a look at ShamWoW, hes not running a BT and the CC is really fast. they both essenaly work the same way the only difference is theres an extra step that honorbuddy has to do to deal with non-bt CC's but is all internal anyway. not only that but its more importaint for people to learn the api, and how to get around using it, then to relearn how to code.
 
The update is very informative. I am thinking about writing a simple Fury Warrior CC that can be used with MrAutoFight for dungeons. This should give me a decent starting point. Thanks again.
 
CodenameG is this part up to date?

Now Click on the Browse Tab and Explore to your Honorbuddy Directory, once there Click on your Honorbuddy.EXE, and Tripper.XNAMath.dll you can do it one at a time or Hold Down Ctrl, and Click on Each One to Select them Both at the same time. and then click OK.

because I can't seem to findt XNAMath.dll.. any replacement for it?
 
I keep getting the error

Code:
This profile does not contain any profiles fitting the character!
Other CCs work fine. No idea what the issue is.

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;

namespace TestDK
{
    class TestDK : CombatRoutine
    {

        public override sealed string Name { get { return "TestDK 0.1"; } }

        public override WoWClass Class { get { return WoWClass.DeathKnight; } }

        private static LocalPlayer Me { get { return ObjectManager.Me; } }
...

I'm using the Combat/Heal Bot profile with Mr.AutoFight. Using other CCs I go nuts on the target dummy.
 
Last edited:
I keep getting the error

Code:
This profile does not contain any profiles fitting the character!
Other CCs work fine. No idea what the issue is.

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;

namespace TestDK
{
    class TestDK : CombatRoutine
    {

        public override sealed string Name { get { return "TestDK 0.1"; } }

        public override WoWClass Class { get { return WoWClass.DeathKnight; } }

        private static LocalPlayer Me { get { return ObjectManager.Me; } }
...

I'm using the Combat/Heal Bot profile with Mr.AutoFight. Using other CCs I go nuts on the target dummy.
most of your code is missing, so i cant tell whats going on with it. but chances are its a profile issue, remember you still need to load up a profile for some plugins/bot bases to work properly.
 
CodenameG is this part up to date?

Now Click on the Browse Tab and Explore to your Honorbuddy Directory, once there Click on your Honorbuddy.EXE, and Tripper.XNAMath.dll you can do it one at a time or Hold Down Ctrl, and Click on Each One to Select them Both at the same time. and then click OK.

because I can't seem to findt XNAMath.dll.. any replacement for it?
Tripper.XNAMath.dll is now called Tripper.Tools.dll so yea, it needs to be updated, but the rest of the information should be fine.
 
most of your code is missing, so i cant tell whats going on with it. but chances are its a profile issue, remember you still need to load up a profile for some plugins/bot bases to work properly.

The rest of the code was straight from your framework file with a spell thrown in Combat so I knew it was doing something/anything.

Code:
//CustomClass Template - Created by CodenameGamma
//Replace Layout with the CC name, 
//and WoWClass.Mage with the Class your Designing for.
//Created July, 3rd 2010
//For use with Honorbuddy
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;

namespace TestDK
{
    class DeathKnight : CombatRoutine
    {
        public override sealed string Name { get { return "TestDK 0.1"; } }

        public override WoWClass Class { get { return WoWClass.DeathKnight; } }


     private static LocalPlayer Me { get { return ObjectManager.Me; } }
 
        private void slog(string format, params object[] args) //use for slogging
        {
            Logging.Write(format, args);
        }

        public override bool WantButton
        {
            get
            {

                return true;
            }
        }

    

        public override void OnButtonPress()
        {
            //ConfigForm.ShowDialog();
        }

  

        #region CC_Begin


        public override bool NeedRest
        {
            get
            {
                return false;
            }
        }

        public override void Rest()
        {


        }

        #endregion

        #region Pull

        public override void Pull()
        {
  

        }


        #endregion

        #region Pull Buffs

        public override bool NeedPullBuffs { get { return false; } }

        public override void PullBuff() { }

        #endregion

        #region Pre Combat Buffs

        public override bool NeedPreCombatBuffs { get { return false; } }

        public override void PreCombatBuff()
        {
            return;
        }

        #endregion

        #region Combat Buffs

        public override bool NeedCombatBuffs { get { return false; } }

        public override void CombatBuff()
        {

        }

        #endregion

        #region Heal

        public override bool NeedHeal { get { return false; } }

        public override void Heal()
        {

        }

        #endregion

        #region Falling

        public void HandleFalling() { }

        #endregion

        #region Combat

        public override void Combat()
        {

            SpellManager.Cast("Plague Strike");

        }

        #endregion
       
   
        #region Spells


        private void AutoAttack()
        {
            if (!Me.IsAutoAttacking)
            {
                Lua.DoString("StartAttack()");
            }

        }
      #endregion

    
    }   


}
Again, using the Combat/Heal Bot profile, which works fine with other DK CCs.

Thanks for the help.
 
Last edited:
I'm attempting to follow the guide. When adding resources, I added the Tripper.Tools.dll (as mentioned above). However there is also no more lightman.exe. When I attempt to compile the name "Styx" cannot be found. Any suggestions?

Edit: Used common sense and added HonorBuddy.exe. This resolved the Styx namespace errors.

Still have an error though: "The type 'System.Drawing.Color' is defined in an assembly that is not referenced ..." This is being caused by the Logging.Write(format, args) function call in the private void slog function.

Edit2: Ah-hah. I'm new to this, please be patient. I added a reference to the .NET library System.Drawing, which resolved this issue.
 
Last edited:
I'm attempting to follow the guide. When adding resources, I added the Tripper.Tools.dll (as mentioned above). However there is also no more lightman.exe. When I attempt to compile the name "Styx" cannot be found. Any suggestions?

Edit: Used common sense and added HonorBuddy.exe. This resolved the Styx namespace errors.

Still have an error though: "The type 'System.Drawing.Color' is defined in an assembly that is not referenced ..." This is being caused by the Logging.Write(format, args) function call in the private void slog function.

Edit2: Ah-hah. I'm new to this, please be patient. I added a reference to the .NET library System.Drawing, which resolved this issue.

Thanks Oxseyn for mentioning that, the System.Drawing library error tripped me up too.

Just so it's clear, anyone getting that error needs to right click their project name in the right pane solution explorer, select add reference, go to the .NET tab, and add System.Drawing as a reference.
 
Thanks Oxseyn for mentioning that, the System.Drawing library error tripped me up too.

Just so it's clear, anyone getting that error needs to right click their project name in the right pane solution explorer, select add reference, go to the .NET tab, and add System.Drawing as a reference.

if you're using visual studio 2010, you can just right click on the error in the code and select "resolve" and it will show you a list of Visual studio's known references that could fix the issue :)
 
trying to do a check for crit proc on a spell.

if not having aura it should be cast at 3 holypower only.

Problem is that it only casts at 3 holy power.

EDIT: Might have found the error.... HasAura does not work with "Sacred Duty"

thx for helping me Azaril --> Styx.StyxWoW.Me.GetAllAuras().Any(Aura => Aura.SpellId == 85433)

Code:
if (SpellManager.HasSpell("Shield of the Righteous"))
            {
                if (SpellManager.CanCast("Shield of the Righteous") && StyxWoW.Me.HasAura([B]"Sacred Duty"[/B]) && Me.CurrentHolyPower >= 1 && Me.CurrentTarget.Distance <= 5)
                {

                    WoWMovement.Face();
                    CastMeUp("Shield of the Righteous");
                    slog("CRITICAL: Shield of the Righteous");
                }
                else
            
                if (SpellManager.HasSpell("Shield of the Righteous"))
                {
                if (SpellManager.CanCast("Shield of the Righteous") && Me.CurrentHolyPower == 3 && Me.CurrentTarget.Distance <= 5)
                    {

                      WoWMovement.Face();
                      CastMeUp("Shield of the Righteous");
                      slog("3 HolyPower: Shield of the Righteous");
                   
                    }
                }
            }
 
Last edited:
trying to do a check for crit proc on a spell.

if not having aura it should be cast at 3 holypower only.

Problem is that it only casts at 3 holy power.

EDIT: Might have found the error.... HasAura does not work with "Sacred Duty"

thx for helping me Azaril --> Styx.StyxWoW.Me.GetAllAuras().Any(Aura => Aura.SpellId == 85433)

Code:
if (SpellManager.HasSpell("Shield of the Righteous"))
            {
                if (SpellManager.CanCast("Shield of the Righteous") && StyxWoW.Me.HasAura([B]"Sacred Duty"[/B]) && Me.CurrentHolyPower >= 1 && Me.CurrentTarget.Distance <= 5)
                {

                    WoWMovement.Face();
                    CastMeUp("Shield of the Righteous");
                    slog("CRITICAL: Shield of the Righteous");
                }
                else
            
                if (SpellManager.HasSpell("Shield of the Righteous"))
                {
                if (SpellManager.CanCast("Shield of the Righteous") && Me.CurrentHolyPower == 3 && Me.CurrentTarget.Distance <= 5)
                    {

                      WoWMovement.Face();
                      CastMeUp("Shield of the Righteous");
                      slog("3 HolyPower: Shield of the Righteous");
                   
                    }
                }
            }
its probally better to use the Auras function rather then build a list and search it every check just for one buff.
Code:
if(Me.ActiveAuras.ContainsKey("Fireball!"))
 
Back
Top