Yoko

All sides of Injection
It is currently 2024-03-29 01:52:18

All times are UTC+02:00




Post new topic  Reply to topic  [ 10 posts ] 
Author Message
PostPosted: 2013-01-15 19:44:10 
Offline

Joined: 2013-01-15 15:24:07
Posts: 20
Что бы если моба убил не я он не пытался слутать из трупа то что указано для лута, а закрывал ячейку где лут моба или просто дальше включал поиск и ждал пока реснеться он.
а то иногда тупит изза этого.

Code:
var distance='6' # ????????? ?????? ?????
   var corpser='0' # 1-?????? ???? # 0-?? ?????? ????
   
sub main()
   var n, m, mob
   var tweapon=uo.getserial(uo.objatlayer('Rhand'))
   var tshield=uo.getserial(uo.objatlayer('Lhand'))
   
   Dim npc[10]
   npc[0]=2 # count
   npc[1]='0x03CA'
   npc[2]='0x0018'
   npc[3]=''
   
   Dim loot[50]
   loot[0]=2 # count
   loot[1]='0x0EED'
   loot[2]='0x0F7E'
   loot[3]='0x0E34'
   loot[3]='0x1F58'
   
   uo.set('finddistance',distance)
   while 1
      for n=1 to npc[0]
         uo.findtype(npc[n],-1,'ground')
         if uo.findcount() then
            uo.useobject(tweapon)
            uo.useobject(tshield)
            wait(100)
            mob=uo.getserial('finditem')
            kill(mob)
            uo.useobject('lastcorpse')
            checklag()
            wait(1000)
            for m=1 to loot[0]
               while uo.getquantity('<'+loot[m])
                  uo.moveitem('<'+loot[m])
                  wait(700)
               wend
            next
            while uo.life<uo.str-20 and uo.count('0x0E21')
               uo.bandageself()
               wait(3500)
            wend
            if uo.count('0x0E20') then
               uo.waittargettype('0x1008')
               uo.usetype('0x0E20')
               wait(1000)
            endif
         endif
      next
      wait(1000)
   wend
endsub
sub kill(mob)
   var n
   checklag()
   for n=0 to 100
      uo.attack(mob)
      if uo.getdistance(mob)>1 then
         walkn(0,0,mob)
      endif
      if uo.injournal('Body of') then
         if corpser==1 then
            uo.waittargetobject('lastcorpse')
            wait(100)
            uo.usetype('0x0F51')
            wait(500)   
         endif
         return
      endif
      wait(1000)
   next
