Jump to content

FM2009 Ingame Scout/Editor Framework Released! (incl. source code)


DrBernhard

Recommended Posts

  • Replies 331
  • Created
  • Last Reply
Hello to everyone and a happy new year! I just found out the correct addresses for 9.2.0 for DrBernhard's Framework. I am currently testing them to make sure everything is ok. But since i am not a member in DrBernhard's Google Code project i don't really know where to post the files.

Since every Memory Address is different in 9.2 i am thinking about implementing a version check to make it backwards compatible with 9.1

Any ideas on where i can post the files are welcome! (when they're done of course)

Cheers to everyone.

[update]

1. Just found out that the offsets are the same in 9.2.0 (The ones that were correct in the first place ;) )

2. All 9.2.0 compatibility implemented & backwards compatibility with 9.1.0

3. Tested and everything is working as in FM 9.1.0

4. Fixed Club's Country Offset

5. Implemented Team Type (First Team, U21s)

6. Fixed Club Status Offset

7. Added Player Jadedness

P.S. Where is everyone i thought this was a hot topic :p

Hi, do you have assemblies that work with the 9.2 version? if so can i have them?

Link to post
Share on other sites

Hello to everyone and a happy new year! I just found out the correct addresses for 9.2.0 for DrBernhard's Framework. I am currently testing them to make sure everything is ok. But since i am not a member in DrBernhard's Google Code project i don't really know where to post the files.

Since every Memory Address is different in 9.2 i am thinking about implementing a version check to make it backwards compatible with 9.1

Any ideas on where i can post the files are welcome! (when they're done of course)

Cheers to everyone.

[update]

1. Just found out that the offsets are the same in 9.2.0 (The ones that were correct in the first place ;) )

2. All 9.2.0 compatibility implemented & backwards compatibility with 9.1.0

3. Tested and everything is working as in FM 9.1.0

4. Fixed Club's Country Offset

5. Implemented Team Type (First Team, U21s)

6. Fixed Club Status Offset

7. Added Player Jadedness

P.S. Where is everyone i thought this was a hot topic :p

Can you give us the offsets?

I'd rather change it in my framework and compile it myself instead of getting the new version from svn.

Thanks in advance.

Link to post
Share on other sites

me and thanoulas are currently working on merging our fixes to generate new assemblies which will work both on 9.10 and 9.2.0. we are also working on changing some loading issues such as easily reload the game without having to restart the application, etc.

we will post the offsets when we have the assemblies ready :).

Link to post
Share on other sites

In addition we'll probably have the new assemblies released by tommorow. I tried to prepare everything for today, but last night i got a crazy idea that i would fix the sale value issue. While i didn't quite figure it out, I actually found a new address and implement it in the framework which is the last transfer price of a player :D

Cheers

Link to post
Share on other sites

As promised here they are... :D

http://rapidshare.com/files/181440992/DrBernhardsFramework1.0.3.zip - DrBernhard's Framework 1.0.3

http://rapidshare.com/files/181441096/Framework1.0.3AssembliesOnly.zip - Assemblies only

[New Stuff]

- FM 2009 9.2.0 Support and still compatible with 9.1.0

- New Class GameManager that checks if the FM process is running and there is a game loaded in it

- GameManager can return the FM 2009 Version string

- Added player jadedness

- Added player last transfer price

- Added player current prestige

- Added player national prestige

- Added player international prestige

- Added contract clean sheet bonus

- Added contract jobtype

- Added Team Type (First team, U21s only for now)

[bug Fixes]

- Fixed Club Country Offset

- Fixed Club Status Offset

- Fixed a bug where the year could return 0 in DateConverter

[using New Features]

Nothing has actually changed in the framework, so if you want you can replace your files and still use it in your application.

If you want to implement the new GameManager class, which checks if the FM process is running *and* if the user has actually loaded a game in it, then you have to to the following:

You need to add "using Young3.FMSearch.Business.Managers;" in your main class, then

at the point where you have

fmDataContext = new FMDataContext();

replace it with

GameManager Gm = new GameManager();

if (Gm.CheckProccessAndGame())
{
     fmDataContext = new FMDataContext();
}
else
{
     // throw whatever you want here;
}

