Форум работает в тестовом режиме. Все данные были перенесены со старого сайта 2018 года. Некоторая информация может быть недоступна, например вложения или хайды. Просьба сообщать о данных случаях через функционал "Жалоба", прямо под постом, где отсуствуют данные из хайда или проблемы с вложением.
Могут быть проблемы в "выкидыванием" с форума (слетевшей авторизацией). Нужно собрать статистику таких случаев.
Есть Тема, куда можете сообщить о проблемах с сайтом либо просто передать привет.

Упростить немного перемещение от точки ТП до спота

Рег
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(y))-(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.
)>)>)>
 
В этой строках ошибка, думал как исправить, но что-то так и не въехал, что тут с чем сравнивается :)


if (x MoveX:=oldX-Random(100);


if (yMoveY:=oldY-Random(100);
 
x и y в строчках перед Move удали.
P.S изменил описание. Можно сжелать вместо DMoveTo. MoveTo так как там есть время ожидание когда прижет. Соответственно рано или позднл он обойдет.
 
Bingo7696 написал(а):
x и y в строчках перед Move удали.
там что то ты напутал....

uses sysutils,classes;
var i:integer;

procedure Moving(x:integer; y:integer; z:integer);
var
oldX,oldY,oldZ,MoveX,MoveY,MoveZ,sravnenieX,sravnenieY:integer;
resultX,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(y))-(Abs(oldY));
if (-50<=sravnenieX) and (-sravnenieX<=50) then //а если за 1,5 сек он убежит дальше?
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);
end.

Можешь добавить коменты под условия (строки 15, 17, 20, 25, 27), не совсем понятно смысл некоторых проверок, я тоже писал нечто подобное, но только для мультипрофного сервера с использованием варпа
 
Абсолютные даны, чтобы понимать в какую сторону бежать по x и у. А те строчки добавляют либо убавляют величину значения в х и у. А дмув, для того, чтобы если бот уперся, то рано или поздно он за счет перемещения адреналина обойдет.
 
Bingo7696 написал(а):
А те строчки добавляют либо убавляют величину значения в х и у
Я вот не пойму, то ли ты не запускал у себя сей скрипт, то ли ты сюда выложил старую версию его, ещё не исправленную просто, но смысл в следующем:
if (MoveX:=oldX-Random(100); //это не правильно
не пропустит её компилятор.
условие пишется же:
if (сравнение) then (действие)
А вообще задумка норм, держи лайк) Себе на заметку взял
 
Странно, приду домой скину скрипт этот же, вижу ошибки но откуда они при копировании...
 
@Bingo7696, написал я свою процедуру на движение, только для не больших дистанций, попозже выложу в новой темке, тебе спс, парочку идей позаимствовал)
 
Назад
Сверху