WoW Memory EditingWoW Memory Editing for learning purposes only.
This section is more advanced than others on MMOwnedRead the section specific rules, infractions will be given out if u break them!That is including the expectations! - If you don't meet them then don't post
Hey, I figured there'd be a lot of people with fun non-public projects that others would be interested in so this thread is for posting a 'showoff' screenshot.
Please keep the "cool" or w/e replies to a minimum unless its part of a more 'complete' reply (where you actually contribute something to the thread). Questions are of course fine.
I'll start:
Wrote that today, its a fish bot (duh).
Current features:
- DX Gui (Credits to BSing for the [Only registered and activated users can see links. ])
- Autocast fishing (Highest rank automatic)
- Manual looting (forces off autoloot when looting, needed to enumerate loot slots and pull out info)
- Logs fish names and quantities
- Confirms BoP looting
Adding next (probably tomorrow):
- Pool detection and prioritizing
- Autoequip poles
- Autolure
- Loot filters
- Removing the verbose debug output >_>
So, what is everyone else working on?
__________________
[Only registered and activated users can see links. ]Back online!
"Science is interesting, and if you don't agree you can **** off." [Only registered and activated users can see links. ]
"I can write very coherent things when I try that sound very good" -- Styles
Last edited by Cypher; 12-31-2008 at 08:48 AM.
Donate to remove ads, get your "DONATOR title, and get access to the MMOwned community's elite Shoutbawx.
I saw a SS of your private hack (the one with the "tabs", and I remember a tab called 'Atmospheric' or something like that (cant quite remember exactly the name )
My question is: What does this tab contain
OnTopic: Nice GUI :P
Edit: Ah thank you very much... Cosmetic was the one I referred to
Btw: Changing language is still working? Thought it was fixed some time ago...
Oh, I've currently moved that hack over to the GUI framework above so the layout is different.
The verbose categories (plus description) are:
Console --> debug console
Tracking --> minimap tracking
Physics --> flying, speed, gravity, noclip, etc
Cosmetic --> morph, selective rendering, emotes, animations, etc
Misc --> any random uncategorized stuff, usually just tempoary 'test' stuff (before being moved to a concrete category)
DBC --> in-memory DBC reading/writing
Network --> packet logging, packet spoofing, etc
LUA --> ui protection hack, script runner, framexml/gluexml modifications, etc
Objects --> information on the objects around you
Warden --> basic warden protection, basic warden monitoring, etc
WDB --> options for using WoWs cache
Automation --> botting stuff (fishbot, ah semi-bot, etc)
Speech --> translation, language changer, etc
MPQ --> options for loading custom MPQs (eg. "foo.mpq")
WoWConsole --> cvar forcer, callback registration, callback dumping, etc
Dunno exactly which one you referring too. Not all of those are implemented at any given time as some of the stuff is single-use or very-limited use so when it goes out of date I'll archive it until I need it readded. Furthermore, in reality the GUI obviously don't have that many segments, and segments with related functionality are often 'merged', I just posted verbose categorization to help you identify what you were looking for.
__________________
[Only registered and activated users can see links. ]Back online!
"Science is interesting, and if you don't agree you can **** off." [Only registered and activated users can see links. ]
"I can write very coherent things when I try that sound very good" -- Styles
So far it can dump all the objects from the object manager
Display them on the radar.*
Find the nearest mob, and interact with it. (on a timer with click to move enabled, rudimentary auto-attack bot xD)
*I wanted some feedback on the method I'm currently using the plot the points in my application.
Let's say I have 5 objects loaded, with the X co-ords 1001,1004,1006,1008,1010.
What I do is subtract the value of the smallest from each item in the array.
In this case I would be left with 0,3,5,7 and 9.
Then I take my panel width which I'm drawing the items onto and divide by the highest value of this new array to find the scale. If my panel had a width of 450: 450/9 = 50. I multiply each value in the new array by this scale. So I get 0, 150,250,350,450. Then I plot each of these points onto the panel with a co-ordinate of (0,150,250,350 or 450) relative to the left of the panel.
“Saying that Java is nice because it works on all OSes is like saying that anal sex is nice because it works on all genders.”
“If Java had true garbage collection, most programs would delete themselves upon execution.”
I love your GUIs, very nicely done. I have a request though, would you mind posting your CastSpellById code? Whenever I tried to call CastSpellById from a new thread (which I created to loop the fishbot code in) it crashed, even when I set the object manager pointer in the new threads TLS.
I ended up getting it working by doing all my casting/looting/etc in a callback in WoWs main thread (on render), but would like to know what it is I overlooked that prevented function calls from working properly from that thread.
Thanks.
P.S. I'm stealing your LootBot idea for use with my AoE farming instance runs.
EDIT: As an aside, you could use LUA in your fishbot instead to add a lot of useful functionality such as casting by name ("CastSpell(\"Fishing\");") will automatically resolve the skill so you don't need to choose the level manually, you can also disable autoloot and loot each slot manually, dumping out the loot names, quantity, rarity, etc, plus, you can confirm BoP items. APIs to look into are CastSpell LootSlot GetLootSlotInfo GetCVar SetCVar ConfirmLoot or anything else under "loot" in the WoWWiki API list.
__________________
[Only registered and activated users can see links. ]Back online!
"Science is interesting, and if you don't agree you can **** off." [Only registered and activated users can see links. ]
"I can write very coherent things when I try that sound very good" -- Styles
I love your GUIs, very nicely done. I have a request though, would you mind posting your CastSpellById code? Whenever I tried to call CastSpellById from a new thread (which I created to loop the fishbot code in) it crashed, even when I set the object manager pointer in the new threads TLS.
I ended up getting it working by doing all my casting/looting/etc in a callback in WoWs main thread (on render), but would like to know what it is I overlooked that prevented function calls from working properly from that thread.
Thanks.
P.S. I'm stealing your LootBot idea for use with my AoE farming instance runs.
EDIT: As an aside, you could use LUA in your fishbot instead to add a lot of useful functionality such as casting by name ("CastSpell(\"Fishing\");") will automatically resolve the skill so you don't need to choose the level manually, you can also disable autoloot and loot each slot manually, dumping out the loot names, quantity, rarity, etc, plus, you can confirm BoP items. APIs to look into are CastSpell LootSlot GetLootSlotInfo GetCVar SetCVar ConfirmLoot or anything else under "loot" in the WoWWiki API list.
The fishing bot is written in C# using the BlackMagic lib using the offsets from your sticky, nothing out of the ordinary, I'll try to list the most relevant code below:
To start fishing:
Code:
fishThread = new Thread(mainLoop);
fishThread.IsBackground = true;
fishThread.Start();
In any case, The whole concept of (multi)-threaded programming is quite new to me, I absolutly hate coding things I don't fully understand but it was a necessity for the fisher to work. I've downloaded some ebooks on the subject because it will probably another 1-3 years before this subject gets touched in class If I made any outrageous mistake by doing it this way (by starting a thread of the mainLoop method) please point me in the right direction.
Inside the mainLoop() method (which is a private void, if it matters in the slightest) I have a line:
Code:
if (bInjection) { call_CastSpellById(ID_INJECTION); }
As you can see, nothing special. I update the objectManger as suggested in other threads (pun intended) and call the function after. (just an fyi: I'm running Windows XP 32 bit)
Thanks for the hints on the LUA functions, I was going to look into them "in the not so distant future" because your first screenshot revealed the possiblity and power of said functions
And a happy New Year!
__________________
“Saying that Java is nice because it works on all OSes is like saying that anal sex is nice because it works on all genders.”
“If Java had true garbage collection, most programs would delete themselves upon execution.”
I'm sure people have seen them before, but eh, here they are again:
- Generally patch-resistant, should work with new versions without any changes
- Injection into the main thread to grab curMgr
- Remote thread used (with curMgr->TLS replacement from above) for position and naming
- Config file allows flagging of objects to flash and/or play sound upon detection (rare mobs, etc.)
- GDI+ for rendering... yeah I know, I should make it OpenGL/D3D. Laziness ftw!
- And for silliness purposes, obfuscates player names when holding alt, just so I can take screenshots :P
Nothing much more really, basically only needed it to do those things for myself.
That said, it's got a few problems, curious if people have thoughts on the matter:
- sometimes crashes wow during a change of zone, seems to do with timing, curMgr changing when zoning in different areas (yay for thread sync)
- serious performance probs with CreateRemoteThread being run 20+ times/sec... I know I should just inject a func once and use IPC for it, just never get around to doing so... (And no it's not GDI+ lagging, my old radar which was purely out-of-process rendered much much faster)
Thanks Rob, I'll look into what I was doing more closely.
Wraith, holy crap, 20 times per second? Lol, does it really need to be run that often? If I were using CreateRemoteThread I'd cap it at once per second or something like that, 20/s is just nuts.
The other alternative you stated is by far the best though.
PS. Happy new year to all.
__________________
[Only registered and activated users can see links. ]Back online!
"Science is interesting, and if you don't agree you can **** off." [Only registered and activated users can see links. ]
"I can write very coherent things when I try that sound very good" -- Styles
Hey, I like having a pseudo-realtime map that moves the same time I do :P
Was more curious as to what people thought would be a decent IPC to use, NamedPipes/MailSlots/TCP...
Any idea on the zone switch crashes though? At the moment I just sleep for 15 seconds, kinda dodgey...
I figure that being hooked into the renderer there's no problem with synchronisation, but for the other out-of-process people, have you struck that problem before?