this will prevent the framework from getting initialized and the need to close your application and fire it up again in order to load data, if a savegame hasn't been loaded in FM. Unfortunately this is only a workaround because the framework is Static, if anyone has any alternative ideas please let me know. Nevertheless it is not too intensive and the check is pretty quick.

For any questions / comments / alternatives or additions, please post them here and i'll try to answer as fast as i can!

Many thanks to DrBernhard for his great work, and Immuner of course who provided many fixes and additions!

Have fun everyone!

Link to post
Share on other sites

Sorry for being naive, how do I now load and use FMScout? I have downloaded both above files, what do I do next?

This is not a scout tool, it's a developer framework to use if you want to program your own scout/editor tool

Link to post
Share on other sites

The ActiveObject is always NULL. Are you sure you have the correct offset?

I can't say that for sure, but it appears it is always null in 9.1 too. Are you using it somewhere? It seems that everything is working fine even if it is null...

Link to post
Share on other sites

I can't say that for sure, but it appears it is always null in 9.1 too. Are you using it somewhere? It seems that everything is working fine even if it is null...

Yes, I have written a small tool - MiniScout like- where I use the ActiveObject to determine the current player. It was working fine with 9.1. But with 9.2 I see that you change the offset of the ActiveObject to 31750968 + 0x56738. And this does not seem to work.

Link to post
Share on other sites

Yes, I have written a small tool - MiniScout like- where I use the ActiveObject to determine the current player. It was working fine with 9.1. But with 9.2 I see that you change the offset of the ActiveObject to 31750968 + 0x56738. And this does not seem to work.

Yeap, just saw that. No, the offset is probably wrong. I will post the new one once I find it. Plus a minor update with some fixes and new stuff.

Link to post
Share on other sites

Yeap, just saw that. No, the offset is probably wrong. I will post the new one once I find it. Plus a minor update with some fixes and new stuff.

That would be cool....thank you!

Link to post
Share on other sites

That would be cool....thank you!

Ok, just replace 0x56738 with 0x56708 in the file Global.cs and it will be ok. Later tonight i will release the new version with new stuff, just making sure now that everything works fine.

Cheers

Link to post
Share on other sites

Ok, just replace 0x56738 with 0x56708 in the file Global.cs and it will be ok. Later tonight i will release the new version with new stuff, just making sure now that everything works fine.

Cheers

That was fast ;) Yes, now it is working fine! Thank you very much.

Link to post
Share on other sites

[uPDATE]

DrBernhard's Framework 1.0.3.1

http://rapidshare.com/files/182240968/DrBernhardsFramework1.0.3.1.zip - Framework Version 1.0.3.1

http://rapidshare.com/files/182241121/Framework1.0.3.1AssembliesOnly.zip - Framework Version 1.0.3.1 - Assemblies only

[New Stuff]

Stadium:

- Added Nearby Stadium

- Added Stadium Decay

- Added Stadium ID

- Added Stadium City

- Added Stadium Owner

City:

- Added City ID

- Added City Attraction

- Added City Country

Clubs:

- Added Year Founded

- Added Morale

- Added Youth Grounds

- Added Youth Academy

[implementations]

- Implemented Staff Current Prestige

- Implemented Staff National Prestige

- Implemented Staff International Prestige

- Implemented Club Short Name

[bug Fixes]

- Fixed a major bug in ObjectManager that could make the Framework 10x slower!

- Fixed ActiveObject offset: Thanks bonsai for pointing this out!

Stadium:

- Fixed Stadium Length offset

- Fixed Stadium Max Capacity offset

- Fixed Stadium Used Capacity offset

- Fixed Stadium Width offset

Clubs:

- Fixed Training Ground offset

Teams:

- Fixed TeamTypes. Will Now detect the following team types:

First Team

Reserve Team

Empty Team (team exists in memory but has no players - hidden in FM2009)

U21s Team

U19s Team

U18s Team

Once again credit goes to Immuner too!

Link to post
Share on other sites

Thank you very much, guys! I think this is exactly what Dr Bernhard was thinking about when he was releasing this open source framework: That other people will continue the work and share their knowledge to improve and correct the source. Good to see that it works out.

Link to post
Share on other sites

hi, when i do a search for players who are under 18 and have a pa of 180 or more. in the result set i get 4 players who have no name, no club, are aged 11 and have high pa's. has anyone else seen these or know why they appear?

