Page 1 of 1

Атака

Posted: 13.10.2010 12:45
by Venom
Проблема заключается в следующем, перс видит искомый объект, приманивает его и бежит атачить, но после одного/двух ударов возвращается на исходную точку.
Подскажите, где дал маху ?

Code: Select all

 If FindType($0191,ground) <> 0 then 
      begin
          if (GetName(finditem) = 'Drevodriada') or (GetName(finditem) = 'Mutant Drevodriada') then begin
            attack(finditem);
            If TargetPresent then CancelTarget; 
            WaitTargetObject(finditem);
            UseSkill('Enticement');
            wait(500);
            WaitTargetObject(self);
            wait (2500); 
            while GetDistance(finditem) > 1 do
            begin  
               newMoveXY(getX(finditem),getY(finditem),false,1,true); 
               wait(100);
            end; 
         end;

Posted: 13.10.2010 14:03
by Fenix
В указанном тобою куске я ошибок не наблюдаю.
Но этот код не предусматривает атаку существа. Только юзает на нём скил, после чего подбегает к нему.
Давай более подробный код скрипта.

Posted: 13.10.2010 14:24
by pr0Zak
Fenix wrote:В указанном тобою куске я ошибок не наблюдаю.
Но этот код не предусматривает атаку существа. Только юзает на нём скил, после чего подбегает к нему.
Давай более подробный код скрипта.
Cобственно атаковать и не нужно, там тварь сама будет атаковать и будет на одаче урон получать. А вот кусок когда подбегает на да по другому циклить не на дистанс, потому как когда он подбегает к твари чар выходит с цикла и делает дальше свою роботу.

Posted: 13.10.2010 14:44
by Fenix
pr0Zak wrote:Cобственно атаковать и не нужно, там тварь сама будет атаковать и будет на одаче урон получать. А вот кусок когда подбегает на да по другому циклить не на дистанс, потому как когда он подбегает к твари чар выходит с цикла и делает дальше свою роботу.
Вот как раз хотелось бы узнать какую "работу" делает оставшаяся часть скрипта, ведь чар "возвращается на исходную точку".

Posted: 13.10.2010 14:59
by pr0Zak
Fenix wrote:
pr0Zak wrote:Cобственно атаковать и не нужно, там тварь сама будет атаковать и будет на одаче урон получать. А вот кусок когда подбегает на да по другому циклить не на дистанс, потому как когда он подбегает к твари чар выходит с цикла и делает дальше свою роботу.
Вот как раз хотелось бы узнать какую "работу" делает оставшаяся часть скрипта, ведь чар "возвращается на исходную точку".
Оставшаяся часть не имеет не какого отношения к заданому вопросу))

Posted: 14.10.2010 6:20
by Fenix
pr0Zak wrote:Оставшаяся часть не имеет не какого отношения к заданому вопросу))
Действительно? А откуда ты знаешь, что в оставшейся части нет проверки на смерть найденого моба или какой-либо задержки? Да и возвращение на исходную позицию где-то описано. Здесь ты увидел только реализацию подхода к мобу, она работает правильно. А что дальше? В цикле срабатывает поиск следующего моба? Или там код для возвращения к исходной точке?
Если любишь гадать - гадай в совоё удовольствие.

Posted: 14.10.2010 10:35
by pr0Zak
Fenix wrote: Если любишь гадать - гадай в совоё удовольствие.
Знаю потому что Я сам делал скрипт.

Posted: 14.10.2010 14:34
by Macks
pr0Zak wrote:
Fenix wrote: Если любишь гадать - гадай в совоё удовольствие.
Знаю потому что Я сам делал скрипт.
Там нет цикла, бросил атаку, подманил, подбежал и все...

Скрипт возвращает к дереву не анализируя смерть моба.

Posted: 14.10.2010 14:35
by Macks
Fenix wrote:В указанном тобою куске я ошибок не наблюдаю.
Но этот код не предусматривает атаку существа. Только юзает на нём скил, после чего подбегает к нему.
Давай более подробный код скрипта.
attack(finditem);

Это что по твоему?

Posted: 14.10.2010 15:47
by Fenix
Macks wrote:attack(finditem);
Это что по твоему?
Звиняй, не углядел :oops:

Posted: 14.10.2010 16:16
by pr0Zak
Macks wrote: Там нет цикла, бросил атаку, подманил, подбежал и все...

Скрипт возвращает к дереву не анализируя смерть моба.
Делал так цыкл:

Code: Select all

while not(isDead(finditem)) do
Но после смерти моба всеровно чар пытаеться бежать к мобу.
А стелс соответственно выдет ошибку что большая дистанция и не может добежать к мобу.

Posted: 14.10.2010 21:16
by grundick
проверь корректность работы ф-ии isDead.
Не уверен в ней.

Posted: 15.10.2010 8:05
by Fenix
Есть подозрение, что при смерти моба его ID освобождается и стелс не находит информации о нём. По-умолчанию IsDead возвращает False. Можно проверить существование моба через

Code: Select all

function GetType(ObjID: Cardinal): Word
Если информацию по мобу не найдёт, то вернёт ноль. Хотя тоже не факт, что корректно отработает.

Posted: 15.10.2010 16:40
by Macks
pr0Zak wrote:
Macks wrote: Там нет цикла, бросил атаку, подманил, подбежал и все...

Скрипт возвращает к дереву не анализируя смерть моба.
Делал так цыкл:

Code: Select all

while not(isDead(finditem)) do
Но после смерти моба всеровно чар пытаеться бежать к мобу.
А стелс соответственно выдет ошибку что большая дистанция и не может добежать к мобу.
Перед тем как бежать проверяй дистанцию, если больше 30, выходи из цикла.