Is there a way to read the current staff job? I'm making a script to adjust the attributes based on the staff job, for now I'm doing it with the JobPreference, but if it was with the current job contract, I could differentiate between U19 Staff or when they have more JobPreference in 20.
Hello mister tdg6661, I'm a new fm24 user. Is there a way to overcome changing the value which if changed there is a delay of 10-20 seconds, please help and advise
Try to edit any value while the game is idle, as both fm and the table consume a lot of CPU.
Could you possibly give me a hint as to how you figure out the PersonTableStart and/or PersonTableEnd addresses? The best thing I have found is doing an AOB scan for `00 00 ... 00 30 14 00 ... 00 30 15 00 ... 00`, but this doesn't feel robust and I think there must be a better way.
Could you possibly give me a hint as to how you figure out the PersonTableStart and/or PersonTableEnd addresses? The best thing I have found is doing an AOB scan for `00 00 ... 00 30 14 00 ... 00 30 15 00 ... 00`, but this doesn't feel robust and I think there must be a better way.
I'm bored so I'll reply. There were generally 2 ways to find these tables. Assuming you have the person pointer based on that pointer just do a global memory search for the address and then look at memory in 8 byte hex Memory View. Looking for a list that probably has 25000+ pointers one after the other. find the beginning of the pointer list manually and then find out who references that. Or use a Pointer scan to look for the head of the table. This approach is fairly unreliable.
The better approach is to use a Data Breakpoint to find out who access the person pointer. Then browse through that code in the disassembly window looking for the references to the person list. Usually when you are skipping over days since the game will frequently just iterate over persons/players and this access occurs during that loop. You can then inspect the code that made the reference and see how its iterating. This lists typically have 3 values start, end, maxlen as they are likely stl arrays in game. And you can see the code that references those pointers. Now you want to get aob scan of that code reference and then point at that.
In this game, there is a global pointer list that holds a bunch of other pointer lists including the person pointer list. You may find the code access of that usually be looking around the code. Personally used a lot of dissect data structures to look through these pointers you can find in code. I'd suggest using ghidra to help navigate the code if you are adventurous as it can be easier to read than raw assembly when used correctly. There is a learning curve. anyway you can possibly check out my code from FM 2022, 2020, 2019 tables for examples as I think tdg6661 obfuscates most of his code now.
Could you possibly give me a hint as to how you figure out the PersonTableStart and/or PersonTableEnd addresses? The best thing I have found is doing an AOB scan for `00 00 ... 00 30 14 00 ... 00 30 15 00 ... 00`, but this doesn't feel robust and I think there must be a better way.
I'm bored so I'll reply. There were generally 2 ways to find these tables. Assuming you have the person pointer based on that pointer just do a global memory search for the address and then look at memory in 8 byte hex Memory View. Looking for a list that probably has 25000+ pointers one after the other. find the beginning of the pointer list manually and then find out who references that. Or use a Pointer scan to look for the head of the table. This approach is fairly unreliable.
The better approach is to use a Data Breakpoint to find out who access the person pointer. Then browse through that code in the disassembly window looking for the references to the person list. Usually when you are skipping over days since the game will frequently just iterate over persons/players and this access occurs during that loop. You can then inspect the code that made the reference and see how its iterating. This lists typically have 3 values start, end, maxlen as they are likely stl arrays in game. And you can see the code that references those pointers. Now you want to get aob scan of that code reference and then point at that.
In this game, there is a global pointer list that holds a bunch of other pointer lists including the person pointer list. You may find the code access of that usually be looking around the code. Personally used a lot of dissect data structures to look through these pointers you can find in code. I'd suggest using ghidra to help navigate the code if you are adventurous as it can be easier to read than raw assembly when used correctly. There is a learning curve. anyway you can possibly check out my code from FM 2022, 2020, 2019 tables for examples as I think tdg6661 obfuscates most of his code now.
Thank you very much for this answer.
I had done exactly what you suggested in paragraph 1, and I am glad to see that you agree this isn't very reliable. I took a look at your table for FM22 which gave me a good idea of what I was looking for, then with a bit of poking around in ghidra, along with a lot of trial and error, I was able to find what I needed.
I would like to change some default values in the scripts to speed up the use of the table, can you help me?
1. In 'accelerate player development' I would like to change the value of Progress Rate to another, since it always comes in '1'. I would also like to change the Position Familiarity Filter from Natural to Accomplished.
2. In 'on-match player...' I would also like to change the Familiarity Filter to Accomplished and also edit some of the presets to my own values. If possible, also make the 'use fitness & morale modifier' to always be True since I don't see the point in it being False by default.