Я особо не парился. Вот так сделал в init.c:
override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
{
array<vector> spawn_points = {
"16085.076172 197.290375 846.946411",
"16077.014648 197.033127 827.109802",
"16072.505859 197.102432 833.183472",
"16079.861328 197.360519 854.004578",
"16079.597656 197.396973 861.432678",
"16075.906250 197.606537 872.012817",
"16105.824219 197.639893 856.452393",
"16102.947266 197.423508 842.710510",
"16096.923828 197.107635 822.568176"
};
int pos_index = Math.RandomInt(0, 8);
Entity playerEnt;
// playerEnt = GetGame().CreatePlayer( identity, characterName, pos, 0, "NONE" );
playerEnt = GetGame().CreatePlayer( identity, characterName, spawn_points[pos_index], 0, "NONE" );
Class.CastTo( m_player, playerEnt );
GetGame().SelectPlayer( identity, m_player );
return m_player;
}