thanks in advance

No, i don't get that, i just got 28 players and noone was 11 lol :D Something wrong in your query maybe?

Link to post
Share on other sites

  • 4 weeks later...
Thanks for the great work!

Just one question: trying to convert the framework for FM 2008 would "just" require to search the new offsets? or has the DB changed so much that it's just better to not even get started?

Thanks again!

You would actually have to find the differences in the data available to both 2008 and 2009. Then you'd have to find the length of the fm2008.exe memory area, memory addresses and offsets. And actually convert the framework to a 2008 data structure..

And bear in mind, I don't have a clue if doing all these would do it, but it could be possible, yes.

Link to post
Share on other sites

You would actually have to find the differences in the data available to both 2008 and 2009. Then you'd have to find the length of the fm2008.exe memory area, memory addresses and offsets. And actually convert the framework to a 2008 data structure..

And bear in mind, I don't have a clue if doing all these would do it, but it could be possible, yes.

Thanoulas thanks for the reply.

It sound a bit too much work for a beginner in the "memory area work". For the moment I am going to study the framework source code to see if I can contribute a little. For example I noticed that the club morale seems to contain strange values (i.e. > 700) and even the values between 0 and 20 are different between the framework and FMRTE. A few cases to give you an idea:

framework value: 785 FMRTE: 15

framework value: 20 FMRTE: 0

framework value: 266 FMRTE: 0

framework value: 276 FMRTE: 20

From what I read it seems that you use a hex editor to find the correct addresses but, when and if you have time obviously, would you please explain a bit more how do you work? Do you use the FM headers (I found the 2005 version here) to know where to look at?

Thanks again!

Link to post
Share on other sites

I'll check the club morale, but bear in mind that I can only check them with 9.2.0 version. Which version did you check these on?

As for the way I find them I use ArtMoney which is a program that shows you the memory area of a specific process. The FM 2005 headers are for a savegame afaik, and the structure of a savegame is completely different than that of the memory area.

You can search for specific values with ArtMoney. For example, if you load the FM2009 DB Editor, load the 9.2.0 db and also start a new game in FM2009, you can search for the values that you see in the db editor using artmoney. The way you can do the search, and also be quite sure that what you found is actually the value that you were looking for, is the following:

1. Find the Hex Address of a Club for instance

2. Find the last address by calculating the length of a club (can be found in the frameworks offsets, should say something like clublength)

3. Search the value you are looking for in this specified context

If the value you're looking for is in the club's contents, you should probably get a couple of values, trial and error should help you decide which one's correct. If not, your value is probably stored as an int pointer which should point to a different location in the memory area, and should be a bit trickier to find it..

Link to post
Share on other sites

[uPDATE]

DrBernhard's Framework 1.0.3.1

http://rapidshare.com/files/182240968/DrBernhardsFramework1.0.3.1.zip - Framework Version 1.0.3.1

http://rapidshare.com/files/182241121/Framework1.0.3.1AssembliesOnly.zip - Framework Version 1.0.3.1 - Assemblies only

[New Stuff]

Stadium:

- Added Nearby Stadium

- Added Stadium Decay

- Added Stadium ID

- Added Stadium City

- Added Stadium Owner

City:

- Added City ID

- Added City Attraction

- Added City Country

Clubs:

- Added Year Founded

- Added Morale

- Added Youth Grounds

- Added Youth Academy

[implementations]

- Implemented Staff Current Prestige

- Implemented Staff National Prestige

- Implemented Staff International Prestige

- Implemented Club Short Name

[bug Fixes]

- Fixed a major bug in ObjectManager that could make the Framework 10x slower!

- Fixed ActiveObject offset: Thanks bonsai for pointing this out!

Stadium:

- Fixed Stadium Length offset

- Fixed Stadium Max Capacity offset

- Fixed Stadium Used Capacity offset

- Fixed Stadium Width offset

Clubs:

- Fixed Training Ground offset

Teams:

- Fixed TeamTypes. Will Now detect the following team types:

First Team

Reserve Team

Empty Team (team exists in memory but has no players - hidden in FM2009)

U21s Team

U19s Team

U18s Team

Once again credit goes to Immuner too!

How does it works. I can't find any executable

Link to post
Share on other sites

One quick question, where can I see every functions to use?

