Author | Message | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Reading what maps the user is on?(UPDATED :D)
| UPDATE:
Solved the use of the "byte" class, using 32bit integer. Now begins playing my remade Title theme when the map value has not been set(default 0), and can read when the player has switched to map 5(Aeven), and begins the Aeven theme. Using libZPlay, so it supports MP3, OGG, FLAC, and quite a few others. So this is going to work. Thanks for all of the advice everyone offered. This still has a LONG way to go, but it's definitely possible. Hopefully I'll have a beta soon. Original Post:
For a while now, I've been using some of my spare time and some of the things I've picked up helping artists with their music- specifically to recreate some of the EO soundtrack and one day search for a way to apply it. That day came, when I started taking focus away from my own games and screw
around with my test server.
|
Re: Reading what maps the user is on?(Read & Listen)
| If I remember correctly there is a constant memory location for the map number and x, y position of the character so you need to keep looking. Failing that you could always just intercept the map packets from the server. Getting your code loaded into the clients memory is pretty easy if you use EO.Addons. Simply create a .dll file rename it to an .eaf file and drop it in the \Addons\ folder, it'll be loaded and executed (DllMain()) by EO.Addons when the client starts. No real SDK but you can import some helper functions that do things like edit memory and hook various API calls and window messages from other loaded addons. See http://sordie.co.uk/downloads/EO.Addons/EOAddons.pas for reference. --- Forgotten Passwords = Fresh Start
|
Re: Reading what maps the user is on?(Read & Listen)
| I had totally forgotten about that, I actually discovered that it has 2 consistent addresses I can use, but both of them have frequent value flashes(changing to something random, and then reverting). I opened C# and made it compare both values, my own programs "map" number will only change if both
addresses return the same value.
|
Re: Reading what maps the user is on?(Read & Listen)
| Also check out EOPlugins. It features similar functionality to EO.Addons. It doesn't have helper functions, but does provide an internal proxy that makes it simple to read/manipulate packets. If you wanted to, you could just have your plugin force disable sound/music by modifying the config before the game loads(during plugin load) then you could have it just watch for packets that would cause music to change and run your own music. Your plugin run function is executed on its own thread, so playing music should not interfere with the main game thread. It also includes some example plugins in C++ and C#, so getting started should be as easy as playing with the examples.
|
Re: Reading what maps the user is on?(Read & Listen)
| I also keep forgetting about EOPlugins. Are you still interested in developing it? I could convert some of the EO.Addons over to EOPlugins so it has things like API hooking, memory editing, etc. --- Forgotten Passwords = Fresh Start
|
Re: Reading what maps the user is on?(Read & Listen)
| Squirrel posted: (31st Aug 2015, 04:10 pm)I wouldnt mind continuing developing it further. The whole reason i stopped before was because there seemed to be zero interest. I would very much appreciate if you could port api hooking and memory editing. I had some trouble with adding those things myself. Thats part of the reason i came up with including a proxy, to sort of make up for the non memory editing haha. Only issue with it though is that i don't have access to the source atm. Last time i worked on it was exclusively on my desktop machine, and since i never really got any responses with it, I'm pretty sure it slipped my mind to put it on my dropbox. I won't have access to it until November when i return home from my deployment. Edit: Looking at my post on treos, it seems i let that post get ahead of the eoplugins here. Pretty sure it was because this forum was on life support around that point. See this post for latest version.
|
Re: Reading what maps the user is on?(Read & Listen)
|
mrsix- The adresses will always change for a lot of them.You need to find a static pointer, so you can automatically find the next new
(changed address). I had to do this to find player values like hp,tp,sp,exp ect. It worked fine for myself, but others will have different addresses then what you have. That is the problem I ran into. If you're using cheat engine, it's pretty easy to find the static pointer.
8 years, 35 weeks ago
Suirad- I'd like to see you continue on this! I think this is a neat project. Not sure if I can help with this, but I could try and
help if you want/ continue with this. --- EO Resources/Guides: â—„ eobud.boards.net â–º
|
Re: Reading what maps the user is on?(Read & Listen)
| I made a lot of progress, but ran into an issue reading map numbers above 255(it reads 256 as 0, 257 as 1) and so on. So I'm going to try reading the MFX ID later after I get off work. I'd be interested in using EOPluggins but I'd need to know if you're okay with people distributing it with custom clients, instead of making people manually download and install their servers music. I already have a method to merge executables which would suffice. But experimenting what you have might be more fruitful.
|
Re: Reading what maps the user is on?(Read & Listen)
| mrsix posted: (31st Aug 2015, 10:18 pm) Map IDs are a short (2 bytes). You're running into some integer overflow there. Also, the open-source client I'm working on has rudimentary audio support for SFX and MFX (I haven't added a lot of SFX handling to places where it needs to go). If you're interested in re-vamping the sfx/mfx files I'd love to use them in my client. The problem I ran into is that XNA doesn't support the shitty audio files EO comes with. The MIDIs I have to hook into a Windows Media Player process and the some of the SFX had to be re-written so the WAV header matched the actual data length. It's a hot mess. --- class EOSERV { Programmer | Oldbie Open source EO Client: https://github.com/ethanmoffat/EndlessClient };
|
Re: Reading what maps the user is on?(Read & Listen)
| mrsix posted: (31st Aug 2015, 10:18 pm That is exactly the point of it, feel free to use as you please
|
Re: Reading what maps the user is on?(Read & Listen)
| So, I tested reading the MFX ID, used the same "comparison" technique from 2 addresses that remained the same throughout each session(switched to VB though, because I moved this to my Laptop while I ran some updates). The MFX ID addresses changed on my laptop, but the map ID addresses were still the same so can be safely used on different machines. the "255" limit is caused by the enforced use of the Byte class(CLRs "Byte" class is strictly 8bit, so even converting it to an integer will not change its limitations). So, I'm out of ideas. This is my first attempt at any kind of memory reading. Searching for a pointer seemed fruitless(after about 40 rescans I still have over 41,000,000 results) and repeating the search & rescan I only lose mere hundreds. If anyone was curious, here is the code so far: Public Sub GetMapID() |