Page 1 of 1

Поиск людей..

Posted: 2008-03-17 18:40:59
by korzh
Как правильно искать людей (для скрипта для детекта плееров для мининга) чтобы не крашило все время...? :roll:

Code: Select all

dim m[2]
  m[0]='0x0000'
  m[1]='0x0001'

while true
...
1)
...
  for i = 0 to 1
    uo.findtype(m[i],-1,'ground')
    if uo.findcount() then
       ....
  next

2)
...
  uo.findtype('0x0000',-1,'ground')
  i = uo.findcount()
  uo.findtype('0x0001',-1,'ground')
  i = i + uo.findcount()
  if i > 0 then
    ....

3)
...
  uo.findman(-1)
  if uo.findcount() then
    ....
  wait(100)
wend


Зы мне кажется как раз в самом поиске людей проблема..Если нужно могу скрипт выложит.

Posted: 2008-03-17 19:11:27
by Destruction
Люди бывают двух типов.. женщины и мужчины.. uo.findtype( мужык, -1, земля )..

Всегда так делал - никогда не крашило.

Так, что в самом поиске никакой проблемы - имхо нет.

Posted: 2008-03-18 09:33:21
by korzh
Ну во всех трех вариантах поиск и мужиков и женщин :)
Может со скриптом тогда не так чтото, вот без него мининг работает по 5-10 часов, с ним по 1-2 минуты... И фигня даже в том что скрипт все равно крашит даже если никого нет..

Code: Select all

sub PermPkProtect()
   var i, mn
   uo.ignore('self')
   UO.Set('finddistance', '8')
   dim m[2]
   m[0]='0x0190'
   m[1]='0x0191'
   while uo.life > -1
      deljournal('is attacking you')
      if not uo.dead() && uo.getglobal('PermPkProtect') == 'On' then
         for i = 0 to 1
            uo.findtype(m[i],-1,'ground')           
            if uo.findcount() || UO.injournal('is attacking you') || (UO.GetHP()<UO.GetMaxHP()) then
               Control('Pause')
               uo.msg('Fuck you ' + getname('finditem') + '!')
               r:
               mn = uo.mana
               deljournal('fizzles')
               uo.waittargetobject(getini(GetProfile('Config'),'HomeConfig','HomeRune'))
               uo.usetype( '0x1F4C' )
               while mn >= uo.mana
                  wait(50)
               wend
               if not uo.injournal('fizzles') then
                  checklag()
               else
                  goto r
               endif
               if not uo.dead() then
                  PkProtect('success')
                  Control('Play')
               else
                  PkProtect('dead')
                  uo.print('you are dead!')
               endif
            endif
         next
      else
         while ( ( uo.getglobal('PermPkProtect') <> 'On' ) || uo.dead() )
            wait( 1000 )
         wend
      endif
      wait( 200 )
   wend
endsub


ЗЫ Дестр, и ты так и не сказал какой из трех вариант лучше и\или все гавно и предложить свой :)

Posted: 2008-03-18 10:12:22
by Destruction
В связи с тем, что с финдманом я никогда не работал, а второй вариант криво реализован, я бы посоветовал использовать первый :)

Posted: 2008-03-18 10:29:35
by korzh
Я вот тоже на нем остановился.. Но проблему то ето не решает, скрипто то крашит))
В смежных процедурах все корректно так как они используются почти во всех скриптах.
Проблема именно тут, и мне почему то кажется именно в поиске..Потому что так тоже крашит...

Code: Select all

sub PermPkProtect()
   var i
   uo.ignore('self')
   UO.Set('finddistance', '10')
   dim m[2]
   m[0]='0x0190'
   m[1]='0x0191'
   while uo.life > -1
         for i = 0 to 1
            uo.findtype(m[i],-1,'ground')           
            if uo.findcount()  then
               uo.print('тут ктото есть')
               wait(1000)               
            endif
         next
      wait(200)
   wend
endsub

Posted: 2008-03-18 11:45:32
by Grin
ну возми и исключи findtype из этого куска кода...
сообветствено принт тоже, а то за флудишь...
попробуй паузу поставить меду файнд тайпом и каунтом... в перед..

Posted: 2008-03-18 11:45:47
by Edred
Как мне писал когда-то Yoko, Findman - ничто иное, как именно поиск типов 0x0190 и 0x0191 на земле в радиусе, определенном в finddistance. И ничего более. Поэтому его можно использовать, ничего страшного в нем нет. Более того, код должен значительно сокращаться.

Я не использовал его, потому что сидел на старой (стабильной) версии инжекта. В которой его не было.

Posted: 2008-03-18 13:46:23
by korzh
Grin wrote:...
попробуй паузу поставить меду файнд тайпом и каунтом... в перед..

Cудя по всему помогло, уже 15 минут работает ;)
Edred wrote:...
Я не использовал его, потому что сидел на старой (стабильной) версии инжекта. В которой его не было.

А это какая? И есть ли она в паблике?