endsub
sub WalkN(x,y,Target) ########################################## ???????
   VAR LastTimer
   LastTimer=UO.Timer()
   VAR i
   VAR dir,ldir,rdir,key,olddir
   VAR dx,dy,Exit=0
   VAR CacheLimit=9,CacheIndex="Text"
   DIM CacheX[10], CacheY[10]
   
   CacheX[0]="Test"
   uo.say('')   
   While Exit<>1   
      If Target<>"" Then
         dx=UO.GetX(Target)-UO.GetX()
         dy=UO.GetY(Target)-UO.GetY()         
         If UO.GetDistance(Target)<2 OR LastTimer+100<UO.Timer() Then
            wait(1000)
            return
         Endif
      Else
         dx=x-UO.GetX()
         dy=y-UO.GetY()
         If dx==0 AND dy==0 OR LastTimer+100<UO.Timer() Then
            return
         Endif
      Endif   
      If dx<>0 AND dy<>0 Then
         If dx>0 AND dy>0 Then ; GoSE
            dir=3
            ldir=2
            rdir=4
            key=40 ; DownArrow
            olddir=UO.GetDir()
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
               If olddir==2 Then ; GoNE
                  dir=1
                  ldir=0
                  rdir=1
                  key=39 ; RightArrow
                  While UO.GetDir()<>1
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Else ; GoSW
                  dir=5
                  ldir=5
                  rdir=6
                  key=37 ; LeftArrow
                  While UO.GetDir()<>5
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Endif
            Endif
         Endif
         If dx>0 AND dy<0 Then ; GoNE
            dir=1
            ldir=0
            rdir=2
            key=39 ; RightArrow
            olddir=UO.GetDir()
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
               If olddir==0 Then ; GoWN
                  dir=7
                  ldir=6
                  rdir=7
                  key=38 ; UpArrow
                  While UO.GetDir()<>7
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Else ; GoSE
                  dir=3
                  ldir=3
                  rdir=4
                  key=40 ; DownArrow
                  While UO.GetDir()<>3
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Endif
            Endif
         Endif
         If dx<0 AND dy>0 Then ; GoSW
            dir=5
            ldir=4
            rdir=6
            key=37 ; LeftArrow
            olddir=UO.GetDir()
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
               If olddir==6 Then ; GoWN
                  dir=7
                  ldir=7
                  rdir=0
                  key=38 ; UpArrow
                  While UO.GetDir()<>7
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Else ; GoSE
                  dir=3
                  ldir=2
                  rdir=3
                  key=40 ; DownArrow
                  While UO.GetDir()<>3
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Endif
            Endif
         Endif
         If dx<0 AND dy<0 Then ; GoWN
            dir=7
            ldir=6
            rdir=0
            key=38 ; UpArrow
            olddir=UO.GetDir()
            If StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key) Then
               If olddir==0 Then ; GoNE
                  dir=1
                  ldir=1
                  rdir=2
                  key=39 ; RightArrow
                  While UO.GetDir()<>1
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Else ; GoSW
                  dir=5
                  ldir=4
                  rdir=5
                  key=37 ; LeftArrow
                  While UO.GetDir()<>5
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Endif
            Endif
         Endif
      Endif
      If dx<>0 AND dy==0 Then
         If dx>0 Then ; GoE
            dir=2
            key=34 ; PgDown
            olddir=UO.GetDir()
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
               If olddir==2 Then ; GoSE
                  dir=3
                  ldir=3
                  rdir=4
                  key=40 ; DownArrow
                  While UO.GetDir()<>3
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Else ; GoNE
                  dir=1
                  ldir=1
                  rdir=0
                  key=39 ; RightArrow
                  While UO.GetDir()<>1
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Endif
            Endif
         Endif       
         If dx<0 Then ; GoW
            dir=6
            key=36 ; Home key
            olddir=UO.GetDir()
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
               If olddir==0 Then ; GoWN
                  dir=7
                  ldir=7
                  rdir=0
                  key=38 ; UpArrow
                  While UO.GetDir()<>7
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Else ; GoSW
                  dir=5
                  ldir=4
                  rdir=5
                  key=37 ; LeftArrow
                  While UO.GetDir()<>5
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Endif
            Endif
         Endif
      Endif
      If dx==0 AND dy<>0 Then
         If dy>0 Then ; GoS
            dir=4
            key=35 ; End
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
               If olddir==2 Then ; GoSE
                  dir=3
                  ldir=2
                  rdir=3
                  key=40 ; DownArrow
                  While UO.GetDir()<>3
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Else ; GoSW
                  dir=5
                  ldir=6
                  rdir=5
                  key=37 ; LeftArrow
                  While UO.GetDir()<>5
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Endif
            Endif
         Endif     
         If dy<0 Then ;GoN
            dir=0
            key=33 ; PgUp
            olddir=UO.GetDir()
            If StepEdit(UO.GetX(),UO.GetY(),dir,key) Then
               If olddir==2 Then ; GoNE
                  dir=1
                  ldir=1
                  rdir=2
                  key=39 ; RightArrow
                  While UO.GetDir()<>1
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Else ; GoWN
                  dir=7
                  ldir=7
                  rdir=6
                  key=38 ; UpArrow
                  While UO.GetDir()<>7
                     StepArrow(UO.GetX(),UO.GetY(),dir,ldir,rdir,key)
                  Wend
               Endif
            Endif
         Endif
      Endif
   Wend
