Good Idea or Waste of Time?
Good Idea
 40%  [ 2 ]
Waste of Time
 60%  [ 3 ]
Total Votes : 5

Yo, im trying to recruite VB Programmers for a nifty project mad for PC Games (specifically RPG's with on-screen Maps)

The idea is to repeatedly take a picture of the gameplay, program in areas where you can walk, stand, or rest... It takes these areas into account via the map and where you are located at... The Main game im making this for is an MMO called MapleStory. kind of a 2D Sidescrolling MMORPG game... The Basic programming will be a VB project copying the screen and then decifering where you are, where you need to be, and what you should do to get there...

The map is quite simply the easiest way to tell where you are, since it is smaller and only shows a half-oval where you are located... I need help in parts of the programming, ideas on how to get it to work properly, and ideas on new/better methods to doing this...

This would be a lot easier if the enemies had indicators on the map as well... but they dont... the only way you know they are there, is that they move around... so it would be best to find a way to recheck the same area for movement... since the screen scrolls depending on where you move, it would be in the programerss best interest to find a way to decifer where the monster is in accordance to the character... the character is fairly simple to find seeing as hes usually in the center of the map, unless there is a screen scrolling barrier (like past the right wall would be a scroll barrier and instead of the screen following the char, the char will then move freely from the camera) (there are only left and right barriers as far as i have noticed)

The HP(Health Points) and MP(Mana Points) are large bars located at the bottom of the screen, HP is Red, MP is Blue, and White is missing HP/MP... HP and MP potions can be set as hotkeys to any given key... so all that is required there is a pixel/color decifer to tell how much of the line is Red/Blue out of the entire bar... when it gets lower than a certain point, use the appropriate hotkey... same with the map-movement, if you MP is low, and you are low on HP/MP potions, or dont have any at all, have rest areas programmed in and set the movement method into avoid instead of Attack... that much wont be too hard if i find the propper method for scanning... Im going to start on the proggy now and see what i come up with, any ideas or suggestions would be greatly helpful...

Screenys of the game are as follows:




1 primary issue i need to state, is that the SS button the the game uses freezes the game up for a fraction of a second... and then the image is not 100% clear, sometimes even blurred. Making it a useless method... Also, printscreen, if used too often in a row, can freze the game up until you either slow down or stop the printscreen entirely... so it would have to be a timed instance...

Anyways... post your ideas and methods here, Credits will be given accordingly to your preferred user name...
Trying to decode/recognize pieces of the screen for use in bots is riduculous, crazy slow, and would be very, very hard. Depending on how the game is drawn (eg, OpenGL, DirectX, etc...), it would be far better, and faster, to hook the drawing's DLL and interperate the functions that are called. You could then have a system setup to react to changes, etc... that are called (such as drawing the HP/MP bars would update the internal HP/MP variables)

You *might* be able to get away with a program that monitors the app's memory space, and checking the app's variables directly (this is how trainers/cheaters for PC games work). Depending on the complexity of the program, this too could be difficult.

The 3rd alternative I can think of would be to intercept the packets, decode them, and then have your "bot script" react accordingly. AKA, reverse engineer the client and then write your own client so that your bot can interact directly, no translation and/or hooking needed.

Any of those 3 methods are infinitely better than what you have come up with, and are probably easier to make, as image recognition is both hard and slow...
I was thinking the same; image recognition would be insanely complex and unnecessary. I think the 2nd and 3rd of Kllrnohj's ideas would be the way to go. The memory idea sounds moderately doable, but the reverse-engineering of the protocol idea is my definite favorite of the three. You have much more control over everything that way.
i give you props... u know what your doing... and i have a "UCE" which is the variable identifier/modifier of the game... its what every1 uses to hack the game >.< so MapleStory got real creative and made it 1) extremely hard to use one properly and 2) find the correct values...
about every second the locations of the values change... so finding the correct values can be a pain in anyones a... point being, im trying to make it as least intrusive as it can... hence the screen capturing... they have GameGuard up so it sets a challenge on getting in safely... if you just act off of the pictures, it may be slow but undetectable

