A simple bit that changes your class instantly, no respawn required. I'm sure there are other versions of this out there but it was simple and I figured others could use it. So I shared
Source
Spoiler
Code:
public void OnPluginStart()
{
HookEvent("player_changeclass", At_Player_Change_Class);
}
public Action At_Player_Change_Class(Event event, const char[] name, bool dontBroadcast)
{
int Client = GetClientOfUserId(GetEventInt(event, "userid"));
int ClassIndex = event.GetInt("class");
SetEntProp(Client, Prop_Send, "m_iClass", ClassIndex);
TF2_RegeneratePlayer(Client);
PrintToChat(Client, "You've selected class %i", ClassIndex);
return Plugin_Continue;
}