Jump to content

[WIP] - Thermo Panther - WoW Bot


malu05
 Share

Recommended Posts

Thermo Panther

YouTube Examlple

Alpha Download

This is the final bot in the Thermo Series.

Here 2 years ago after my failed attempt to make a good bot, I worked out a basic pathing engine based on the A* algorithm.

A few month back I did a project where I had to use Dijkstra so I decided to test it out on my old code to see how to work things out.

So before getting into the code ill show how it works.

Pathing and Travelling Engine:

Here we have our sample World of Warcraft terrain.

Posted Image

With a mapping application i have mapped out paths to diffrent areas here in the region.

Posted Image

These paths are defined with pathing points and each point have connections.

The little green square in the middle is our "toons" position.

As you can see there is a little red dot above it, that point is connected to another point , and that point is connected to 3 points.

Here is a example of the "mesh"

WP1=-8905.5185546875!-122.028213500977!82.0919799804688#Elwynn Forest$%2
WP2=-8907.5791015625!-121.286697387695!82.071418762207#Elwynn Forest$1%3
WP3=-8909.7294921875!-120.737571716309!82.0549545288086#Elwynn Forest$2%4
WP4=-8911.6884765625!-119.714225769043!82.0254058837891#Elwynn Forest$3%5

The format is: WPnr,X,Y,Z,AreaName,Connection[n]

Connection is linked to waypoint NR so in this example:

WP1=-8905.5185546875!-122.028213500977!82.0919799804688#Elwynn Forest$%2

W1 only have 1 connection, and that is to WP2

While WP2

WP2=-8907.5791015625!-121.286697387695!82.071418762207#Elwynn Forest$1%3

Have connections to both WP1 and WP3

!#$ and % are seperators.

Posted Image

As told before the green square is out "toon" while the little blue square in the middle right side is our destination.

From the nearest point the app will start looking for a route to take.

We start at point 1 here since it is the point that is closest to our toon.

Point 1 have 1 connection and that is to point 2. So that must be the way we should go.

Point 2 have 3 connections however we have already been at point 1, so point 1 is in our blacklist and will not be taken into consideration.

Now the bot will focus on the 2 new paths at same time esntead of just one at a time. And keep on moving to the linked points untill at step 20 it reaches the destination point.

Posted Image

Here we got the grinding system

The Grinding system is made up of Pathing Points and Hotspots.

Hotspots are points we want to loop between. When the bot reaches a hotspot it will choose a random new hotspot and walk there.

It will use the Pathing Points to walk between each Hotspot.

If the bot get close to a mob while on the move it will run to the mob and start a combat sequence.

Posted Image

When you leave a Hotspot the Hotspot will be put into a cooldown list with a value like 3.

Each time the bot leaves a new Hotpot the cooldown will go 1 down untill it reaches 0 and the cooldown is no longer applied.

The bot will prioritize hotspots with the smallest cooldown. But if all hotspots have cooldown it will take a random on the cooldown level where there is hotspots on.

NPC Handling:

The bot uses the TLS index to get information about nearby objects and NPC's.

So it gather information like NPC health, Energy/Mana, Debuffs, Target, GotQuest you name it.

Posted Image

More details and source comming soon.

Edited by malu05

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

  • Replies 132
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

VERY nice! I always look forward to your scripts. Is there another site where you update regularly?