if you can find a faster way without dealing with intruding into the game... it would be greatly apreciated... my instincts tell me that printscreen + deciferer would be an acceptable method to begin with
Well, I'm here to tell you your insticts are hella wrong. Like, really, really wrong.

If you can't do number 2 (which would have been the easiest), then I'd start with number 3, and fall back to number 1 as a last resort. 1 would be near-undetectable. I say near because it is possible for an application to check what DLL's it has loaded, and then the path to that DLL. It is then possible to check the DLL to see if it is signed/etc... and is valid. This would then present a problem with number 1, but I doubt they are doing that.

However, I must ask, why do you want a bot to begin with? Isn't the point of a game to PLAY it?
Meh, I still like the third option the most. You can bypass the difficulties with finding and deciphering memory locations if you simply make your own client that can authenticate as a normal client. Do you have any experience with such things?
Kerm, that could pose a difficulty if they are using encryption and/or other forms of verification... And would require alot of work in doing tedius tasks that aren't needed for the bot, although it would offer the best performance and most control.
well... ive been playing MS since mid April of last year ( very little time away from it ) and ive come to notice that it would be easier if 1) i was in a party and another person played with me in the area or 2) the game played it self for a bit while i take a break... so i started pondering ways that would do this... my first thought was using the "UCE" to read all the values and program off of that... but like i said, the values are near-impossible to keep track of because of the constant changing... if you change the wrong one, the game instantly notices that its being intruded and thereby shuts down and raises a flag on your IP... if you do it too many times, you get your account frozen >.< and no1 wants that

i just want something i can run in the background of the game that can be activated and it plays for me while i take a vacation from the game... this can become VERY handy if i get it right... and seeing as this sort of thing has only been done once before (MSLite- a cut down version that allows the user to hack at will, not bot... but sadly was found out by the creators and completely blocked) id like to try my hand at something fairly new to this game...

points taken, i like the ideas you have, just not 100% sure on how to implement them into an undetectable application...
If it's against the rules anyway and the admins have done stuff to prevent such cheating, maybe you should give up and not do it. I have to agree with what Kllrnohj said. The point of a game is to play it, not to have a bot play it for you.
Well, if you go with number 3, it would be highly detectable, per se, in that it is acting just like any other client. The trick would be to make it act like a regular client so as not to arouse suspicion

Number 1 is harder, as you will need to figure out the rendering method, and then code a new DLL that must have every function (at least a stub of anyway) that the original DLL has. Its a bit tricky, but doable
-_- again, it presents the issue of inexperience... if you just read the values, its undetectable.... if you change one, then things get risky...

so lets say i go with the values... i need to know how to read the values and then interpret which ones are the ones i need to keep reading... as far as ive investigated there are wall values, monster values, and many MANY more... so if i can inject a method of reading the values brought on, and have it decode for the proper values that are needed (ie, location, walls, hp, mp, monster locations, monster hp) and then keep reading these, i could then just program a rout to take around the map and watch for the monsters near the char and atk it while keeping hp/mp up, and when mp runs low(since its a cleric hp is only an issue when out of mp) to run and get in the specified locations where monsters cant get to, and wait for the mp to get back up and start again...

so step one is to research on how to read each value
step 2 would be to research on how to find the :
1) value for each thing i need to keep track of
2) value that maintains (1)'s location

