14.10.2013, 12:17
Ну давай разберем по полочкам:
при всем этом нам вообще наплевать что координаты должны быть вещественными числами!
Вот как это должно выглядеть:
pawn Код:
stock raytrace(x0,y0,x1,y1)
{
new dx=x1-x0, dy=y1-y0;//находим проекции по осям
if(dx<0)x1=-1, dx=-dx; else x1=1;
if(dy<0)y1=-1, dy=-dy; else y1=1;
//если проекции отрицательные, мы меняем им знак и записываем в конечные координаты 1 или -1, для чего, с исходными данными выйдет тоже самое!
for(new e=dx-dy, n=dx+dy; n--;)//находим разницу проекций, зачем, где в геометрии вы такое вычитали?! И спускаемся по их сумме!
{
if(e > 0) x0+=x1, e-=dy; else y0+=y1, e+=dx;//если разница больше нуля мы меняем только координату X, если меньше то Y, где логика?!
//CreateObject(2000, x0, y0, 0.0, 0.0, 0.0, 0.0);//Создадим объект
}
return true;
}
Вот как это должно выглядеть:
pawn Код:
stock raytrace(Float:x0, Float:y0, Float:z0, Float:x1, Float:y1, Float:z0, points = 10)
{
new Float:dx = floatdiv(x1-x0, Float:10),
Float:dy = floatdiv(y1-y0, Float:10),
Float:dz = floatdiv(z1-z0, Float:10);
while(points--) {
x0 += dx;
y0 += dy;
z0 += dz;
CreateObject(2000, x0, y0, z0, 0.0, 0.0, 0.0);//Создадим объект
}
}