Periklis Posted May 2, 2007 Posted May 2, 2007 (edited) 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.TsaI'm not against the idea of using a database ... it's just that the whole handling of it can be tedious.I find XML being a very powerful way of handling data and it a fast one too as long as you don't make your XPATH searches too complicated.Building "awarness" in the bot is kinda intriguing. It is nice having a bot that is aware of its souroundings and can make desisions based on the environment how to proceed. Could you please check a few topics on the subject and inform us about the possibilities?I could do it myself but i am preparing Path files for malou05 to test.And another thing out of subject.Can anyone list for me the codes for Continents and Zones that the Bot gets from the game ?I'm sure i can find out somehow but if anyone has them it would save lots of time BR/P. Edited May 2, 2007 by Periklis
malu05 Posted May 2, 2007 Author Posted May 2, 2007 (edited) Q1. Is the bot using coordinates on a zone based on a 600*600 grid ? No, the bot uses the Instance Coord System. Which might become a pain in the ass for you when you are goning to put it all toghter. I would highly recommrnd you trying to take the maps directly from the MPQ file. This will save space for the executeable but also make sure that you don't need to update the maps, cause they will be automaticly be updated when blizzard releases a new patch. You can find some good free mpq archiver dll's out there. But if it doesnt work try find "WinMPQ", it supports commandline inputs so you can easily base your program on that. So, what maps do you need? Take the ingame Minimaps and combine them, this gives a 99% accurate map and also include areas that are not WorldMap based. Like Deeprun Tram etc. So, how can you put them toghter? Well , it is quite easy. The World Of Warcraft world as you see it is a bunch of ADT files. Each ADT file have the terrain data, textures for the terrain etc. The ADT files also have links to the models (M2's and WMO's) that are placed around on the ADT like buildings, trees, barrels etc (not NPC's and some special serverside objects however). ADT files are squares and they all toghter work as a grid so on the top left corner of Kalimdor we got; World\Maps\Kalimdor\Kalimdor_0_0.adt World\Maps\Kalimdor\Kalimdor_0_1.adt World\Maps\Kalimdor\Kalimdor_0_2.adt World\Maps\Kalimdor\Kalimdor_1_0.adt World\Maps\Kalimdor\Kalimdor_1_1.adt World\Maps\Kalimdor\Kalimdor_1_2.adt This is GM Island So the 0_0 means 0,0 And 0_1 means 0,1 After GM Island there is a loong gab, and the next seen is World\Maps\Kalimdor\Kalimdor_19_12.adt reason for this is that from 1-19 there is nothing... no terrain. This is all defined in the *.WDT file, but that is irrelevant for this matter. Blizzard makes there Minimaps by scanning all the information from top left to buttom right and add it all to a *.blp file. The BLP files are then stored in the *.mpq files. The blp filenames are translated into md5 hashes, so when you see them in the mpq files they might have wierd names as "c6053bc299ec0387c4babca4bf634612.blp" So.. lets take a example: Here we are in Winterspring. Each of the BLP files present their ADT file. So map40_18.blp is Kalimdor40_18.adt The Hash translation file are located in Common.mpq textures\Minimap\md5translate.trs So... Take the md5translate.trs, translate the filenames needed for the current zone. extract them from the mpq file and use the blp files as grapichcal layout. Each ADT is the same Coord Size, so you can calculate each grid chrunk with it. 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) Yes, but this require a high ammount of memory reading and would be best to leave without. Can anyone list for me the codes for Continents and Zones that the Bot gets from the game ? Zone; http://www.wowwiki.com/LocalizedMapZones Continent: expandcollapse popup"id", 0,"Azeroth 1,"Kalimdor 13,"test 25,"ScottTest 29,"Test 30,"PVPZone01 33,"Shadowfang 34,"StormwindJail 35,"StormwindPrison 36,"DeadminesInstance 37,"PVPZone02 42,"Collin 43,"WailingCaverns 44,"Monastery 47,"RazorfenKraulInstance 48,"Blackfathom 70,"Uldaman 90,"GnomeragonInstance 109,"SunkenTemple 129,"RazorfenDowns 169,"EmeraldDream 189,"MonasteryInstances 209,"TanarisInstance 229,"BlackRockSpire 230,"BlackrockDepths 249,"OnyxiaLairInstance 269,"CavernsOfTime 289,"SchoolofNecromancy 309,"Zul'gurub 329,"Stratholme 349,"Mauradon 369,"DeeprunTram 389,"OrgrimmarInstance 409,"MoltenCore 429,"DireMaul 449,"AlliancePVPBarracks 450,"HordePVPBarracks 451,"development 469,"BlackwingLair 489,"PVPZone03 509,"AhnQiraj 529,"PVPZone04 530,"Expansion01 531,"AhnQirajTemple 532,"Karazahn 533,"Stratholme Raid 534,"HyjalPast 540,"HellfireMilitary 542,"HellfireDemon 543,"HellfireRampart 544,"HellfireRaid 545,"CoilfangPumping 546,"CoilfangMarsh 547,"CoilfangDraenei 548,"CoilfangRaid 550,"TempestKeepRaid 552,"TempestKeepArcane 553,"TempestKeepAtrium 554,"TempestKeepFactory 555,"AuchindounShadow 556,"AuchindounDemon 557,"AuchindounEthereal 558,"AuchindounDraenei 559,"PVPZone05 560,"HillsbradPast 562,"bladesedgearena 564,"BlackTemple 565,"GruulsLair 566,"NetherstormBG 568,"ZulAman Edited May 2, 2007 by malu05 [center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]
Periklis Posted May 2, 2007 Posted May 2, 2007 This is a little sample, Continent is the continent ID; 0 = Eastern Kingdom, 1 = Kalimdor (dungeons also have unique ID's)Zone Is the Zone ID; 00 is Elwyn Forest.NR is the XML ID; this can be used when making automated routes, like saying: If you are at nr 141 then you must go to 140 when walking to Stormwind and 142 if you want to go to IronforgeposX and posY Bot much to say here other than the position here is made with the Map Pos in wow, meaning the each Zone has fom 0-600 X-Y so the position is not Continent or World wide.Comment A good way to keep track on each Waypoint, but can also be used for log's etc.In Wowwiki i found this Localized Zone Id:sKinda differs from your post ... care to shed some light ?BR/P.
malu05 Posted May 2, 2007 Author Posted May 2, 2007 (edited) In Wowwiki i found this Localized Zone Id:sKinda differs from your post ... care to shed some light ?BR/P.http://www.wowwiki.com/LocalizedMapZones is the ZoneID's.And yes, a typing mistake; 10 is Elwyn ForestAnd above i posted the Continent ID's Edited May 2, 2007 by malu05 [center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]
Tsabrack Posted May 2, 2007 Posted May 2, 2007 Could you please check a few topics on the subject and inform us about the possibilities?Sure thing, i'll dig in it tonight can't really do it from work Tsa
Periklis Posted May 2, 2007 Posted May 2, 2007 LOL you're killing me malou05. I knew about the things described in your post but i wanted to forget them But it kinda happens that i have the thing you described above but it is on DirectX ... but if i remember corectly it was hard working on coordinates. I will get the code and start working on it See where it leads. The funny thing i suspect is that not much manual work will be needed on pathfinding since the minimap files already have the graphics ... so it might be easier to work on them. I will see where it leads. BR /P .
MagnumXL Posted May 2, 2007 Posted May 2, 2007 Do me a favour and close your WoW Client and start it back up. Values gone? I'm a total Newb at this but I just programmed the pointers like this: $ti = _MemoryRead(0x0012C2C8, $DllInformation, 'ptr') $hex = "0x" & Hex($ti+9328) $selfHP = _MemoryRead($hex, $DllInformation, 'ushort') If @Error Then MsgBox(4096, "ERROR", "Failed to read selfHP memory.") Exit EndIf Sorry to interrupt,.. please continue
WhOOt Posted May 2, 2007 Posted May 2, 2007 Hey MagnumXL, I'm also pretty much a newb at hacking, atleast hacking wow.. What prog do you use when finding the values? CheatEngine? Tsearch? And how do you find pointers? I've never really found out how to do that in any game Thanks a lot WhOOt
MagnumXL Posted May 3, 2007 Posted May 3, 2007 Hey MagnumXL, I'm also pretty much a newb at hacking, atleast hacking wow..What prog do you use when finding the values? CheatEngine? Tsearch?And how do you find pointers? I've never really found out how to do that in any game Thanks a lotWhOOtI'm Using ArtMoney Pro 7.24
Periklis Posted May 3, 2007 Posted May 3, 2007 I've been searching my drives for old code and found it.Credits:The code is taken from da_teach and company from their WoW!Radar tool. But has nothing to do with the robot itself. Totally stripped the illegal code when i was teaching myself DX programming.Problems.I found out that the DLL Wrapper for SFmpq.dll written by WoWSharp team is not working with the new common.MPQ. Browsing the different forums i came to the conclusion that it depends on the new size of the common.MPQ being 3.7 gb large. As i understood SFmpq.dll cannot address files larger than 2 gb.I found something called Ladik's MPQ editor that can open the common MPQ and i guess if i write a DLL wrapper for his DLL (Storm.dll) i will be back on track again.But writing it in C# will take a while so i'm going for the extract (*trs, *.blp) files approach.Some things i'd like to ask/state.The game coordinates are from 0,0 (top-left) to 1,1 (bottom-right) if im not misstaken.Every area (starting with dir: in md5translate.trs) is a 64*64 grid regardless if it contains empty spots.So every blp file should be 0.015625*0.015625 in ingame cordinates. So dividing its actual physical dimensions would give me coordinates to add to the pathfinding grid. I understand what ADT files are. But are they needed in my case ?Reading the md5translate.trs gives me all the areas/and the blp they are made of. Do they contain some additional info that might prove needed later ?I can guess that if they contain linked info on barrels, fences ... and so on i can by just reading the ADT file add impassable spots in the map.Is there any way to read the ADT files and make sense of what im reading ?So far this.BR/P.
Busti Posted May 3, 2007 Posted May 3, 2007 I'm Using ArtMoney Pro 7.24whats that ?= My UDF's : Startet on : 06.06.2006_CaseSearchOrReplaceStr();~> Searches OR Replaces a String,;~> With or Without Casesensivity
malu05 Posted May 3, 2007 Author Posted May 3, 2007 (edited) The game coordinates are from 0,0 (top-left) to 1,1 (bottom-right) if im not misstaken. No, top-left is for some wierd reason, 17068,17068 then going down to the middel of the world where 0,0 is. and then end (buttom right) is -17068,-17068 Every area (starting with dir: in md5translate.trs) is a 64*64 grid regardless if it contains empty spots. So every blp file should be 0.015625*0.015625 in ingame cordinates. So dividing its actual physical dimensions would give me coordinates to add to the pathfinding grid. Yes, the grid is 64,64 leaving 64blp files and 64adt files fir each row giving a total of 4096blp and adt files. The total grid size is 17068+17068 = 34136 Each chrunk (blp and adt is) 34136/64 = 533,375 533,375 x 533,375 Ingame cordinates. I understand what ADT files are. But are they needed in my case ? Reading the md5translate.trs gives me all the areas/and the blp they are made of. Do they contain some additional info that might prove needed later ? I can guess that if they contain linked info on barrels, fences ... and so on i can by just reading the ADT file add impassable spots in the map. Is there any way to read the ADT files and make sense of what im reading ? Yes, that is what i thought, the ADT files is almost fully documented and you will easily be able to get information about barrels, fences position, rotation and size. The problem is the size cause some objects might have a scale 100 and still be small, while others with scale 10 might be too big to move over. So initially you should make a database for like Trees in Elwyn Forest (objects of same type in one area got (almost) same scale fator) and their scale factor, and you can use that data to make the bot move around thoes trees. Another thing is that you can read the terrain altitude. This makes it possible for the bot to ignore steep hills etc, this can also be used to make sure that the bot wont run off a cliff. However if you want to simplify things just leave the Adt's. If you want to play with the ADT i got the documentation here for you; It's been a while since i played with it, so im not 100% if all of the objects are correct. But take a look. Edited May 3, 2007 by malu05 [center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]
Periklis Posted May 3, 2007 Posted May 3, 2007 (edited) I have a prototype ready.What ive done is extract the blp files as tga using conversion and then making them manually jpg with batch convert.Added buttons to gui for all directions so you can actually scroll the map.Thanx for the indo on cords. Will build now datastructures to hold the information.Hopefully i will manage to get something done soon.Any specific area you want me to start working with ? my favourite is Elwynn Forest Will get back to you when i got more.BR/P. Edited May 3, 2007 by Periklis
malu05 Posted May 4, 2007 Author Posted May 4, 2007 (edited) I have a prototype ready.What ive done is extract the blp files as tga using conversion and then making them manually jpg with batch convert.Added buttons to gui for all directions so you can actually scroll the map.Thanx for the indo on cords. Will build now datastructures to hold the information.Hopefully i will manage to get something done soon.Any specific area you want me to start working with ? my favourite is Elwynn Forest Will get back to you when i got more.BR/P. Impressive.So, i guess you will keep all the files in the MPQ file but make a small cache for the current loaded blp files in the app dir.(since all of them eats 250mb diskspace)Im not quite sure how the Dungeon *.blp files work, but i know some people who do, ill send back information when i know it.TBH, im looking forward to see a collaborative version of your app so i can start recode the bot for long distance traveling.and btw..Elwynn Forest FTW! Edited May 4, 2007 by malu05 [center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]
Periklis Posted May 4, 2007 Posted May 4, 2007 Impressive.So, i guess you will keep all the files in the MPQ file but make a small cache for the current loaded blp files in the app dir.(since all of them eats 250mb diskspace)Im not quite sure how the Dungeon *.blp files work, but i know some people who do, ill send back information when i know it.TBH, im looking forward to see a collaborative version of your app so i can start recode the bot for long distance traveling.and btw..Elwynn Forest FTW!The choises i had to make was:Doing it in DirectX which would prove easier since i have the code and no need for transformation needed or go for a simpler approach.In the DX case the blp files have to be extrracted since i cant find a dll with C# wrapper that i can use directly. On the other hand i could make on but thats waste of time at this stage since i have to overcome larger issues.First issue is the size of the path finding grid.The size is 34136*34136=1.165.266.496 (1.16 billion nodes) but !!!Look at the pic bellow:It's Kalimdor in case you missed it The red squares represent spots where no image is loaded thus no consideration should be taken for those grid coordinates.Doing that i realised i was totally off-track thinking the Picture files as my primary source of building pathfinding.I should concentrate on the grid instead.Solving the large size of path information data made me come up with the idea of splitting the map in 1000*1000 or 500*500 areas.Grid solution.So every SubGrid item if it is 1000*1000 will be approx. 2*2 blp.Meaning that:Pathing should be split in 2 tiers.1st. Tier.64*64Where the overall path is decided.So in this Tier information has to be added what choise is the best sence there are 8 paths to follow every one has to be given a value ... (If road, water ... hostile areas and so on)Once this path is done the one with better granularity will be calulated for every 1000*1000 grid.lets hope i can pull this off ... kinda large ammount of data.BR/P.
malu05 Posted May 4, 2007 Author Posted May 4, 2007 (edited) It's Kalimdor in case you missed it The red squares represent spots where no image is loaded thus no consideration should be taken for those grid coordinates.Hehe sure it is...Just to clarify i made this little autoIt WDT viewer once, based of some C++ code made by a friend of mine (thanks Nayra)(This is data read from the Kalimdor.wdt ... looks identical)Im really looking forward to see what you can come up with. Edited May 4, 2007 by malu05 [center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]
malu05 Posted May 4, 2007 Author Posted May 4, 2007 (edited) DataStream Manipulator / (some would say wallhack)This is a bit offtopic, but related to World Of Warcraft...So, today i was a bit bored, and decided to do something with the packet data that i have decrypted.So what i made was a little DataStream manipulator, making it possible to "noClip" inside wow.This offcause also require a little client change but the fun part is to make the server belive that you are infact walking through the walls (if you do this without packets, you will get instantly disconnected due to Anti Teleport hack features)Take a look;http://www.youtube.com/watch?v=iupns2q1Wr4 Edited May 4, 2007 by malu05 [center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]
BladeZ Posted May 4, 2007 Posted May 4, 2007 DataStream Manipulator / (some would say wallhack)This is a bit offtopic, but related to World Of Warcraft...So, today i was a bit bored, and decided to do something with the packet data that i have decrypted.So what i made was a little DataStream manipulator, making it possible to "noClip" inside wow.This offcause also require a little client change but the fun part is to make the server belive that you are infact walking through the walls (if you do this without packets, you will get instantly disconnected due to Anti Teleport hack features)Take a look;http://www.youtube.com/watch?v=iupns2q1Wr4Are you capturing / modify the packets directly from autoit? If you are what are the needed functions / #includes you must use.
malu05 Posted May 4, 2007 Author Posted May 4, 2007 (edited) Are you capturing / modify the packets directly from autoit? If you are what are the needed functions / #includes you must use.Yes, its autoIT only.Try look for "UDP" in the autoit help file.You can also use costum dll's for the purpose. Edited May 4, 2007 by malu05 [center][u]WoW Machinima Tool[/u] (Tool for Machinima Artists) [/center]
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now