A couple of things I noticed:
Code:
else
{
//Do Nothing
}
Isn't needed. If you don't need to do anything in an else statement then don't write 'else'. Also, you only need to create the timer when the client has entered the game, not every time the client changes class, that's just unnecessary logic checks. Create the timer in OnClientPutInServer (or in a later forward). In the repeating time you need to check if the player is alive using InPlayerAlive(client) before you do anything else. Finally, it may help performance if you store the clients class globally rather checking the clients class every time the timer 'ticks'. To do this create a global variable called g_ClientClass[MAXPLAYERS + 1] and in player_changeclass event update the class of the client. eg
Code:
g_ClientClass[GetClientOfUserId(GetEventInt(event, "userid"))] = GetEventInt(event, "class"))
The you can swich (g_ClientClass[client]) in your Regenerate function.
P.S: (3 * 4) = 12