[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Link to comment
Share on other sites

I am currently working on the quest manager.

The quest manager is the hub where you can select the quests from your questlog and start making a "profile" for the quest.

Posted Image

The quest will be added into the pool of quests.

I have allready made the Grind Manager

Posted Image

Here you can select a grind type. This is just for your own sake since you later on can get a list of all available grinds for your level and then you can pick "GOLD" or "REP" only for example.

You can Add Factions. When you add a faction the bot will only attack mobs from that faction. However if you are attacked by a mob from another faction it will off cause defend itself.

To add a faction you simply select a mob, and hit the add faction button. The bot will know what mob you have selected and add the faction to the list. Same goes for avoid.

With the Avoid Faction you can make the bot avoid certain factions, for example elites or some mobs that you just don't want to mess around with.

When you enter the grind manager it will set the minimum level to your level and set the maximum level to your level + 2. The bot will not select grinds that are not in range of your level.

Combat settings are profile specific settings that each class should have. For example casters may require a certain approach and humanoids might flee so there are many things that should be tweaked for each grind.

Waypoints, Connections and Hotspots are just like mentioned above.

One Way Pathing is good if you jump down a hill or so. Because you will not be able to walk up the hill but since you can jump down the hill, activating the one way pathing will ensure that the bot does make connections to past waypoints.

Edited by malu05

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

hi Mad L. nice to see you back in action, i have some nice ideas.

how about a central quest/pathing database, mysql maybe? possible with the mysql udf using the mysql32.dll.

it would be much quicker then creating a database by yourself.

I can't wait to see the source of this thing, this is looks really developed, and im seriously interested in seeing how you translated the a* algorithm to autoit. I am definately going to follow this and learn something from your code biggrin.gif

the a* algorythm is already here in the forum lust look for it, i think toady implemented it.

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

I can't wait to see the source of this thing, this is looks really developed, and im seriously interested in seeing how you translated the a* algorithm to autoit. I am definately going to follow this and learn something from your code :)

Wow, you don't look around much do you. Toady has made the A* Algorithm in AutoIt *facepalm*
Link to comment
Share on other sites

I can't wait to see the source of this thing, this is looks really developed, and im seriously interested in seeing how you translated the a* algorithm to autoit. I am definately going to follow this and learn something from your code :o

I don't use A*, its Dijkstra.

But potato potato.

hi Mad L. nice to see you back in action, i have some nice ideas.

how about a central quest/pathing database, mysql maybe? possible with the mysql udf using the mysql32.dll.

it would be much quicker then creating a database by yourself.

The plan was a global database of quests.

All my stuff is still stored in INI format since it was easier to get going but im sure going to SQL or XML when i am in the finishing stage.

I have ripped all data from (somewhere)^^ so I got basically all quests, npcs, spells and items in 4 major INI databses.. it is a mess ^^

The database itself is not a mess but since they all are inner connected i just spend too much time trying to find things.

My plan is to have a inteligent Quest Queueing system.

So you make a level 1 toon, set options like what professions you want and what Areas / Rep you prefer and if you go for Gold or Leveling.

Then it will find quests that matches your needs and make a queue of quests from 1 through 80.

The reason why I also have grind support is that I can use that to fill in the gab, for example if you complete all quests in a area and you are still 1 level away from your next set of quests requirement, the bot will find a matching grind spot(s) to bring you the last needed level.

I currently have a blacklist for items and all "trash"items in the item database will also be sold. But the idea is to have a system that upon your class/spec/professions will pick what items you should keep.

I have a simple version of that applied where it if you are a warrior will prefer Mail over Leather over Cloth over (nothing). And armor count is the key factor. But offcause stats and all that needs to be taken account for.

Yesterday I added a "anykey" support so it can play with any setup in your actionbar so you don't need to predefine anything.

The bot still only supports 1 bag (the main bag) and will not add newly found bags into empty bag slots and will offcause not sell anything in other bags. But i will surely be adding that soon.

But main focus now is the quest editor.

The "bedplan" was like this.

Posted Image

(hard to make straight lines in a pillow :) )

As you can see in my last post the quest selector is quite close to the original idea just without the stuff that was not needed.

However the quest editor itself might end up a bit different.

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

If you Need help with the port to sql/xml i would be glad if i can help you, creating an erd for the database porting the dump etc... Or as anything i can help you with.

Btw typing with iPhone is crap:-)

$a=StringSplit("547275737420796F757220546563686E6F6C75737421","")
For $b=1 To UBound($a)+(-1*-1*-1)step(2^4/8);&$b+=1*2/40*µ&Asc(4)
Assign("c",Eval("c")&Chr(Dec($a[$b]&$a[$b+1])));''Chr("a")&"HI"
Next ;time_U&r34d,ths,U-may=get$the&c.l.u.e;b3st-regards,JRSmile;
MsgBox(0x000000,"",Eval("c"));PiEs:d0nt+*b3.s4d.4ft3r.1st-try:-)
Link to comment
Share on other sites

A noob question..i cannot seem to get wow memory to open..

a call to openProcess with VM_READ gives handle=0

if i use permedit to give my prog system priveleges, i can open the handle but my autoit script crashes

sedebugpriv also does not work...any ideas on what to do?

Make a thread in the help forum. Please do not derail this one.

[left][sub]We're trapped in the belly of this horrible machine.[/sub][sup]And the machine is bleeding to death...[/sup][sup][/sup][/left]

Link to comment
Share on other sites

If you Need help with the port to sql/xml i would be glad if i can help you, creating an erd for the database porting the dump etc... Or as anything i can help you with.

Btw typing with iPhone is crap:-)

Ill post the source tommorow.

Have a bit too much work here so i guess maybe someone could aid this project ^^

[center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]

Link to comment
Share on other sites

Ill post the source tommorow.

Have a bit too much work here so i guess maybe someone could aid this project ^^

Sounds good.. i would love to help u.. but dont think im good enought to be able to aid u :)

love to beta test etc etc. :o

http://www.autoitscript.com/forum/index.php?showtopic=69911 <-- Best hacker ever :D

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...