I just cant imagine them :o

Any help?

There is no documentation afaik. Just a tutorial that you can find in the first page of this topic. Visual studio can help you either with class/object view or its code completion.

Cheers

Link to post
Share on other sites

Seems this project is getting closer and closer to become discontinued unfortunately which is quite sad.

I have made several updates to it, including mental traits skills for players and 2nd nationality (the latter thanks to ruci).

will post it after the new patch comes out to include support for it as well.

Link to post
Share on other sites

You can search for specific values with ArtMoney. For example, if you load the FM2009 DB Editor, load the 9.2.0 db and also start a new game in FM2009, you can search for the values that you see in the db editor using artmoney. The way you can do the search, and also be quite sure that what you found is actually the value that you were looking for, is the following:

1. Find the Hex Address of a Club for instance

2. Find the last address by calculating the length of a club (can be found in the frameworks offsets, should say something like clublength)

3. Search the value you are looking for in this specified context

If the value you're looking for is in the club's contents, you should probably get a couple of values, trial and error should help you decide which one's correct. If not, your value is probably stored as an int pointer which should point to a different location in the memory area, and should be a bit trickier to find it..

Thanks for taking the time to explain the process in such a detailed way. I have a question about the latter part of the message (the int pointer stuff): do you know an application (for ex. hex editor) that lets me monitor in real time the RAM for changes in the virtual memory of fm.exe?

Such a program would really speed up the whole process because after a change in the game or in an external editor like FMRTE the application would immediately give me the location of the bytes that store the data. I tried WinHex and HxD but I was not able to find a way to highlight the real time changes in the RAM.

Thanks again!

Link to post
Share on other sites

Thanks for taking the time to explain the process in such a detailed way. I have a question about the latter part of the message (the int pointer stuff): do you know an application (for ex. hex editor) that lets me monitor in real time the RAM for changes in the virtual memory of fm.exe?

Such a program would really speed up the whole process because after a change in the game or in an external editor like FMRTE the application would immediately give me the location of the bytes that store the data. I tried WinHex and HxD but I was not able to find a way to highlight the real time changes in the RAM.

Thanks again!

with artmoney you can do that kind of thing,

eg, in artmoney search for an "unknown value", then you can use the filter option to filter only the values that have changed, or the values that did not change...

or, if you know the value but you want the memory location, search for for the value, then change that value in FMRTE or with some other tool, then in artmoney filter the previous search results with the new value (in some cases you may need to repeat this process), then you should find the exact memory location of that value..

Link to post
Share on other sites

with artmoney you can do that kind of thing,

eg, in artmoney search for an "unknown value", then you can use the filter option to filter only the values that have changed, or the values that did not change...

or, if you know the value but you want the memory location, search for for the value, then change that value in FMRTE or with some other tool, then in artmoney filter the previous search results with the new value (in some cases you may need to repeat this process), then you should find the exact memory location of that value..

Hi, just letting you all know that i'm still here and haven't given up the project. I am aware of the 9.3 patch and will start updating the code probably tommorow to support it.

Link to post
Share on other sites

Hello all,

[uPDATE - PATCH 9.3.0]

This is just an update to the framework for patch 9.3.0

http://rapidshare.com/files/203290390/DrBernhardsFramework-1.0.4.0.zip - Framework Version 1.0.4.0

http://rapidshare.com/files/203290486/DrBernhardsFrameworkAssembliesOnly-1.0.4.0.zip - Framework Version 1.0.4.0 - Assemblies Only

[uPDATES]

- Added support for 9.3.0 patch

Link to post
Share on other sites

Hello all,

[uPDATE - PATCH 9.3.0]

This is just an update to the framework for patch 9.3.0

http://rapidshare.com/files/203290390/DrBernhardsFramework-1.0.4.0.zip - Framework Version 1.0.4.0

http://rapidshare.com/files/203290486/DrBernhardsFrameworkAssembliesOnly-1.0.4.0.zip - Framework Version 1.0.4.0 - Assemblies Only

[uPDATES]

- Added support for 9.3.0 patch

love you.....

Link to post
Share on other sites

I'm not sure i understood what you asked.. You mean how to display the player's position using the framework?

nah i want to display all players who are say a striker in a list box..

like geniescout has all those positions

Link to post
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...