Firstable, you don't need a loop, since you have an ID identifier in the own procedure.
Just go:
Procedure OnJoinGame(ID, Team: Byte);
Begin
Player[ID].Level := 0;
Player[ID].Ep := 0;
end;
The loop thing is quite useless, and "0 To 32" would be flawfull.
When you actually need to use a loop, as in AppOnIdle() for instance, go "1 To 32".