SetModel() doesn't animate

I wanted to force players to user certain character models when connecting.
So, initially I had something similar too:

function GM:PlayerSpawn( ply )
     ply:SetModel( "models/player/ct_gign.mdl" )

When I try to use this, the character just stays in the idle animation with his arms extended at his sides.

I looked up the command in the wiki and came across:

util.PrecacheModel( "models/player/ct_gign.mdl" )
function GM:PlayerSetModel( ply )
 	ply:SetModel( "models/player/ct_gign.mdl" )

Except now the character model is just a grey character as well. All of this is located in init.lua.

Edit: it seems to be working out when I get take GM:PlayerSpawn(), but if I don’t use this function I can’t spawn the players as Spectators.
Editx2: The GM:PlayerSetModel() only freezes the animations for the counter-strike models. Is this the same for everybody or am I missing a step?

Are you sure you are using playermodels for the CS:S models?

Here is a little list of the SWAT team in CS:S. Try these models, they work on my server.