подскажите с uo.ignore

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Lumberjacker
Posts: 16
Joined: 2009-01-14 23:34:57

подскажите с uo.ignore

Post by Lumberjacker »

Code: Select all

##
#Проверяем наличие игроков в поле видимости#
##

sub AttackEnts()
var player
uo.Set('finddistance','15')
var i
  DIM people[2]

  people[0]='0x0190'
  people[1]='0x0191'

  uo.Ignore('self')
     for i = 0 to 1
    uo.FindType(people[i],'-1','ground')
    player = uo.GetSerial('finditem')
    wait(500)
    if uo.FindCount() then
uo.Exec('terminate Lumberjacking')
RecallAtAttack()
    end if
end sub

##
# побег#
##

sub RecallAtAttack()
uo.Ignore('all')
var mX,mY
reccal:
uo.DeleteJournal()
if uo.Waiting() then
uo.CancelTarget()
end if
mX=uo.getX("self")
mY=uo.getY("self")
uo.DeleteJournal()
UO.UseType( '0x0F06' )
uo.waittargetobject('home')
UO.UseType( '0x1F4C' )
uo.Print('Fucking hippies')
wait(3000)
if not uo.getX("self")<>mX and not uo.getY("self")<>mY then
goto reccal
end if
uo.Print('Yea baby')
Wait(5000)
Terminate()
end sub



Как сделать игнорирование всех персонажей кого он видит, uo.ignore('all')? Я плохо знаю как делаются скрипты. в общем задумка такая, чтобы он рубил, и как видит кого то в лесу тут же улетал домой. но если видит когонить дома или за пределами базы, то просто спокойно стоял, а не пытался бесконечно число раз среколиться. потом допустим выгрузил логи и полетел в лес. в лесу проверка на поиск плееров опять включается
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Re: подскажите с uo.ignore

Post by Scripts Writer »

1. Проверять координаты того, кого видит. Если он в координатах базы или дома- тогда не улетать.
2. Предварительно заигнорить персонажей которые на базе или дома, чтобы на них не реагировать.
Lumberjacker
Posts: 16
Joined: 2009-01-14 23:34:57

Re: подскажите с uo.ignore

Post by Lumberjacker »

1. Проверять координаты того, кого видит. Если он в координатах базы или дома- тогда не улетать.

приведи, пожалуйста, пример синтаксиса написания
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: подскажите с uo.ignore

Post by Mirage »

Code: Select all

   uo.FindType(animal, COLanimal, 'ground')
   if uo.FindCount()>0 AND uo.GetX('finditem')<5904 then
      if uo.GetY('finditem')>=1449 and uo.GetY('finditem')<=1455 then
         UO.Print(UO.GetName('finditem') +' справа')
         walker(5896, 1455,0) ; идем направо
      else
      if uo.GetY('finditem')>=1457 and uo.GetY('finditem')<=1463 then
         UO.Print(UO.GetName('finditem') +' слева')
         walker(5896, 1457,0) ; идем налево
      endif
      endif
      endif
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: подскажите с uo.ignore

Post by Beyonder »

К примеру так:

Code: Select all

#X и Y верхнего левого угла безопасного сектора
var safeX1 = 100
var safeY1 = 100

#X и Y правого нижнего угла безопасного сектора
var safeX2 = 200
var safeY2 = 200

Sub isAreaSafe()
   var playerType = "0x0000" #Type of player
   
   UO.set('finddistance',24)

   UO.FindType(playerType,0,'ground')
   while (UO.FindCount())
      if (UO.GetX('finditem') >= safeX1 AND UO.GetX('finditem') <= safeX2 AND UO.GetY('finditem') >= safeY1 AND UO.GetY('finditem') <= safeY2) then
         UO.Ignore('finditem')
      else
         return false
      endif
      
      UO.FindType(playerType,0,'ground')
   wend
   
   return true
endsub


Пример использования:

Code: Select all

...
#
if (isAreaSafe() == false) then
     recallHome()
endif
...
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Re: подскажите с uo.ignore

Post by Beyonder »

Mirage wrote:

Code: Select all

   uo.FindType(animal, COLanimal, 'ground')
   if uo.FindCount()>0 AND uo.GetX('finditem')<5904 then
      if uo.GetY('finditem')>=1449 and uo.GetY('finditem')<=1455 then
         UO.Print(UO.GetName('finditem') +' справа')
         walker(5896, 1455,0) ; идем направо
      else
      if uo.GetY('finditem')>=1457 and uo.GetY('finditem')<=1463 then
         UO.Print(UO.GetName('finditem') +' слева')
         walker(5896, 1457,0) ; идем налево
      endif
      endif
      endif


А что если на экране будет две твари, одна в безопасной зоне а вторая не в ней? Твой скрипт найдёт ту которая в безопасной зоне :)
Lumberjacker
Posts: 16
Joined: 2009-01-14 23:34:57

Re: подскажите с uo.ignore

Post by Lumberjacker »

Большое спасибо вам за помощь, очень признателен :)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: подскажите с uo.ignore

Post by Mirage »

Beyonder wrote:

это не пример ЕГО скрипта. Это пример из моей тамилки в 2 загонах.Радиус поиска идет по кругу по часовой стрелке. Всегда сперва найдет справа потом слева если они одновременно появятся. В моем примере можно разделить загоны как безопасный и нет заменив walker на нужные действия :P

Если за всех все делать как же они научатся сами? :mrgreen:

Кстати можно еще вариант предложить который мы забыли :lol:
В скрипте перед реколлом просто терминатить процедуру AttackEnts() а после того как прилетел на место копки рубки снова ее запускать и ненадо никаких доработок скрипта :roll:
Post Reply