Всем привет.
Есть функция:
Код:
RandomSpawn(id)
{
if(!is_user_alive(id) || spawnCount <= 0) return;
static Float:vecHolder[3];
new sp_index = random_num(0,spawnCount-1);
vecHolder[0] = spawns[sp_index][0];
vecHolder[1] = spawns[sp_index][1];
vecHolder[2] = spawns[sp_index][2];
if(!is_hull_vacant(vecHolder,HULL_HUMAN) && spawnCount > 1)
{
new i
for(i=0;i<3;i++)
{
sp_index = random_num(0,spawnCount-1);
vecHolder[0] = spawns[sp_index][0];
vecHolder[1] = spawns[sp_index][1];
vecHolder[2] = spawns[sp_index][2];
if(is_hull_vacant(vecHolder,HULL_HUMAN)) break;
}
if(i == 3)
{
for(i=sp_index+1;i!=sp_index;i++)
{
if(i >= spawnCount) i = 0;
vecHolder[0] = spawns[i][0];
vecHolder[1] = spawns[i][1];
vecHolder[2] = spawns[i][2];
if(is_hull_vacant(vecHolder,HULL_HUMAN))
{
sp_index = i;
break;
}
}
}
}
vecHolder[0] = spawns[sp_index][0];
vecHolder[1] = spawns[sp_index][1];
vecHolder[2] = spawns[sp_index][2];
engfunc(EngFunc_SetOrigin,id,vecHolder);
vecHolder[0] = spawns[sp_index][3];
vecHolder[1] = spawns[sp_index][4];
vecHolder[2] = spawns[sp_index][5];
set_pev(id,pev_angles,vecHolder);
vecHolder[0] = spawns[sp_index][6];
vecHolder[1] = spawns[sp_index][7];
vecHolder[2] = spawns[sp_index][8];
set_pev(id,pev_v_angle,vecHolder);
set_pev(id,pev_fixangle,1);
}
Предположительно проблемный участок:
Код:
if(i == 3)
{
for(i=sp_index+1;i!=sp_index;i++)
{
if(i >= spawnCount) i = 0;
vecHolder[0] = spawns[i][0];
vecHolder[1] = spawns[i][1];
vecHolder[2] = spawns[i][2];
if(is_hull_vacant(vecHolder,HULL_HUMAN))
{
sp_index = i;
break;
}
}
}
Вот этот(наверное этот) участок загоняется в вечный цикл, после чего сервер фейлится

Подскажите, пожалуйста, как его зафиксить?;)
Или может есть другой способ организовать рандомные спавны?