if i can get that into a program, then i can attempt to program an AI into it... until then, think you guys can help out?
Number 2 (read the values) has already been ruled out. My last post I said number 1 (dll hook) and 3 (decipher the packets/recode client).
*twitches* big issue on experience... i have NONE with those 2 methods... and then another big issue.... Automatic Updates... if the game changes... then remaking the dll becomes useless and is most likely found out... so again im left with a few shreds of new ideas >.<
The game won't change the DLL, as the one you are intercepting (hooking) is a windows DLL. The game doesn't load it, windows does when you launch the game. The trick is in how windows searches for that DLL. Windows firsts looks in the same dir as the exe, then in the PATH. If it is trying to load, say, ddraw.dll (DirectDraw), you must create a stub of the DLL, and place it in the same dir as the exe. Then your version of ddraw.dll will be loaded instead of the system's DLL. Its a fairly complex solution, but it works and is relatively invisible to the program.

The flow would then go something like....

Program calls Line() in the ddraw.dll -> windows finds and laods modified ddraw.dll in the same dir as program -> modified ddraw.dll logs line() arguments -> modified ddraw.dll loads "real" ddraw.dll -> modified ddraw.dll calls the "real" ddraw.dll's line() function

As you can see, the modified DLL is just a bridge. Updating the game or the real ddraw.dll will have no affect on the modified one Smile

As for experience, I somehow doubt you have much experience on advanced image recognition and processing, either Smile
hmmm... so first i have to find out which drawing method is used, then find its dll, copy it, paste it into the games directory and then what? since im going to be researching a bit into this anyways, id like to find out what you know so im not blindly searching
You don't copy/paste it. You look up all the functions it has (debugger/disassembler would help with that), create "stubs" for each function, and then compile that into a DLL. Or at least that is one way. Google for "dll hooks" and you should get some good info on different ways to do it.
for now... im calling it quits.. i really cant go any further without some more help... ive searched goodle for "dll hooks" and im not getting the relativity to the project... Kllr, thanx for the help you did give, but im afraid that without more help, im lost... just post a tutorial here and ill get on that... or gimme a direct link to a relevant tutorial... its eating me up trying to learn what i have little knowledge about to begin with... all i have to go on is i have to use a debugger to find all the functions and rewrite them(no clue what language) and compile them (dont know what compiler to use) and then make "stubs" which i can only guess means sumthing along the lines of rewrite them so that they "work"... other than that, i have no idea where to go for help... the other online users seem more interested in other things for the time being... -_- im going to guess for now that gdi32.dll is the correct drawing library or whatever the hell im spose to look for -_-

well... looks like this project got nowhere fast... if i made it my way, it would have been excruciatingly slow, but would most likely have at least workd to a point... so far i have ZIP... i have a located dll, some used space on my hard drive, and **** for a method... jez... my day went swell, dont you think? cant sleep to begin with, have a nightmare, wake up too early, start moving, get ordered around, start playing my fav game, come up with a great idea, start asking around for help, and end up with nothing tangable -_- anywhos... as you can see, im too tired to do much else... i guess ill just wait for Kllr to change his mind... Sad
Go with your way if you absolutely cannot figure out any of the ideas I suggested, but do realize, it won't be any easier.
uhh... well... i found an ok tutorial that tells me how to create the necesary dll stub file... right now i need an excel script to make the programming faster... a lot... there are 600+ functions in gdi32.dll and i have to write 6 lines of code using 1 functions name 3 times...


Code:

//Function *-----*
//---------
__declspec   ( naked ) void _my_*-----*(void)
{
__asm jmp far dword ptr *-----*;
}


*-----* = the name of the function
basically, the needed code uses this:


Code:

___|_____A_____|_____B_____|
__1|___________|___AbortDoc|
__2|___________|__AbortPath|
__3|___________|AddFontMe..|
__4|___________|AddFontRe..|
__5|___________|AddFontRe..|
__6|___________|AddFontRe..|
__7|___________|AddFontRe..|
__8|___________|___AngleArc|

i need it to use B1 on lines 1,3,5; B2 on lines 7,9,11 and so on.... the only needed thing is an Excel code that will work for this set up... then i have part of the dll file finished... next step comes easy... anywhos... im all ears ^.^
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement