Permanent nick-names on single dedicated server (server-side)?

Hello forum,
i’m looking for some LUA / an addon that allows me to individually assign nick-names to the people playing on my server.
This is because for TTT (which is the only mode we play) it’s very comfortable to use the real first name of a person because it’s more intuitive when you know them as a friend and you also see it in game when they ruthlessly shoot you with a shotgun in the face.
Because it should be idiot-proof it would be the best if i could do this** server-side so that nobody has to change their own name.**

I know that this exists:

but that would probably require a LUA autostart script that executes those commands on each player when they join the server.
Also i don’t know how this would affect any commands i.e. if i would have to use their nick-names or normal Steam names. I think ULX (which i use to give a few people operator permissions) uses Steam names and not SteamID which i might have to edit to work with a nick-name system.

Any input on this topic is appreciated =)

Regards,
Daniel

look up PData functions
let somebody set their name once then save it to PData
after that their name can only be changed by an admin if they request it
then have the server load their name from PData and send it to all clients
the hardest part will be figuring out how your actually gonna display said names, whether you detour ply:Nick() like darkrp did or modify your hud and scoreboard so it shows next to their real name