I swear this code made my eyes bleed :O
Code:
set_user_maxspeed()
This is why they can run again and such. You have to find a way to hook when their maxspeed is changed. I don't personally know many TFC events but I could tell you a way to do it through prethink if you cant find nothing :O
Code:
public client_PreThink(id)
{
if(is_frozen[id]) entity_set_int(id,EV_INT_button,0)
}
If you did that there would be no need to record their old speed, they wouldnt be able to use their attack1 or attack2 buttons (except on their own screen) and they couldnt jump or move or nothing.