This is a table for Football Manager 2020 version 20.4.4 (Updated 4-Nov-2020)
It seems stable enough and most pointers seem to be correct so I'm release it for now. I'm still play testing so save early and save often and make backups and don't expect too much. I cannot promise to update for each beta but hopefully not too much work and I can get around to it.
Here is list of features in the current build:
Edit Person (Player, Staff, Manager) attributes
Edit Club attributes
Edit National team attributes
Edit Competition attributes
View Match attributes
Dynamic Lists for Clubs to show Teams and players/staff in the teams
Dynamic Lists for Bonus & Clauses in Contracts
Dynamic Lists for Relationships
Helper Scripts that either run immediately or periodically to:
Set Happiness, Fitness Condition/Sharpness, Training Happiness for all squad members of a Club
Set Favourability to Max for all members of a club
Set Fitness Condition/Sharpness for all squad at the National team (if you are coaching one)
Set budgets to high number periodically to allow free spending for recruiting
Set contract dates to current day (or back to join date) to help stop offers. (Better to add high value "Minimum Release Fee" to stop offers but both can be used)
Prevent Player or Staff Attributes from decreasing during monthly updates
A lot of values seem to be cosmetic and dont impact the game so dont expect everything shown to impact the game. Details about Table
Here are some random details about the table for advanced users trying to edit or update the table. (Not tips for cheating).
The core injection script which updates when focus changes seems to call an virtual function for any object being selected. This is useful except that everything goes through it is hard so to differentiate objects (i.e. players, clubs, teams, matches, etc) from each other. I use the C++ class vtable pointers. This makes it very accurate when vtable is known but makes it hard to update when not known. I added Selected Object and Vtable to Allocated Pointers area which should make it easier to locate pointers by observing those changes as these cannot be AOB scanned easily.
For players, I use the compiler hints around the vtable for C++ multi-inheritance classes to guess where the data blocks begin for shared data in classes.
How to update the table (as of 20.0.4):
Edit Script for "[X] <--- Football Manager 2020 ..."
Change "expectedExeVersion" to new version number
datTimeRoot
Before loading any game search for "01 00 00 00 20 ?? 00 00 01 00 6c 07"
pointer is in the MOV instruction 2 instructions above this
Activate the "[X] <--- Football Manager 2020 ..." script
Edit Script for "[X] <----- Update On Focus Change or Hover Tooltip ..."
Search for "49 8B 0F BA 72 64 70 72 4C 8B 49 10"
Update define for iniSelect to match
Search for "48 8B 06 BA 6F 6E 52 44"
First entry is iniTooltip to match
OK to close
Activate the "[X] <----- Update On Focus Change or Hover Tooltip ..." script
Select Persons and monitor the Allocated Pointers > VTables > Selected Object
Update vtables in the "[X] <--- Football Manager 2020 ..." script with this vtable address
Edit Code Modification Scripts
Search for datXXX
update iniXXX to match
These can be AOB but that is slow and this entire table cannot be AOB yet due to manual update of vtables and clock
OK to close
Deactivate all scripts. Then reactivate them so that new defines are in use.
Change Log
08-Nov-2019 (v1): Initial release
09-Nov-2019 (v2): Fix Staff General Attributes offsets
09-Nov-2019 (v3): New Manager Pointer since previous started pointing at different manager at some point. Added 2 new Staff Attrs
10-Nov-2019 (v4): Add Code Modification Scripts area. Included script to prevent attributes from decreasing on players for members of the same club as the manager.
11-Nov-2019 (v5): Update pointers to 20.0.4. Document table update procedure.
13-Nov-2019 (v6): Update to 20.1.0. Also fix bug with time display.
15-Nov-2019 (v7): Add Prevent Staff Attributes from Decreasing script. Fix the "Agreed Play Time" drop down to match play time values.
16-Nov-2019 (v8): Bug fix for Staff Attr causing crash when called from non-Staff related object. More protective checks added. (Will not work for coach/players for now and maybe other non-standard staff)
18-Nov-2019 (v9): Updated to 20.1.2
19-Nov-2019 (v10): Updated to 20.1.3
20-Nov-2019 (v11): Updated to 20.1.4
3-Dec-2019 (v12): Updated to 20.2.0. Set max status to 12191 so does not decrease during games. Add reduce injury script.
3-Dec-2019 (v13): Upload non-corrupted version of CT.
12-Dec-2019 (v14): Update to 20.2.1
19-Dec-2019 (v15): Update to 20.2.3
28-Dec-2019 (v16): Add Loan Contract (enabling changing end date of loan)
5-Jan-2020 (v17): Add Selected Player Updates and more periodic updates like happiness and training happiness
7-Feb-2020 (v18): Update to 20.2.4. Mark some attrs as not working. Move some scripts to "advanced"
20-Feb-2020 (v19): Update to 20.3.0.
21-Feb-2020 (v20): Fix Manager Data size from 468 to 480 to fix scripts
5-Mar-2020 (v21): Update to 20.4.0. Add Experimental set nationality, training nation, training club scripts for player
7-Mar-2020 (v22): Use getPlayerNation vs getPlayerNationContract correctly after renaming function
12-Mar-2020 (v23): Fix some stadium/club values
26-Mar-2020 (v24): Update to 20.4.1. Add the Chinese Trainer Scripts (v1.4.2 By:不知应该当讲否)
27-Mar-2020 (v25): Fix Prevent Decrease scripts which were not activating
17-Sep-2020 (v26): Update to 20.4.2. Move table script to "_GlobalScripts". change how attach works for exe other than fm.exe (untested). Remove the chinese/korean cheats.
19-Sep-2020 (v27): Update to 20.4.2 (patch which didn't update version!!!)
23-Sep-2020 (v28): Update to 20.4.3
25-Sep-2020 (v29): Update to 20.4.4
4-Nov-2020 (v30): Merged in tdg6661 fixes
Acknowledgements
This was based on tdg6661's table for FM 2019 and updated by me for 2019 and 2020.
How to use this cheat table?
Install Cheat Engine
Double-click the .CT file in order to open it.
Click the PC icon in Cheat Engine in order to select the game process.
Keep the list.
Activate the trainer options by checking boxes or setting values from 0 to 1
A while after editing staff attributes, their stats drop. Is there anything you can do about this issue or is it working as intended?
Alas not much can be done. this is the game doing it every couple months or so. Other cheat tools will save values and reapply. That is a lot of work. Another approach is to find the rebalancing code and prevent it but also hard to find. Finally, find previous values and maintain baseline but not sure where that is but the game does save since they are in charts. Anyway maybe one day.
Update: Decided to dig in to this a little more though could not find Staff updates yet, I was able to find code for player updates and was able to write code modification script to prevent most of those from decreasing. The new table has a new script Helper Scripts > Code Modification Scripts > Prevent Club Player Attribute Decrease. Still testing but seems pretty stable for me at this time.
Cant enable the update script, getting an error on line 13
If its fairly simple, could you write out how to update the version number, if that is the issue
Looks like they have released 20.0.4. Will new need update. Updates are non-trivial but presumably shouldn't take too much time (if not next 4 hours then will not be until at least 28 hours from this post)
Updated to 20.0.4:
Added a number of checks to report version mismatch and other errors like not loading table lua script. Also documented procedure in the first post on how to update the table manually (at least works with current version)
What exactly is the issue. Is it that they display correctly but do not take effect? If so then unfortunately that is probably the case as I think these may not be actively used in game but are display only in most cases.
Also not everything is tested in fm20. Squad Status is probably not working because they changed player classifications from fm19. May need to wait for FM 2020 Editor to be released to better understand. Same with Media policies.
hi sir..sifu..the game been updated sadly..what the heck
Updated. Its not really unexpected since the game is still in beta. I'd rather get the beta and bug fixes now than fixes later and no game. Also thanks to @Roolek for getting me to formalize the update procedure as that made it much easier.