- Рег
- 2 Дек 2016
- Сообщения
- 36
- Реакции
- 0
Писал на скорую руку, можете добавить проверку на застревание, и тд можете увеличивать ренж шага, в Moving вставляем координаты куда надо, в MoveTo вставляет те же самые координаты.
Протестил около диона вроде, все норм иногда оббегал деревья... Актуально там где тп дорого, или нету попросту( классик).
)>)>)>
Протестил около диона вроде, все норм иногда оббегал деревья... Актуально там где тп дорого, или нету попросту( классик).
uses sysutils,classes;
var i:integer;
procedure Moving(x:integer; y:integer; z:integer);
var
oldX:integer;
oldY:integer;
//oldZ:integer;
MoveX:integer;
MoveY:integer;
MoveZ:integer;
sravnenieX:integer;
sravnenieY:integer;
resultX:boolean;
resultY:boolean;
begin
oldX:=User.X;
oldY:=User.Y;
//oldZ:=User.Z;
while not User.InRange(x,y,z, 800, 800) do begin
delay(1500);
sravnenieX:=(Abs(x))-(Abs(oldX));
sravnenieY:=(Abs)-(Abs(oldY));
if (-50<=sravnenieX) and (-sravnenieX<=50) then resultX:=true
else resultX:=false;
if (-50<=sravnenieY) and (-sravnenieY<=50) then resultX:=true
else resultX:=false;
print(sravnenieX);
print(sravnenieY);
if (x>oldX) and resultX then
MoveX:=oldX+Random(100);
if (MoveX:=oldX-Random(100);
if (y>oldY) and resultY then
MoveY:=oldY+Random(100);
if (MoveY:=oldY-Random(100);
//if (z>oldY) and (z<>oldZ) then
//MoveY:=oldY+Random(50);
//if (zoldZ) then
//MoveY:=oldY-Random(50);
Engine.DMoveTo(MoveX,MoveY, z);
print('Иду в координаты Х'+(IntToStr(MoveX)));
print('Иду в координаты Y='+(IntToStr(MoveY)));
oldX:=MoveX;
oldY:=MoveY;
end;
print('Я на месте');
end;
begin
Moving(x, y, z);
Engine.MoveTo(x, y, -z);
end.
var i:integer;
procedure Moving(x:integer; y:integer; z:integer);
var
oldX:integer;
oldY:integer;
//oldZ:integer;
MoveX:integer;
MoveY:integer;
MoveZ:integer;
sravnenieX:integer;
sravnenieY:integer;
resultX:boolean;
resultY:boolean;
begin
oldX:=User.X;
oldY:=User.Y;
//oldZ:=User.Z;
while not User.InRange(x,y,z, 800, 800) do begin
delay(1500);
sravnenieX:=(Abs(x))-(Abs(oldX));
sravnenieY:=(Abs)-(Abs(oldY));
if (-50<=sravnenieX) and (-sravnenieX<=50) then resultX:=true
else resultX:=false;
if (-50<=sravnenieY) and (-sravnenieY<=50) then resultX:=true
else resultX:=false;
print(sravnenieX);
print(sravnenieY);
if (x>oldX) and resultX then
MoveX:=oldX+Random(100);
if (MoveX:=oldX-Random(100);
if (y>oldY) and resultY then
MoveY:=oldY+Random(100);
if (MoveY:=oldY-Random(100);
//if (z>oldY) and (z<>oldZ) then
//MoveY:=oldY+Random(50);
//if (zoldZ) then
//MoveY:=oldY-Random(50);
Engine.DMoveTo(MoveX,MoveY, z);
print('Иду в координаты Х'+(IntToStr(MoveX)));
print('Иду в координаты Y='+(IntToStr(MoveY)));
oldX:=MoveX;
oldY:=MoveY;
end;
print('Я на месте');
end;
begin
Moving(x, y, z);
Engine.MoveTo(x, y, -z);
end.