Page 1 of 1

Рosition и преследование моба

Posted: 23.10.2014 14:44
by Metall
Подскажите пожалуйста. Написал кусок кода преследования монста, но видимо что-то сделал не так!
Нужно чтоб это кусок постоянно проверял и преследовал моба пока не убьёт!

Code: Select all

Begin
    FindType($00D5,ground);
    while FindCount > 0 do
    begin
      if GetDistance(finditem) > 1 Then NEWMoveXY(GetX(finditem), GetY(finditem), true, 0, true);
               end;
 end;  
И второй вопрос. Нужен цикл repeat....until по такому типу

Code: Select all

repeat
...
until position(xxxx,xxxx) not true
Подскажите как это все лучше реализовать. За ранее спасибо!

Re: Рosition и преследование моба

Posted: 23.10.2014 16:00
by drabadan
Metall wrote:Подскажите пожалуйста. Написал кусок кода преследования монста, но видимо что-то сделал не так!
Нужно чтоб это кусок постоянно проверял и преследовал моба пока не убьёт!

Code: Select all

Begin
    FindType($00D5,ground);
    while FindCount > 0 do
    begin
      if GetDistance(finditem) > 1 Then NEWMoveXY(GetX(finditem), GetY(finditem), true, 0, true);
               end;
 end;  
И второй вопрос. Нужен цикл repeat....until по такому типу

Code: Select all

repeat
...
until position(xxxx,xxxx) not true
Подскажите как это все лучше реализовать. За ранее спасибо!
может как то так?

Code: Select all

procedure SeekAndDestroy;
begin
 if FindType($00D5,ground) > 0 then
  while GetHp(FindItem) > 0 do
   begin
    NewMoveXY(GetX(finditem), GetY(FindItem), true, 1, true);
	Attack(FindItem);
   end;
end;
по второму вопросу - опиши, что бы ты хотел получить в итоге. А то может есть более удобная реализация?

Re: Рosition и преследование моба

Posted: 23.10.2014 16:14
by Metall
drabadan wrote:по второму вопросу - опиши, что бы ты хотел получить в итоге. А то может есть более удобная реализация?
Например... пишу прямо здесь, могу где-то ошибиться, а где-то и бред написать. Но нужна именно такая цепочка!

Code: Select all

repeat
NEWMoveXY(xxxx,xxxx,true,0,true);
   UseObject(findType($0f43,backpack));
   WaitTargetTile(xxxx,xxxx,2124,5)
repeat
   allcheck; 
   until position(xxxx,xxxx) false or InJournal('[202]')<>-1;
 wait(3000)  
until InJournal('[202]')<>-1; 
Очень сложно объяснить! Я пишу последовательный скрипт, и из-за специфики моего шарда, мне необходима именно такая цепочка!
В процедуре allcheck возможен вариант что персонаж отойдет от места! И нужно прервать второй цикл, чтоб он вернулся к первому!

И желательно чтоб второй цикл можно было прервать двумя вариантами! (until position(xxxx,xxxx) false or InJournal('[202]')<>-1;)