[OpenSource] WoW Bot Project C++ menu

Shout-Out

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 15 of 28
  1. #1
    ejt's Avatar Contributor
    Reputation
    210
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/112
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    [OpenSource] WoW Bot Project C++

    Hello,

    I decided to start working a bit on a opensource bot in C++ on my free time mostly just for fun and learning.

    Its a good base if someone else is trying to learn how bot developing works in C++ since most of the projects here seem to be in .NET languages.

    So what does it do?

    The project is constantly in development and new features are added almost everyday. Some of the features implemented is:

    - Object Manager
    - Getting location of units and objects including facing, distance etc.
    - GUI Interface

    I will try to update this list when more features are added.

    What features will be added in the future?

    Heres a list of features that I hope to implement into the project:

    - Human-like movement
    - CTM movement
    - Profile engine
    - Custom behaviors
    - Scripting language

    I will try updating this list if I plan on more features.

    So what will it do?

    The goal is to have a fully functional bot and all that comes with it such as objectmanager, movement, gui.
    In the future I want to add some kind of scripting language to it, or two or three. My current focus lies on LUA since its simple, fast and flexible. However I will first need to research its full capabilies before I decide on anything.
    I will NOT be using any .NET scripting/programming.

    Where can I check it out?

    Currently its only available on SVN here

    And before you start flaming me that alot of the code looks familiar, yes, alot of code ideas comes from this forum (converted from C# to C++)

    Why don't you just do it in C# like everybody else and be done with it?

    Well, I've never really liked C# or .NET languages in general, just not my taste.

    Summary

    If I got your attention, please check it out, give some feedback, ideas or even some nasty code to look at!

    I also like to thank everybody that I got ideas from and the people posting actual code on this forum.
    Last edited by ejt; 01-22-2013 at 03:18 AM. Reason: Update

    [OpenSource] WoW Bot Project C++
  2. #2
    suicidity's Avatar Contributor
    Reputation
    207
    Join Date
    Oct 2006
    Posts
    1,439
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Why don't you hook the game?..


  3. #3
    ejt's Avatar Contributor
    Reputation
    210
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/112
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by suicidity View Post
    Why don't you hook the game?..
    I want to start without using hooks for the time being. This might be something to add in the future but for now I'd rather not.

  4. #4
    FattyXP's Avatar Member
    Reputation
    20
    Join Date
    Feb 2009
    Posts
    168
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by suicidity View Post
    Why don't you hook the game?..
    Why WOULD you hook, if you could do it all without hooking? i never understood the obsession with hooking. and it seems to me that not hooking would be much safer since there isn't any hook for warden to be updated to check for. Not that they even seem to have an anti-cheat division right now anyways...
    they must be being... "transparent" as blizz likes to say.

    OT: Thanks for the project. Seems to convert into VS 2012 without any errors. Tho I'm getting some crashes as soon as I load it up (they happen without the update to 2012 too). I'll post tomorrow exactly what they are and what is throwing them, I was on a rogue and it was something about sprint or some such, I didn't really look I was in a hurry. I do remember they are access violations.
    Last edited by FattyXP; 01-20-2013 at 03:35 AM.

  5. #5
    ejt's Avatar Contributor
    Reputation
    210
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/112
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by FattyXP View Post
    Why WOULD you hook, if you could do it all without hooking? i never understood the obsession with hooking. and it seems to me that not hooking would be much safer since there isn't any hook for warden to be updated to check for. Not that they even seem to have an anti-cheat division right now anyways...
    they must be being... "transparent" as blizz likes to say.

    OT: Thanks for the project. Seems to convert into VS 2012 without any errors. Tho I'm getting some crashes as soon as I load it up (they happen without the update to 2012 too). I'll post tomorrow exactly what they are and what is throwing them, I was on a rogue and it was something about sprint or some such, I didn't really look I was in a hurry. I do remember they are access violations.
    Hooks in my opinion is the "fast and furious" way of going and I completly agree with the statement above.

    To bad about the errors, I've changed the code some since last commit and will be updating it soon when I get it running again.

    At the moment its also worth mentioning that its built for 32-bit version of wow. Also since this is the "start of something new" I ignored adding check for pretty much everything so there will be errors and crashes until a proper exception system is built-in.

    Anyhow thank you for your report and I hope to see more!

  6. #6
    FattyXP's Avatar Member
    Reputation
    20
    Join Date
    Feb 2009
    Posts
    168
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by ejt View Post
    Hooks in my opinion is the "fast and furious" way of going and I completly agree with the statement above.

    To bad about the errors, I've changed the code some since last commit and will be updating it soon when I get it running again.

    At the moment its also worth mentioning that its built for 32-bit version of wow. Also since this is the "start of something new" I ignored adding check for pretty much everything so there will be errors and crashes until a proper exception system is built-in.

    Anyhow thank you for your report and I hope to see more!
    Yeah, I figured it was for x86, which is what like 99% of all hacks and bots are made for lol. I also figured you hadn't added any "hey, is the game even open? am I logged in?" kind of checks, I do the same thing, error checks just get in the way when you are first building shit =-) I always end up getting them wrong myself, and try to debug other code that would have actually worked but never got executed cause my little If statement was wrong.

    Ok so here is my error:
    Code:
    Unhandled exception at 0x003EC9FF in Frost.exe: 0xC0000094: Integer division by zero.
    VS is pointing me to this line of code in CMemory.cpp in the CSystem::msgRouter:
    Code:
    sprintf_s(power, "%d / %d (%d%%)", m_Application->ObjectManager->GetLocalPlayer()->Power(),
    							m_Application->ObjectManager->GetLocalPlayer()->MaxPower(),
    							(m_Application->ObjectManager->GetLocalPlayer()->Power() / m_Application->ObjectManager->GetLocalPlayer()->MaxPower()) * 100);
    Last edited by FattyXP; 01-20-2013 at 12:28 PM.

  7. #7
    ejt's Avatar Contributor
    Reputation
    210
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/112
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by FattyXP View Post
    Yeah, I figured it was for x86, which is what like 99% of all hacks and bots are made for lol. I also figured you hadn't added any "hey, is the game even open? am I logged in?" kind of checks, I do the same thing, error checks just get in the way when you are first building shit =-) I always end up getting them wrong myself, and try to debug other code that would have actually worked but never got executed cause my little If statement was wrong.

    Ok so here is my error:
    Code:
    Unhandled exception at 0x003EC9FF in Frost.exe: 0xC0000094: Integer division by zero.
    VS is pointing me to this line of code in CMemory.cpp in the CSystem::msgRouter:
    Code:
    sprintf_s(power, "%d / %d (%d%%)", m_Application->ObjectManager->GetLocalPlayer()->Power(),
    							m_Application->ObjectManager->GetLocalPlayer()->MaxPower(),
    							(m_Application->ObjectManager->GetLocalPlayer()->Power() / m_Application->ObjectManager->GetLocalPlayer()->MaxPower()) * 100);
    My best guess is that the Power() or MaxPower() object functions are returning 0, and that wouldn't suprise me.

    If you go to WoWUnit.h you will see that the returning descriptor value is divided by 10, this is because I was getting 10 times the power I actually had.

    The GUI class will be rebuilt (doing it as we speak) to avoid using dialogs so that code is removed from the latest commit.

    So at the moment, the bot is ... not doing anything. As soon as I'm done with the GUI class I'll implant some pretty things to look at.

  8. #8
    FattyXP's Avatar Member
    Reputation
    20
    Join Date
    Feb 2009
    Posts
    168
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    K so a little more on the issue: I loaded it up on my druid since I had some time now, no error. Only the reported mana is incorrect, saying 30,000 (being divided by 10, should be 300,000). The error doesn't happen on the druid, even in cat form (I suspected that energy might have been the culprit)
    and the power type doesn't change when I shift either, and the numbers don't update if my energy changes.

    You'll need to detect the form of power the character uses, and go from there. Right now the code works/reports proper values for Rage, and Runic Power. However, the Hunter Focus, and Monk energy "work" (they don't crash) but they report incorrect values. Hunter being 10, or 100 divided by 10. And I get 26 for my monk's power... and he has 100 energy. That bit kind of doesn't make sense... Not sure how its getting 26 as a result.. would mean the original number being reported is 260, which isn't any number on my character at all (does actually have 26 str, but I tried adding some str and the number didn't change, also its not 260... which is what it'd need to be to divide into 26 properly.. Also, any changes in my energy have no effect at all, stays at 26. tried gaining some chi, still the same.

    All other types of power update properly.

    and of course, since 5.0 there haven't been any public code for bots, with code to handle monk power, so I'm stumped. I took a quick look at the copy of LazyBot source I have, and he actually has Power/Max and Power1-5/Max1-5, something I don't see in ANY other descriptor lists(but the code is also pre-5.0).
    Last edited by FattyXP; 01-20-2013 at 03:32 PM.

  9. #9
    ejt's Avatar Contributor
    Reputation
    210
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/112
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by FattyXP View Post
    K so a little more on the issue: I loaded it up on my druid since I had some time now, no error. Only the reported mana is incorrect, saying 30,000 (being divided by 10, should be 300,000). The error doesn't happen on the druid, even in cat form (I suspected that energy might have been the culprit)
    and the power type doesn't change when I shift either, and the numbers don't update if my energy changes.

    You'll need to detect the form of power the character uses, and go from there. Right now the code works/reports proper values for Rage, and Runic Power. However, the Hunter Focus, and Monk energy "work" (they don't crash) but they report incorrect values. Hunter being 10, or 100 divided by 10. And I get 26 for my monk's power... and he has 100 energy. That bit kind of doesn't make sense... Not sure how its getting 26 as a result.. would mean the original number being reported is 260, which isn't any number on my character at all (does actually have 26 str, but I tried adding some str and the number didn't change, also its not 260... which is what it'd need to be to divide into 26 properly.. Also, any changes in my energy have no effect at all, stays at 26. tried gaining some chi, still the same.

    All other types of power update properly.

    and of course, since 5.0 there haven't been any public code for bots, with code to handle monk power, so I'm stumped. I took a quick look at the copy of LazyBot source I have, and he actually has Power/Max and Power1-5/Max1-5, something I don't see in ANY other descriptor lists(but the code is also pre-5.0).
    Good to know! Thanks for the update on it.

    Wierd its only crashing when its a rogue (well, everybody hates rogues RIGHT?) and not for any other class.

    The object manager is not really functional even for debugging at the moment since I will concentrate on getting a nice GUI Interface going before beginning on the Object Manager but its good to know what to look for when I get there .

  10. #10
    ejt's Avatar Contributor
    Reputation
    210
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/112
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    I've come to the point where I can do some actual work on the object manager and managed to figure out why I couldn't get the correct power type. I was reading the address as an INT but the power type is stored as an BYTE so I was getting something like 0100101 as power type, doesn't make any sence right? Well thats what you get for adding afew extra bytes...

    The GUI has come a long way but is far from complete. However I've completed as far as is needed at the moment so the next focus lies in the object manager.

    The source is updated on the project site if you want to check out the new source.

    And by the way, if this post makes no sence what-so-ever, its because I've been programming for 14 hours straight. Time to sleep!
    Last edited by ejt; 01-21-2013 at 02:43 AM.

  11. #11
    ejt's Avatar Contributor
    Reputation
    210
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/112
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    The project has been updated quite a bit since I first made this topic.

    In the latest update I've added a new class (CLocation) to help the object manager get information on object and units location, facing, distance etc.

    There is however a bug that randomly crashes the program while trying to read descriptor field, I have been looking into it but haven't found what is causing it.

    If anyone have suggestions of functions to add to the object manager, please reply here or send me a PM!

    Next I will still be updating the object manager with new functions and add more controls to the GUI interface (editbox/richedit is on the top of the list).

  12. #12
    Frosttall's Avatar Active Member
    Reputation
    64
    Join Date
    Feb 2011
    Posts
    261
    Thanks G/R
    16/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Erm sorry, but this seems to be totally incorrect:

    Code:
    double CLocation::GetDistanceTo(CLocation l) {
            return GetDistanceToFlat(l) + abs(Z - l.Z);
    }
    
    double CLocation::GetDistanceToFlat(CLocation l) {
            return abs(X - l.X) + abs(Y - l.Y);
    }
    
    double CLocation::GetDistanceToSelf() {
            return GetDistanceTo(ObjectManager->GetLocalPlayer()->Location());
    }
    Since when is a distance a simple addition of the difference between the axis-values?

    Distance2D = Sqrt((l1.X - l2.X)^2 + (l1.Y - l2.Y)^2)

    You know Pythagoras, do you?
    Last edited by Frosttall; 01-22-2013 at 08:35 AM.

  13. #13
    ejt's Avatar Contributor
    Reputation
    210
    Join Date
    Mar 2008
    Posts
    166
    Thanks G/R
    3/112
    Trade Feedback
    0 (0%)
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Frosttall View Post
    Erm sorry, but this seems to be totally incorrect:

    Code:
    double CLocation::GetDistanceTo(CLocation l) {
            return GetDistanceToFlat(l) + abs(Z - l.Z);
    }
    
    double CLocation::GetDistanceToFlat(CLocation l) {
            return abs(X - l.X) + abs(Y - l.Y);
    }
    
    double CLocation::GetDistanceToSelf() {
            return GetDistanceTo(ObjectManager->GetLocalPlayer()->Location());
    }
    Since when is a distance a simple addition of the difference between the axis-values?

    Distance2D = Sqrt((l1.X - l2.X)^2 + (l1.Y - l2.Y)^2)

    You know Pythagoras, do you?
    Yeah that seems way of now that I go back to it. Programming after being up all night = bad idea. I haven't tested the function yet so will test and rewrite it.

    Thank you!
    Last edited by HI5; 01-24-2013 at 05:58 PM.

  14. #14
    Serpious's Avatar Contributor CoreCoins Purchaser
    Reputation
    134
    Join Date
    Jul 2011
    Posts
    364
    Thanks G/R
    0/1
    Trade Feedback
    4 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Ignore the troll.

    Even tho I shall not be taking advantage of this (As it is C++) well done for doing this.

    +rep

  15. #15
    DarkLinux's Avatar Former Staff
    CoreCoins Purchaser Authenticator enabled
    Reputation
    1627
    Join Date
    May 2010
    Posts
    1,846
    Thanks G/R
    193/539
    Trade Feedback
    16 (100%)
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)
    This looks like fun I would use a Hook as I have not seen Blizzard attempt to detect bots in a long time... But it would be fun to try and do it out of process... +rep

Page 1 of 2 12 LastLast

Similar Threads

  1. Project: WoW Bot
    By Kallblodig in forum World of Warcraft General
    Replies: 2
    Last Post: 08-08-2009, 07:48 AM
  2. WoW bot program. NOT wow glider
    By Disphotic in forum World of Warcraft General
    Replies: 3
    Last Post: 10-17-2006, 12:39 PM
  3. WoW!Dupe Project
    By =sinister= in forum World of Warcraft General
    Replies: 19
    Last Post: 08-28-2006, 09:04 PM
  4. [WoW Bot] WoW Glider Full Version 0.6.8
    By Matt in forum World of Warcraft Bots and Programs
    Replies: 39
    Last Post: 05-08-2006, 12:15 AM
  5. World of Warcraft WoW!Bot (GetALifeBot) 0.61 for WoW 1.9.4 + FishBot
    By Matt in forum World of Warcraft Bots and Programs
    Replies: 43
    Last Post: 04-18-2006, 04:55 AM
All times are GMT -5. The time now is 03:20 PM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search