Basically I check it once in ClientBegin and I check it in ClientUserInfoChanged As for the renaming: it will only save for the current round, which isn't ideal, but its better than nothing. ( You could replace it with the !rename command instead, I think that lasts until they disconnect )
function Client:setName(name)
if ( name == nil ) then return end
if ( string.len(Misc:trim(et.Q_CleanStr(name))) <= 0 ) then return end
local userinfo = self:getUserInfo()
userinfo = et.Info_SetValueForKey( userinfo, "name", name )
et.trap_SetUserinfo( self.id, userinfo )
et.ClientUserinfoChanged( self.id )
end I really should open my lua to public lol. It is hard to copy my code without seeing the entire project.