Yoko

All sides of Injection
It is currently 2025-11-22 22:14:06

All times are UTC+02:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
PostPosted: 2010-02-02 21:23:59 
Offline

Joined: 2009-01-14 23:34:57
Posts: 16
Code:
##
#Проверяем наличие игроков в поле видимости#
##

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')? Я плохо знаю как делаются скрипты. в общем задумка такая, чтобы он рубил, и как видит кого то в лесу тут же улетал домой. но если видит когонить дома или за пределами базы, то просто спокойно стоял, а не пытался бесконечно число раз среколиться. потом допустим выгрузил логи и полетел в лес. в лесу проверка на поиск плееров опять включается


Top
   
PostPosted: 2010-02-02 23:41:24 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
1. Проверять координаты того, кого видит. Если он в координатах базы или дома- тогда не улетать.
2. Предварительно заигнорить персонажей которые на базе или дома, чтобы на них не реагировать.


Top
   
PostPosted: 2010-02-03 21:46:09 
Offline

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

приведи, пожалуйста, пример синтаксиса написания


Top
   
PostPosted: 2010-02-04 00:31:34 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Code:
   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

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2010-02-04 00:42:47 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
К примеру так:

Code:
#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:
...
#
if (isAreaSafe() == false) then
     recallHome()
endif
...


Top
   
PostPosted: 2010-02-04 00:46:18 
Offline
Expert!
User avatar

Joined: 2005-04-23 10:19:43
Posts: 388
Mirage wrote:
Code:
   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


А что если на экране будет две твари, одна в безопасной зоне а вторая не в ней? Твой скрипт найдёт ту которая в безопасной зоне :)


Top
   
PostPosted: 2010-02-04 03:17:29 
Offline

Joined: 2009-01-14 23:34:57
Posts: 16
Большое спасибо вам за помощь, очень признателен :)


Top
   
PostPosted: 2010-02-04 07:15:39 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Beyonder wrote:

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

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

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

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 8 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited