AttemptMoveToPosition(OutputVectorID,ObjectID,StartX,StartY,StartZ,DestinationX,DestinationY,DestinationZ,RotX,RotY,RotZ,ScalingX,ScalingY,ScalingZ,RoomIndex)
Чтобы объяснить, как работает эта функция, лучше увидеть эту схему (paint в деле)

Этот код нужно вставить после передвижения игрока, но перед функции Step();
pos_vector=AttemptMoveToPosition(-1,all,xprevious2,yprevious2,zprevious2,x,y,z,0,0,0,1,1,1,GetObjectRoom());//получаем вектор
x=GetVector(pos_vector,1);//выставляем координаты игрока исходя из координат вектора
y=GetVector(pos_vector,2);
z=GetVector(pos_vector,3);
ReleaseVector(pos_vector);//уничтожаем вектор
xprevious2 = z;
yprevious2 = z;
zprevious2 = z;
Если нам только нужно узнать, было ли столкновение, то используем такой код
xprevious3=x;
yprevious3=y;
zprevious3=z;
pos_vector=AttemptMoveToPosition(-1,all,xprevious2,yprevious2,zprevious2,x,y,z,0,0,0,1,1,1,GetObjectRoom());
if(GetVector(pos_vector,1)!=x or GetVector(pos_vector,2)!=y or GetVector(pos_vector,3)!=z)
{
/*тут код если было столкновение*/
};
xprevious2 = z;
yprevious2 = z;
zprevious2 = z;
Да, чуть не забыл, чтобы столкновения работали, надо в объекте, который будет участвовать в расчетах столкновения, поставить
SetObjectSolidity(true,false);