end sub
sub StepEdit(x,y,dir,key)
   VAR walkwait=150
   VAR ErrLevel=0
   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir Then
         CheckLag()
      Endif
   Endif
   UO.Press(key)
   wait(walkwait)
   If x==UO.GetX() AND y==UO.GetY() Then
      CheckLag()
      If x==UO.GetX() AND y==UO.GetY() Then
         ;zatik
         ErrLevel=1
      Endif
   Endif
   Return ErrLevel
end sub
sub StepArrow(x,y,dir,ldir,rdir,key)
   VAR walkwait=150
   VAR ErrLevel=0
   If UO.GetDir()<>dir Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()<>dir AND UO.GetDir()<>ldir AND UO.GetDir()<>rdir Then
         CheckLag()
      Endif
   Endif
   If UO.GetX()==x AND UO.GetY()==y Then
      UO.Press(key)
      wait(walkwait)
      If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
         CheckLag()
         If UO.GetDir()==dir AND UO.GetX()==x AND UO.GetY()==y Then
            ;zatik         
            ErrLevel=1
         Endif
      Endif
   Endif
   Return ErrLevel
end sub
sub checklag()
   repeat
      UO.DeleteJournal()
      UO.Click('backpack')
   until backpack()==1
endsub
sub backpack()
   var n
   for n=0 to 200
      if uo.injournal('a backpack') then
         return 1
      endif
      wait(200)
   next
endsub


Top
   
PostPosted: 2013-01-15 22:24:03 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Прелести работы с журналом.

Переделывать чтобы вместо сообщения проверял координату X у монсра.

Как то вот так:

Code:
sub kill(mob)
   var n
   checklag()
   for n=0 to 100
      uo.attack(mob)
      repeat
         if uo.getdistance(mob)>1 then
            walkn(0,0,mob)
         else
            wait(100)
         end if
      until uo.dead() or uo.GetX(mob)==0
      if uo.injournal('Body of') then
         if corpser==1 then
            uo.waittargetobject('lastcorpse')
            wait(100)
            uo.usetype('0x0F51')
            wait(500)   
         endif
         return
      endif
      wait(1000)
   next
endsub

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


Top
   
PostPosted: 2013-01-16 10:37:26 
Offline

Joined: 2013-01-15 15:24:07
Posts: 20
Всё ровно....а может чар пытается порезать, а не полутать...ведь если убил не я рипера то по идее не открывает пак трупа?
Я журнал сфоткаю и пришлю что пишет...и после этого новую цель не ищет.
а если я убиваю и лутаю то норм


Top
   
PostPosted: 2013-01-16 10:48:04 
Offline

Joined: 2013-01-15 15:24:07
Posts: 20
Вот что происходит если убью не я моба...пытается полутать его и зацикливается.
а можно сделать что бы если 1 раз не получилось слутать то прекращал делать это?
Или какие варианты еще?
Image


Top
   
PostPosted: 2013-01-16 10:49:08 
Offline

Joined: 2013-01-15 15:24:07
Posts: 20
Помогите плиз.
новый появляется моб, а толку нет)


Top
   
PostPosted: 2013-01-16 13:08:03 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
А ну так написал бы что если убивает другой - лутать ты можешь через определенное время - это по дефолту но не на всех серверах работает.

Code:
var j = 0
            for m=1 to loot[0]
               while uo.getquantity('<'+loot[m]) or j = 0
                  uo.moveitem('<'+loot[m])
                  wait(700)
                    if uo.injournal('loot this corpsw yet') then
                       j == 1
                    endif
               wend
            next

PS Писал на коленке, если работать не будет то вечером покажу как у меня это выглядит (значительно меньше строк с чуть чуть более широким функционалом).

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


Top
   
PostPosted: 2013-01-16 13:24:55 
Offline

Joined: 2013-01-15 15:24:07
Posts: 20
спасибо за старания-гениальный вы!
попробую сегодня, отпишусь.

