Page 1 of 1

Таргетинг

Posted: 2017-06-28 15:10:10
by Яблочный Джем
Подсобите скриптом, что б можно было перешелкивать таргеты, раземееться что б можно было вписать друзей... находил что то похожее ниже, но тамс скрипт
запускается и весит постоянно сам переключаясь на цели... что б работало как встроенная функция таргет некст но пропускала НПЦ, и перекидывалось сразу с аттакой.

Re: Таргетинг

Posted: 2017-06-28 16:08:52
by Incorrect User
uo.findman() у меня почему-то не работает, поэтому сделал через findlist

Code: Select all

sub Attack()
   #uo.ignore("ID друга")
   #uo.ignore("ID друга")
   #uo.ignore("ID друга")
   uo.addfindlist("Player", "0x0190") # Man
   uo.addfindlist("Player", "0x0191") # Woman
   if uo.findlist("Player", "ground", 18) then
      uo.ignore("finditem")
      uo.attack("finditem")
   else
      uo.ignorereset()
      if uo.findlist("Player", "ground", 18) then
         uo.ignore("finditem")
         uo.attack("finditem")
      end if
   end if
end sub

Re: Таргетинг

Posted: 2017-06-29 09:03:06
by Mirage
Надо у Джусса спросить как они реализовали алгоритм поиска по местности. По дефолту работало по +1 тайл от чара до дальней точки и только потом переходило к следующему +1 от чара. Я делал руками что бы дистанция циклически увеличивалась на +1 диаметр. Как локатор, расходящимися кругами, а не принцип вращения палки. Так подольше но шанс поймать ближайшего к тебе чара выше.

Re: Таргетинг

Posted: 2017-06-29 09:52:55
by Incorrect User
Так и есть
- Поисковые функции при поиске объектов на земле теперь всегда возвращают самый ближайший к игроку объект (если такой был найден и исключая Nearest=1)

Re: Таргетинг

Posted: 2017-06-29 22:26:35
by Mirage
Смотри:

Code: Select all

sub Attack1()
   uo.addfindlist("Player", "0x0190") # Man
   uo.addfindlist("Player", "0x0191") # Woman
   if uo.findlist("Player", "ground", 18) then
      uo.click("finditem")
      uo.charprint('finditem', 1061, str(UO.GetDistance('finditem')))
   else
      uo.ignorereset()
      if uo.findlist("Player", "ground", 18) then
         uo.click("finditem")
         uo.charprint('finditem', 1061, str(UO.GetDistance('finditem')))
      end if
   end if
end sub


скрипт1.JPG
скрипт1.JPG (252.02 KiB) Viewed 3050 times






Code: Select all

sub Attack2()
   VAR d, n, name, targetID
   VAR vrag = 0
   uo.ignore('self')
   for d = 1 to 16 
      for n = 1 to 6
         uo.FindType(-1,-1,'ground',d,n,1)
         If uo.FindCount()> 0 then
            targetID = UO.GetSerial('finditem')
            uo.click(targetID)
            uo.charprint(targetID, 1061, str(UO.GetDistance('finditem')))
            return
         end if
      next
   next
end sub


скрипт2.JPG
скрипт2.JPG (258.89 KiB) Viewed 3050 times



В первом случае в 2 из 5 запусков кликается дальний НПС.
Во втором случае ВСЕГДА кликнется ближний чар.

А вот такая модицикация почти всегда кликает в дальнего чара потому что он ниже а поиск идет как я написал по принципу кручения палки:

Code: Select all

sub Attack2()
   VAR d, n, name, targetID
   VAR vrag = 0
   uo.ignore('self')
      for n = 1 to 6
         uo.FindType(-1,-1,'ground',16,n,1)
         If uo.FindCount()> 0 then
            targetID = UO.GetSerial('finditem')
            uo.charprint(targetID, 1061, str(UO.GetDistance('finditem')))
            uo.click(targetID)         
            return
         end if
   next
end sub

снимок.JPG
снимок.JPG (27.71 KiB) Viewed 3048 times

При стандартном поиске на дистанции 18 тайлов красный противник в обоих случаях найдется первым несмотря на то что желтый ближе. Потому что до красного поиск дойдет быстрее.

Re: Таргетинг

Posted: 2017-06-29 22:42:45
by Incorrect User
Всё коряво как всегда, а я вообще клиентский таргетнекст пользую.