Member
Developing a bot for the community, need a little help.
The current status of this project can be found within the first 3 posts.
First, a little history. You can skip this part if you really want to. I wrote a bot in AutoIt several months ago, before wrath, called Healbot AI. The concept was simple. The bot would check health values, and heal who needed it. While functional, It was decent at best. It didn't do everything I wanted it to do, though, and it was limited in what it could do by how I chose to get data from in the game... I wrote an addon in game that would use LUA to get information like UnitHealth, UnitMaxHealth, etc... The addon would convert the data to a percentage of total, and then change the color of a pixel on the screen. An AutoIt script I wrote would read the color of the pixel and then convert that data back to a health value... Then it would go through a long series of processes before finally deciding what to do. Sit on your thumbs, or cast a heal, basically.
I soon discovered there were a lot of limitations to the language I was using, and a lot of problems with how the pixels were read. First off, the whole process was slow. For as many conversions and calculations that were needed, the health wasn't being checked quickly enough for all the units, and ultimately I put the project on hold.
About 3 weeks ago I decided to approach the ideas I had from a different angle. I determined that to make the bot do everything I wanted it to do, it needed to be written in a more powerful language. I already knew that C++ was a very powerful language, so I set to work collecting information and pouring over it for hours and hours each day. In time, after several practice projects, I decided I was going to start work on coding the bot with the basics that I knew so far, and pick up the rest as I went.
I developed a list of things that the bot needed to do, in the order they needed to be done in. Here's the list:
Key: X = Complete, -> = Current Project, ? = Haven't started yet.
X Main Window Created and all components added.
X Child windows created and components added.
X Write a function that will randomize the title bar to lower detectability.
X Write a function that will index the system processes for later use.
X Write a function that will index all running instances of WoW.
-> Write a function that will fetch the name, health, level, alive/dead, threat, in range, buff/debuff data for all party/raid members.
-> Write a function that will fetch the mana, class, race, hasfullcontrol data for the player.
? Implement the logging of bot activities into the important functions.
? Make a child window that will allow me to select which instance of WoW I want to use by player name.
? Add the ability to select between Aggressive and Normal healing modes (Aggressive would be for heroics / raids)
? Add a function that will cycle through all units, checking health, prioritizing heals to low HP units, and units with agro.
? Add the Druid's healing code that will select which spell to use based on hot timers, cooldowns, and unit HP.
? Add the Priest's healing code that will select which spell to use based on hot timers, cooldowns, and unit HP.
? Add the Paladin's healing code that will select which spell to use based on cooldowns and unit HP.
? Add the Shaman's healing code that will select which spell to use based on cooldowns and unit HP.
? Add a function that will allow the bot to cast a spell in a minimized WoW instance. (allows for multiboxing with a healer on follow)
? Add the ability for the bot to drink / rez when out of combat, and mana potion if in combat and low mana.
? Add the ability for the bot to buff and cure debuffs on group members.
? Add intelligent follow code, using coordinates of X unit, distance to X unit, and map these coordinates in memory.
? Add code that will optionally center the bot in the middle of the group / raid (to be in range of as many units as possible).
? Add the ability for the bot to loot corpses whose loot belongs to it.
? INTRODUCE A CLOSED BETA FOR TESTING PURPOSES.
? Collect feedback, take suggestions, fix bugs, add features.
? INTRODUCE AN OPEN BETA.
? Collect feedback, take suggestions, fix bugs, add features.
? Initial release.
Credit for the help I've received so far goes to the following contributors: arighty, Apoc, lanman92, Nesox, Cypher, Shynd, bobbysing
Right now, I'm at the point where I read WoW's memory and I get some information. Okay, fine. A lot of information.
First thing I should mention is that I planned for the bot to distinguish between multiple instances of WoW. Up to 5 on one computer, actually. I've already got that taken care of though. This is done by checking all the processes on the computer, then figures out how many of those are WoW, saving the PIDs of all WoW instances to an array of structures. Inside each structure, I need to put the player name for ALL instances of WoW. This will let me select which instance of WoW contains the healer.
Then I need to go into that instance's memory and get the following information:
UnitHealth, UnitHealthMax, UnitLevel, UnitDetailedThreatSituation, UnitName, UnitExists, UnitInParty/Raid, UnitIsDeadOrGhost
for player, pet, focus, party1-4, partypet1-4 raid1-40, raidpet1-40
UnitClass, UnitRace, UnitMana, UnitManaMax, HasFullControl, GetSpellBonusHealing, UnitCastingInfo
for player
Last edited by Geminix86; 12-25-2008 at 09:27 AM.
Reason: Updated 12/25/08
These ads disappear when you log in.