А var j = 0 не было в скрипте, вписать нужно после строк ?)

Code:
kill(mob)
uo.useobject('lastcorpse')
checklag()
wait(1000)



Не знаю ошибку пишет и указывает на строку while uo.getquantity('<'+loot[m]) or j = 0

тогда вечером буду ждать когда сможете подправить)

И еще...лутает почему то первые 2 наименования, гп например и бланк скроллы, а камушки-реги итд нехочет...может скорость большая?


Top
   
PostPosted: 2013-01-17 10:52:24 
Offline

Joined: 2013-01-15 15:24:07
Posts: 20
Да и еще правильно ли я понимаю что
Code:
 while uo.getquantity('<'+loot[m])
                  uo.moveitem('<'+loot[m])
                  wait(2500)


то что в скобках это скорость лута?
изначально было 500 я на 2500 поменял.
или в скрипте нет скорости лута?


Top
   
PostPosted: 2013-02-06 02:07:30 
Offline
User avatar

Joined: 2012-12-26 11:37:25
Posts: 30
Location: Киев
Mirage wrote:
А ну так написал бы что если убивает другой - лутать ты можешь через определенное время - это по дефолту но не на всех серверах работает.

Code:
var j = 0
            for m=1 to loot[0]
               while uo.getquantity('<'+loot[m]) or j = 0
                  uo.moveitem('<'+loot[m])
                  wait(700)
                    if uo.injournal('loot this corpsw yet') then
                       j == 1
                    endif
               wend
            next

PS Писал на коленке, если работать не будет то вечером покажу как у меня это выглядит (значительно меньше строк с чуть чуть более широким функционалом).

Не работает. Покажите как должно быть, если можна. :oops:


Top
   
PostPosted: 2013-02-06 07:09:16 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
У меня старая убивалка выглядела вот так:

Code:
sub KillIt()
   VAR MaxVes = 600
   VAR n=1
   var animal='0x000D'
   uo.ignorereset()
   
   Repeat
      uo.Set('finddistance', n)
      uo.FindType(animal, -1, 'ground')
      if uo.FindCount() then
         uo.resend()
         n=1
         uo.attack('finditem')
         repeat
            if uo.GetDistance('finditem') > 2 then
               walker(uo.GetX('finditem'),uo.GetY('finditem'),2)
            else
               wait(100)
            end if
         until uo.dead() or uo.GetX('finditem')==0
         wait(100)
         Loot()
      else
         n=n+1 ; если монстр не найден то увеличиваем радиус поиска
         if n>10 then
            n=1
         endif
      end if
      Loot()  ; лут
   Until uo.Dead() || UO.Weight > MaxVes
   hanthome() ; оттаскивает хабар домой.
end sub


А вот так не будет пытаться слутать не свой труп.

Code:
Sub Loot()
   var a
   DIM G[4]
   G[0] = '0x0EED'; деньги
   G[1] = '0x0F7E';
   G[2] = '0x0E34';
   G[3] = '0x1F58';
   var body = '0x2006'
   var corpse
   UO.Set('quiet','1')
   uo.set('finddistance', '3')
   uo.findtype(body, -1, 'ground')
   if uo.findcount() and Uo.GetDistance( body ) < 4 then
      corpse = uo.getSerial('finditem')
      uo.deletejournal()
      uo.useobject(corpse)
      checklag()
      if NOT uo.injournal('loot this corpsw yet') then
         For a=0 to 3
            UO.FindType( G[a], -1, corpse )
            while UO.FindCount()
               uo.moveitem('finditem','0','backpack')
               wait(500)
               UO.FindType( G[a], -1, corpse )
            wend
         next
      endif
      UO.Hide(corpse)
      UO.Ignore(corpse)
   endif
   uo.Set('finddistance', 1)
   UO.Set('quiet','0')
endsub

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


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

All times are UTC+02:00


Who is online

Users browsing this forum: Bing [Bot] and 7 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited