Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

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

тут можно задать вопрос по скриптингу
Post Reply
pr0Zak
Novice
Novice
Posts: 77
Joined: 15.09.2009 1:11
Location: Age of Power
Contact:

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

Post by pr0Zak »

толковую процедуру на обнаружения моба и убийство.
Суть процедуры, если обнаружили моба бежим к ниму в упор и атакуем, следует учесть что моб не стоит на месте и убегает, по сему на да чтобы чар % догнал моба. А то Я перепробывал много всякого и ничего не получаеться толкового сообразить.
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

нашли моба
пока расстояние больше 1 - догоняем.


что сложного-то?
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
pr0Zak
Novice
Novice
Posts: 77
Joined: 15.09.2009 1:11
Location: Age of Power
Contact:

Post by pr0Zak »

Vizit0r wrote: пока расстояние больше 1 - догоняем.
ВОт этот кусок и есть сложность, как его реализировать::?
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

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


что сложного-то?
Сложно то что догонять ты будешь в точку где он стоял, после того остановишься, а он то же бежит. То есть нужно предугадывать точку в которую бежит НПЦ или бежать с корректировкой движения.
MuDaCk
Apprentice
Apprentice
Posts: 393
Joined: 10.10.2006 0:03
Contact:

Post by MuDaCk »

сложно написать скрипт, наверное :lol:
My name is Игорёшка Image
Пишу скрипты за едуImage
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

while GetDistance(NPC_ID) > 1 do
NewMoveXY(GetX(NPC_ID), GetY(NPC_ID)....)

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

если можно ставать на вендора - то вообще ноль.
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

pr0Zak wrote:
Vizit0r wrote: пока расстояние больше 1 - догоняем.
ВОт этот кусок и есть сложность, как его реализировать::?
if (ABS(X2 - X1) +ABS(Y2-Y1)) > 1 then NewMoveXY(X2,Y2);
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

GetDistance в результате сводится к

Code: Select all

dx := ABS(SelfX - ObjX);
dy := ABS(SelfY - ObjY);
r := Sqrt(dx*dx + dy*dy);
Result := Round(r);
так что пользуйтесь готовым, не изобретайте велосипед :)
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post 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);
так что пользуйтесь готовым, не изобретайте велосипед :)
Та да, если нужна точность и не жаль процессора.
Macks
Apprentice
Apprentice
Posts: 250
Joined: 27.02.2006 22:23
Location: АоП - Age Of Power

Post by Macks »

Можно без всяких проверок бежать к НПЦ указав степень добегания в 1.

Внутри функции проверит дистанцию.
RaTaMaHaTTa
Novice
Novice
Posts: 89
Joined: 16.06.2008 12:22
Location: <||TORCHKI||>
Contact:

Post by RaTaMaHaTTa »

У меня сделана через NewMoveXY
Догоняет отлично и с препятствиями проблем нету, все красиво обходит.
pr0Zak
Novice
Novice
Posts: 77
Joined: 15.09.2009 1:11
Location: Age of Power
Contact:

Post by pr0Zak »

RaTaMaHaTTa wrote:У меня сделана через NewMoveXY
Догоняет отлично и с препятствиями проблем нету, все красиво обходит.
Выложи свою процедуру или функцию для примера посмотреть)
grundick
Developer
Developer
Posts: 272
Joined: 31.01.2008 21:16

Post by grundick »

Если не напрягать мозги, не пробовал так реализовать:

Code: Select all

findtype(...); 
attack(finditem);
  while ( НПЦ не мёртв ) do 
      begin      
      newMoveXY(getX(finditem),getY(finditem),false,1,true);
      wait(100);
      end;
pr0Zak
Novice
Novice
Posts: 77
Joined: 15.09.2009 1:11
Location: Age of Power
Contact:

Post by pr0Zak »

Всем спс разобрался наконецто :D
Post Reply