Jump to content

World Of Warcraft Development


malu05
 Share

Recommended Posts

  • Replies 470
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

HEy malu,

i have been working on this thing since you let me test it. remember when i told you that the memory locations of german WoWs differ from the english or frensh ones? that was not true at all. i found the x/y and rotation addresses and they are the same as yours. played with the memory functions a little and figured out that they dont work. postet this problem on help/support forum. hope i get help soon...

so all i wanted to say is:

Your Code is fine. The bot is universally usable and independent. The problem is some conflict between AutoIt and non-english OS... i believe.

Well the things that have to work is the dll call.

It uses a 32bit version so if you are running XP64 or Vista64 then it shouldn't be able to run (afaik).

The OS also have to accept privileges changes to admin. So you have to use a Administrator user account to be able to run it (afaik).

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

Link to comment
Share on other sites

I scanned wow memory and can provide you addresses for health, mana, pet health etc

cheers :P

Do me a favour and close your WoW Client and start it back up. Values gone? :shocked:

Well the things that have to work is the dll call.

It uses a 32bit version so if you are running XP64 or Vista64 then it shouldn't be able to run (afaik).

The OS also have to accept privileges changes to admin. So you have to use a Administrator user account to be able to run it (afaik).

I am logged in as an Admin on this PC so this aint it. I use XP... :(

Would you be so kind to provide me the link to NomadMemory func on this forum? Because, unless you can help me, i do not want to discuss this issue here since this thread is for your bot, not my dll problems.

Link to comment
Share on other sites

First of all malu05 i'd like to say you have done a great job.

I've made a similar thing in order to have my then lev 60 Priest follow my alt on another account and heal him.

It was a rudimentary thing. A spectrum of 10 colors representing health % of my alt plus a few control areas where present on the WoW addon.

Autoit was looping through checking each area taking appropriate action.

e.g.

if my alt was at 80% health a Renew was thrown.

if my alt was at 20% health a PW:Shield + a Big heal thrown.

if control colors showed priest was under attack ... PW:Shield was thrown and bot healed himself ....

Kinda basic stuff

But i used larger colored areas than your pixels, (Damn why didn't i come up with the pixel idea :shocked: )

Anyway that is history.

A few months ago i got frustrated with sites containing Quest info so i made a software in C# that datamined every single piece of information from different WoW sites.

It stored the information in XML files.

From Quests.xml

<Quest id="52" name="Protect the Frontier" level="10" faction="A" zone="Elwynn Forest" npc_or_item_name="Guard Thomas" npc_id="261" item_id="" objectives="Kill 8 Prowlers and 5 Young Forest Bears, and then return to Guard Thomas at the east Elwynn bridge." description="Hail, <Name>. Wild animals are growing more and more aggressive the farther we get from Goldshire, and the Eastvale Logging Camp suffers nearly constant attacks from wolves and bears!
We could use your help out here." completion="NA" coins="NA">
    <mob_needed id="118" name="Prowler" count=""/>
    <mob_needed id="822" name="Young Forest Bear" count=""/>
</Quest>

The intresting thing here is what mobs are needed to complete the Quest.

Which brings us to Npcs.xml

The Start Npc
<Npc id="261" name="Guard Thomas" min_level="" max_level="" faction="A" zone="Elwynn Forest" qgiver="1" title="" elite="0" rare="0">
    <location x="0" y="0"/>
</Npc>

The targets

<Npc id="118" name="Prowler" min_level="" max_level="" faction="" zone="Duskwood" qgiver="0" title="" elite="0" rare="0">
    <location x="0" y="0"/>
</Npc>

<Npc id="822" name="Young Forest Bear" min_level="" max_level="" faction="" zone="Elwynn Forest" qgiver="0" title="" elite="0" rare="0">
    <location x="0" y="0"/>
</Npc>

Looking at the element location (i Use standard X,Y cordinates ranging from 0-99) we know where the Start Npc is and where the target mobs are. Disregard from the fact that the value is 0 ... its an old XML listing. The new one is on another Computer.

What i'd like to do merging your bot and my program? (Playing with thoughts here)

Thought 1. WoW Quest GPS function.

Create or even better alter a Quest WoW addon so it loads all the Quests from my XML file for the Area that your character is situated on.

Quests already in the quest log and quests completed are separated from the ones that are not.

If i select a quest i have in my quest log ... your Bot paints direction markers pointing towards each of the target mobs, and thus helping you find them. In quests where you gotta collect items i have XML file connecting the mob or object that drops the item so no sweat there either.

If you select a Q that you don't have it points you towards the starting NPC or if it is an item starting it towards mobs that drop it.

You kinda get the idea.

Thought 2. This is quite an evil one.

Your bot can go from A to B. Right ?

What if my program provided many A:s and B:s? And what to do when it gets to that A or B! Need more clues ?

e.g. Go to A and talk to Npc. Go to B and C and D and E and kill mobs till you get Q complete. Run Back to A and .... lol

Not an easy task but its is totaly doable.

Kinda sounds challenging but imagine ? A bot that quests!!! Yikes. And i welcome any input from other users that are interested in participating ...

If you're not interested, Don't flame me now if you have the Source link anywhere but can i have Source code ?

BR

/eperkar

.

P.S.

If we, or i pull this one off i would prefer not to release it to public. Doing smal simple automatons is one thing but such a thing is imho against the spirit of gaming.

Link to comment
Share on other sites

Just a comment on your going from Point A to Point B to get and complete quests there Perkilis, is that Malu's script uses the actual location, not a 0-99 but rather a number set that covers the entire continent that he is on. So for his bot to go from 23,53 (in 'addon' coords) to 44,78 (in 'addon' coords) his bot would be reading from an addon as to where his location is, not how his bot currently functions.

However I'm sure you could take a look at the source he provided and modify as to where it reads the locations from to just look for what your addon says. Just a thought :shocked:

Link to comment
Share on other sites

Just a comment on your going from Point A to Point B to get and complete quests there Perkilis, is that Malu's script uses the actual location, not a 0-99 but rather a number set that covers the entire continent that he is on. So for his bot to go from 23,53 (in 'addon' coords) to 44,78 (in 'addon' coords) his bot would be reading from an addon as to where his location is, not how his bot currently functions.

However I'm sure you could take a look at the source he provided and modify as to where it reads the locations from to just look for what your addon says. Just a thought :shocked:

Unfortunately im not at home and its very hard for me to actually explain in details without having screenshots of my applications.

What i forgot to mention is that i added A-Star pathfinding to it and for the pathfinding to work i had to implement a program that adds Pathing cost to each X,Y.

It had the following cost values.

1 - Road.

2 - Road + 1 addon cord.

3 - Road + 2 addon cord.

4 - Road + 3 addon cord.

5 - Impassable.

The 2-4 Cost had nothing to do with the terrain but with the possibility that you will get delayed by bumping into mobs. (The further from road the more mobs you will encounter)

What i remember from my time playing with WOWSharp and talking to the ppl in the boards WOW coors are kinda funny. Iirc coors are from 0-1 for X and 0-1 for Y and it was kinda nasty to transform from a WoW X= 0,00067890, Y=0,0876533 to addon cords or was it vice versa ... can't remmember now.

I will run the bot and see what output it produces.

The Idea then would be to say A-B in Bot cordinates and let an A-star algorithm return the path to the robot.

But i will get back to you with more findings.

BR

/P

.

Link to comment
Share on other sites

Well the things that have to work is the dll call.

It uses a 32bit version so if you are running XP64 or Vista64 then it shouldn't be able to run (afaik).

The OS also have to accept privileges changes to admin. So you have to use a Administrator user account to be able to run it (afaik).

So it won't work on Windows Vista?

What goes around comes around... Payback's a bitch.

Link to comment
Share on other sites

Some questions if it is possible for you to answer.

1.

A.

What i understood from the post the Bot saves nodes automatically in the XML file in the following format

Asume the bot starts in Top left corner of the map moving Eastwards.

<ROW Continent="0" Zone="00" Nr="1" posX="0" posY="0" Comment=""/>

<ROW Continent="0" Zone="00" Nr="2" posX="1" posY="0" Comment=""/>

<ROW Continent="0" Zone="00" Nr="3" posX="2" posY="0" Comment=""/>

<ROW Continent="0" Zone="00" Nr="4" posX="3" posY="0" Comment=""/>

<ROW Continent="0" Zone="00" Nr="5" posX="4" posY="0" Comment=""/>

B.

Or am i totally wrong and the bot saves nodes every time the add waypoint Hot key is pressed ?

That means you gotta go manually to a place before the bot can go there by itself. Rigth ?

2.

Assuming B in the previous question is the correct assumption.

A.

The bot finds its way by calculating its current position vs final position by straight off mathematical means and decides where to go next ?

If true it will make a straight dash for its final destination if just a start and only one end node exist ... right ? Meaning if it hits an obstacle it will return to the previous known position that it considers "safe".

If my suspicions are correct i am almost 100% confident i can provide a graphical tool to create nodes for the bot outside the actual bot-script.

BR

/P

.

Link to comment
Share on other sites

well, not only for vista. i got winXP and it wont work either.... have to work my way arround again

Well you are the only one with the problem, and about german 2 other germans on the test team did work it out just fine.

I guess there is "something"... with your wow or windows ^^

Some questions if it is possible for you to answer.

1.

A.

What i understood from the post the Bot saves nodes automatically in the XML file in the following format

Asume the bot starts in Top left corner of the map moving Eastwards.

<ROW Continent="0" Zone="00" Nr="1" posX="0" posY="0" Comment=""/>

<ROW Continent="0" Zone="00" Nr="2" posX="1" posY="0" Comment=""/>

<ROW Continent="0" Zone="00" Nr="3" posX="2" posY="0" Comment=""/>

<ROW Continent="0" Zone="00" Nr="4" posX="3" posY="0" Comment=""/>

<ROW Continent="0" Zone="00" Nr="5" posX="4" posY="0" Comment=""/>

B.

Or am i totally wrong and the bot saves nodes every time the add waypoint Hot key is pressed ?

That means you gotta go manually to a place before the bot can go there by itself. Rigth ?

2.

Assuming B in the previous question is the correct assumption.

A.

The bot finds its way by calculating its current position vs final position by straight off mathematical means and decides where to go next ?

If true it will make a straight dash for its final destination if just a start and only one end node exist ... right ? Meaning if it hits an obstacle it will return to the previous known position that it considers "safe".

If my suspicions are correct i am almost 100% confident i can provide a graphical tool to create nodes for the bot outside the actual bot-script.

BR

/P

.

i thought it was shown very well in the demonstration movie, but if not.. yes... you do press a button to save a waypoint.

And yes... it goes straight from one point to another...

Another thing...

It seem like a guy have taken my code and is taking money for it....

http://www.visualbots.net/visualtraveler.htm

I kinda laughed when i saw it, look how he even took the interface, removed 3 GUI units and added 2.

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

Link to comment
Share on other sites

Thats awesome .. stupid...

and the funny thing is that people actually buy bot from this guy^^

just take a look at the forum :shocked:

Should we abuse him through his forums??? A Big mass of Anti Visual Bots should work :(

Link to comment
Share on other sites

Actually i've done the pathfinding as standalone.

Not implemented yet in the bot code. Perhaps if i supply you with XML files you can try them.

Made a COM in C# with a function ReturnPath(string filename, int StartX, int StartY, int EndX, int EndY) that produces <ROW/> elements and writes it to an xmlfile.

string filename is the file containing the path costs.

Pathfinding is simple A-Star.

It uses a flat textfile with following format:

-1 = Impassable.

1 = Lowest cost

2 ...

and so on up to 4

File looks like this

-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, .... and so on for up to 600
Same applies for the Y axis.

Does it matter for your bot if the Node list is 1000 nodes long ? because it returns every single node and 600X600 = 360000 in total (one of the reasins i use flat textfile to store the costs)

So in a best case scenario (Straight line from East to West or North to south) there will be 600 <ROW/> elements. But thats for big travels. Going from Goldshire to SW will be less <ROW/> elements.

But i can add a parameter to the Function stating how many nodes to skip if deemed appropriate.

Gonna try and add some debugging output in the COM source. Hopefully done at weekend.

BR

/P

.

Link to comment
Share on other sites

Should we abuse him through his forums??? A Big mass of Anti Visual Bots should work :)

Hehe.. no.

I released the code with no Terms Of Use, so anyone can start do anything with the code, even sell it... however i still got the copyright so he cant literally "steal" it.

Actually i've done the pathfinding as standalone.

Not implemented yet in the bot code. Perhaps if i supply you with XML files you can try them.

Made a COM in C# with a function ReturnPath(string filename, int StartX, int StartY, int EndX, int EndY) that produces <ROW/> elements and writes it to an xmlfile.

string filename is the file containing the path costs.

Pathfinding is simple A-Star.

It uses a flat textfile with following format:

-1 = Impassable.

1 = Lowest cost

2 ...

and so on up to 4

File looks like this

-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, .... and so on for up to 600
Same applies for the Y axis.

Does it matter for your bot if the Node list is 1000 nodes long ? because it returns every single node and 600X600 = 360000 in total (one of the reasins i use flat textfile to store the costs)

So in a best case scenario (Straight line from East to West or North to south) there will be 600 <ROW/> elements. But thats for big travels. Going from Goldshire to SW will be less <ROW/> elements.

But i can add a parameter to the Function stating how many nodes to skip if deemed appropriate.

Gonna try and add some debugging output in the COM source. Hopefully done at weekend.

BR

/P

.

Please define that a bit more, i am not quite sure what you mean.

You mean if you say you start at x and want to go to y, it produces a line with all the nodes needed for a travel?

I acturally made something for my Thermo Binary (the old) bot that added the nodes to another XML file, to keep track on where they were and where they were linked to.

This made it possible to select a destination from a ingame menu and then the bot would travel from the current position to the end position, no matter where in the world it was.

For anyone who had the same problem as i did: Values returned blank! No Coords, no ContinentID nothing? Check here...

Thanks for that comment. I used that program some month ago when using some old scanners, and it works great.

However, i have implanted a access in my code...

SetPrivilege("SeDebugPrivilege", 1)

Does the same thing. It's still a mystery' why it won't work on your comp.

But if anyone have the same progblem http://www.autoitscript.com/forum/index.php?showtopic=44972 indeed should fix it.

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

Link to comment
Share on other sites

For Malu05. (And the rest of you ofc)

Let me explain what my vision to improve BOT AI was.

Assume the following:

You are in a position A in Elwynn Forest. That would be the start position.

In your bot You have an XML file that contains POI (Points of Interest) for that Zone e.g.

  • Jangolode Mine
  • Hogger
  • Goldshire Square
  • Goldshire Innkeeper
You press a fictional button on your bot Application and the list appears. You then select a POI and Coordinates for current position, and POI position are sent to the COM object i wrote. It will then create and XML file just like the Profile file in your Bot containing all the <ROW/> nodes the bot needs to reach its destination.

So in pseudo-code in bot.

$selected_poiX = getPOIX($currentZone, "Hogger")

$selected_poiY = getPOIY($currentZone, "Hogger")

$obj = CreateObject("TBPathfinding.Pathfindind")

$obj.CreatePath($currentZone, $currentX, $currentY, $selected_poiX, $selected_poiY)

This will create the XML-Profile file needed.

You load it in bot and start walking there.

"You talk the talk, but can you walk the walk?" you might ask.

Here is a screenshot of my Pathfinding GUI application. In its original state.

Posted Image

Here is another with a few costs added to it.

Posted Image

Since the screenshots i added a "Create Thermo" that creates a plain test file containing the node costs for each coordinate.

File looks like this:

1,1,1,-1,2, ... 600 columns

1,2,3,1,1,-1 ...

600 Rows.

A little explaination for the Application.

I used a 800X600 image.

Every grid position corresponds to a 3X3 Bot coordinate area. So 0,0 in the gui is 0-2 X and 0-2 Y.

Left side is the tool area.

Right side is the area where you "Paint" the Pathfinding costs.

I have some problems with the Heuristics of the path finding because it takes a long time to return a path. I suspect that it can depend on the following reasons.

  • My Cost file is incomplete.
  • No Tie-Breakers (see here)
  • Too many path costs
If anyone want i could release the appllication. Since im new to these boards i prefer if someone with more reputation than me, that can complile the code does it to avoid discusions like "OMG WoW pass hackzzors, the guy is a scam"

Apart from that i believe i got it.

Have a nice 1st of May.

BR

/P

.

Link to comment
Share on other sites

For Malu05. (And the rest of you ofc)

Let me explain what my vision to improve BOT AI was.

Assume the following:...

Ohh Joy!

I made a scetch for a such app back when i was developing on the 2nd bot Thermo Binary, but it never made it beyond the drawing board.

I must say, amazing work you did there.

I can add a AreaID in my code and in the XML files so you don't need to set the location offset for each Area (so the bot will determine where it is located, in your example Elwyn Forest).

Problem is the resolution of the grid.

If you want to add flightmasters etc it will be impossible to do with the current grind.

But, you can always make a "Zone" in the Grid, and when the char enters the Zone, the Zone itself take control.

Ill work out a sample for that...

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

Link to comment
Share on other sites

Hi again.

State of code.

  • Stopped working on my own algorithm and copied the code from another person. (Ofc credits will be there). This implementation returns a path across the map in around 0,03 seconds.
  • Will make a DLL of it in a few days.
Questions.

Q1. Is the bot using coordinates on a zone based on a 600*600 grid ?

Q2. Is there a way from the client files to figure out where Trees, Fences and building walls are ? (Asking that sin i saw in a post above that you were member of Nogg exploration team, and Snarg also can help since he is admin on a site i usually visit)

For Discusion.

At the moment i have the tools to return the best path to the bot. But no consideration is taken on the mobile objects in an area. I simply add a quite high cost for that area so it can be avoided by the pathing algorithm if it can be avoided.

The thought i play with is the following.

XML Listing

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Zones>
    <Zone name="Elwynn Forest" id="00" continent_id="0">
        <Pois>
            <Poi name="Hogger">
                <PoiData>
                    <Origo X="345" Y="456"/>
                    <Radius R="15"/>
                    <Threat Factor="Hostile" Faction="B"/>
                </PoiData>
            </Poi>
            <Poi name="The Princess">
                <PoiData>
                    <Origo X="298" Y="145"/>
                    <Radius R="5"/>
                    <Threat Factor="Neutral" Faction="B"/>
                </PoiData>
            </Poi>
        </Pois>
    </Zone>
</Zones>

The above describes a lets call it a "Hot Spot" area. Picture it as a circle on the map showing that this area is intresting but even informing the bot how it should be treated.

How it could be used? (People with alliance toons will recognise the environments.)

Asume you get the quest to kill Hogger.

You get the Path you need to follow.

From the wanted sign to your target you have to cross a few "Hot Spot" areas. The first one contains Yellow "Neutral" mobs (Some kind of Boars) but the rest are "Hostile" ... (Gnolls).

You can tell your bot to either:

  • Avoid most of the hotspot areas. (Swimming, and aproach Hogger from the south)
  • Go in a straight line for Hogger. Killing anything hostile.
But such functionality needs alot of work to be done in order to add all those hotspots.

But wait! Didn't i mention i have a tool for that too :D ?

Another thing that the bot would benefit from this would be altering bot states depending on where it is.

States could be.

  • Traveling In Safe Area
  • Traveling In Neutral Area
  • Traveling In Hostile Area
I havent tried the bot myself (not that im afraid to loose acct) but because i help a friend with his Aldor Rep. The optimal approach would be that you specify the format of the output you want and i provide the DLL:s for it. Since it would take me a week or so to get a grasp of the Robot code.

Once again i'd like to point out im doing this for the challenge to see if it can be done! I have a 70, a few 65, and lots of lev 60 toons all manually leveled. So bot usage is not my thing. But stick around ... you will for sure learn a thing or two about Artificial Inteligence in this thread :D.

Very, Very, Very distant thoughts.

Implement some kind of behaviour in the bot so it reacts according to its souroundings ... reading topics on that.

BR

/P

.

P.S. Trying to tidy up my code so i can give it to ppl with C# knowledge. Since it is very big project with many modules.

I will present the project on the boards Snarg is admin on. I hope he can help with telling me who to give the code too. :)

Link to comment
Share on other sites

Heya Everyone,

Beeing interested by that project, let's see how i can help. The AI part is interresting for me. Depending on the kind of data the bot can collect, which will serve as his vision, there are various techniques than can be used (the same robots uses to explore hostile environments like Mars :)).

Concerning the obstacles, make the bot enrich himself the knowledge he has about the environment. For example when the bot is block, we can assume there's an obstacle and record it for next time he passes around ?

Second question, about how the data is stored, why not use a little embedded database ? Wouldn't it be a little more efficient than XML (which is fine to read, but can become really big if there's a lot of Data).

Cheers.

Tsa

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...