Page 1 of 1

Помогите зделать плз...

Posted: 29.09.2010 22:23
by pr0Zak
толковую процедуру на обнаружения моба и убийство.
Суть процедуры, если обнаружили моба бежим к ниму в упор и атакуем, следует учесть что моб не стоит на месте и убегает, по сему на да чтобы чар % догнал моба. А то Я перепробывал много всякого и ничего не получаеться толкового сообразить.

Posted: 30.09.2010 6:53
by Vizit0r
нашли моба
пока расстояние больше 1 - догоняем.


что сложного-то?

Posted: 30.09.2010 9:14
by pr0Zak
Vizit0r wrote: пока расстояние больше 1 - догоняем.
ВОт этот кусок и есть сложность, как его реализировать::?

Posted: 30.09.2010 9:19
by Macks
Vizit0r wrote:нашли моба
пока расстояние больше 1 - догоняем.


что сложного-то?
Сложно то что догонять ты будешь в точку где он стоял, после того остановишься, а он то же бежит. То есть нужно предугадывать точку в которую бежит НПЦ или бежать с корректировкой движения.

Posted: 30.09.2010 9:27
by MuDaCk
сложно написать скрипт, наверное :lol:

Posted: 30.09.2010 9:32
by Vizit0r
while GetDistance(NPC_ID) > 1 do
NewMoveXY(GetX(NPC_ID), GetY(NPC_ID)....)

чот я сложности не вижу.

если можно ставать на вендора - то вообще ноль.

Posted: 30.09.2010 9:33
by Macks
pr0Zak wrote:
Vizit0r wrote: пока расстояние больше 1 - догоняем.
ВОт этот кусок и есть сложность, как его реализировать::?
if (ABS(X2 - X1) +ABS(Y2-Y1)) > 1 then NewMoveXY(X2,Y2);

Posted: 30.09.2010 9:49
by Vizit0r
GetDistance в результате сводится к

Code: Select all

dx := ABS(SelfX - ObjX);
dy := ABS(SelfY - ObjY);
r := Sqrt(dx*dx + dy*dy);
Result := Round(r);
так что пользуйтесь готовым, не изобретайте велосипед :)

Posted: 30.09.2010 16:50
by Macks
Vizit0r wrote:GetDistance в результате сводится к

Code: Select all

dx := ABS(SelfX - ObjX);
dy := ABS(SelfY - ObjY);
r := Sqrt(dx*dx + dy*dy);
Result := Round(r);
так что пользуйтесь готовым, не изобретайте велосипед :)
Та да, если нужна точность и не жаль процессора.

Posted: 30.09.2010 16:52
by Macks
Можно без всяких проверок бежать к НПЦ указав степень добегания в 1.

Внутри функции проверит дистанцию.

Posted: 01.10.2010 16:38
by RaTaMaHaTTa
У меня сделана через NewMoveXY
Догоняет отлично и с препятствиями проблем нету, все красиво обходит.

Posted: 01.10.2010 18:21
by pr0Zak
RaTaMaHaTTa wrote:У меня сделана через NewMoveXY
Догоняет отлично и с препятствиями проблем нету, все красиво обходит.
Выложи свою процедуру или функцию для примера посмотреть)

Posted: 01.10.2010 19:21
by grundick
Если не напрягать мозги, не пробовал так реализовать:

Code: Select all

findtype(...); 
attack(finditem);
  while ( НПЦ не мёртв ) do 
      begin      
      newMoveXY(getX(finditem),getY(finditem),false,1,true);
      wait(100);
      end;

Posted: 01.10.2010 20:50
by pr0Zak
Всем спс разобрался наконецто :D