So here's my suggestion: what if your table had a yearly script to keep Messi, Ronaldo, Vardy etc perpetually 30 years old (by changing DOB), so they never retire? So provide some field where the user gives a list of player IDs they want to keep eternal, and every year, for every player ID, set their year of birth to (CurrentYear - 30). What do you think, does this sound interesting?
You can run this from the Lua Engine under the Memory View | Tools menu. Have to use the table below as it adds player list pointer and fixes offsets and other corrections needed to work. Example for setting age to 30 for high ability players
-- change uniqueids here for specific players
local specialids = {719601, 735216, 7458500 }
local maxage = 30
local maxability = 170
-- begin normal script
local personStart = getAddressSafe('[datPlayersList]')
local personEnd = getAddressSafe('[datPlayersListEnd]')
local vtbPlayerPerson = getAddressSafe('vtbPlayerPerson')
local vtbPlayerPlayer = getAddressSafe('vtbPlayerPlayer')
local getVTable = function(addr)
return readQword(getAddressSafe(addr))
end
local isPlayer = function(addr)
if addr == nil then return false end
local vtb = getVTable(addr)
if vtb == vtbPlayerPerson then
return true
elseif vtb == vtbPlayerPlayer then
return true
end
return false
end
local isspecialid = {}
local isspecial = function(id)
return isspecialid[id] == true
end
local value
for _, value in ipairs(specialids) do
isspecialid[value] = true
end
local curyear = getCurrentYear()
local found = 0
forEach(personStart,personEnd, 8, function(k, addr)
addr = readQword(addr) -- have to redirect
if not isPlayer(addr) then return nil end
local person = getPersonFromPlayer(addr)
if person == nil then return nil end
local player = getPlayerFromPerson(person)
if player == nil then return nil end
local year = readSmallInteger(person+0x46) -- read birthday
local rowid = readInteger(person+0x8) -- read row id
local uniqueid = readInteger(person+0xC) -- read unique id
local potential = readSmallInteger(player+0x162)
local current = readSmallInteger(player+0x160)
local age = curyear - year
if age >= maxage and (isspecial(uniqueid) or current > maxability) then -- players older than ~30 and ability over threshold or is special
-- print(tostring(k), tostring(uniqueid), getPersonName(person), tostring(age), tostring(current), nation)
print(string.format("%-5d\t%-10d\t%-2d %-3d \t%-40s", k, uniqueid, age, current, getPersonName(person)))
local newbirthyear = curyear - maxage
writeSmallInteger(person+0x46, newbirthyear)
found = found + 1
if found > 1000 then return false end -- prevent loop from printing out a thousand rows
end
end)
Update for one-script for make_friends. One time update.
Sorry, I only just saw your post now. I got it working, thank you so much!
I do recomemend putting this in your modern FM table, I think if players see a script a checkbox like "Keep legendary players young forever" I think they will activate it.
Hi there. I really hope you are still active and can look at the subject I am about to refer to. Many people like myself like to play leagues like the Turkish Super League or the Chinese League that have "Foreign Player Registration Restrictions". After testing every single free trainer and cheat program that is out there I was able to find a solution BUT you will have to add it to the cheat table. I wish I could and hope you really can.
The paid programs FMRTE and FMSE have this solved but I don't feel I should pay for just one single change I need to do. And that change also will not even be cheating because from next season on, TSL will not have any restrictions.
In the Nation>Information tab there are a couple of options referred as "Agreements" , "Nations treated as UE", "Nations treated as non-foreign". Here you can see options like "European Union" , "European Economic Area" and others. IF you could include this Agreements tab in the "Information" table you would have saved thousands of old FM players like myself. I would have posted pictures if there was the option here I played the game since 1999 till 2012 (CM and FM) and I started again with the free giveaway of the FM2020 on Epic Games.
I would be thankful as anyone if you could do this for the FM2020 and I am pretty sure the same applies to earlier and the newer versions of the Football Manager.
I think there was flag that we have to change for this on the player but it moved around and I don't recall how to find it. I sort of wrote the table because I dont agree they should charge for what they are offering. However, I'm not sure I know how to find that flag without using one of those trainers or a lot of detective work. I dont really have time for that at the moment. tdg1666 might know.
Thanks for the reply. I really appreciate it. I will try with tdg1666. If the option is there I should be able to make it work but I will still need to be told the steps. I have photos of the trainer with the option but I couldnt upload them here. Thank you very much for the reply my friend.
Hello. Congrats for the amazing work and table.
I'm having an issue that I'm not sure if related to the use of the Cheats.
I'm at the end of the 2019/2020 season and was promoted and such. When the new season starts (I've reached early August), there is no league games for the new division. For details I was promoted from England 3rd to 2nd division (Sky Bet league one to Championship).
Anybody had and solved this issue?