кил моб

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

кил моб

Post by Irina E »

прив вот скрипт на кил моб он не весь но мне надо токо в Этом скрипте переделать сам Хз как

тут надо проверить если есть на место где я прилетел ищо мобы каторый в списке

Code: Select all

   Dim npc[10]
   npc[0]=6 # count
   npc[1]='0x0027'
   npc[2]='0x0008'
   npc[3]='0x002F'
   npc[4]='0x0006'
   npc[5]='0x0015'
   npc[6]='0x0004'


вот список мобов

а вот и кусок скрипта каторый надо переделать

он должен проверять если ищо остались то продолжает их убевать а если нет то скрипт останавливаеца

Code: Select all

sub main2()
   var n, m, mob, body='2006'
   var scit='0x1B76' ;ТУТ ТИП ЩИТА
   var daggera='0x1400' ;ТУТ ТИП ТОГО ЧЕМ БУДЕМ УБЕВАТЬ МОБА
   
uo.ignorereset()
   
   Dim npc[10]
   npc[0]=6 # count
   npc[1]='0x0027'
   npc[2]='0x0008'
   npc[3]='0x002F'
   npc[4]='0x0006'
   npc[5]='0x0015'
   npc[6]='0x0004'
   
   Dim loot[50]
   loot[0]=6 # count
   loot[1]='0x0EED' ;ТУТ ОБА И ПЕРВАЯ И ВТОРАЯ ЭТО ТИП ТОГО ЧТО ЛУТИМ
   loot[2]='0x0F78'
   loot[3]='0x0F7C'
   loot[4]='0x0F90'
   loot[5]='0x1BD1'
   loot[6]='0x0F87'
   
  uo.set('finddistance','10')
      for n=1 to npc[0]
      checklag()
         uo.findtype(npc[n],-1,'ground')
         if uo.findcount() then
         uo.waittargetobject(npc[n])
            uo.usetype(daggera)
            checklag()
            wait(500)
            uo.usetype(scit)
            wait(100)
            mob=uo.getserial('finditem')
            kill(mob)
            uo.useobject('lastcorpse')
            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')
            Tohide()
             wait(100)
               uo.bandageself()
               wait(3500)
            wend
            if uo.count('0x0E20') then
               uo.waittargettype('0x1008')
               uo.usetype('0x0E20')
               wait(1000)
            endif
         endif
      next
      wait(1000)
endsub
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: кил моб

Post by Irina E »

мираж помоги
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: кил моб

Post by Mirage »

Если тебе на овец надо то проще 2 типа зверьков ввести и проработатьпо алгоритму
пока жив повторять

Code: Select all

если нашел волосатую овцу - стрижем 
в противном случае
если нашли стриженную овцу - убиваем
конец если
конец цикла.

без for next/ Так будет сперва всех стрич потом всех убивать.

Если не для овец то не понятно зачем даггер.

Стукнись в аську 325811945 если у тебя аська есть.
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: кил моб

Post by Irina E »

Code: Select all

sub kill(mob)
   var n, body='2006'
  var dagger='0x1400' ;ÒÓÒ ÒÈÏ ÄÀÃÅÐÀ ÈËÈ ÒÅÌ ×ÅÌ ÁÓÄÅÒ ÐÅÇÀÒÜ
   checklag()
   for n=0 to 100
      uo.attack(mob)
      if uo.getdistance(mob)>0 then
      uo.resend()
         walkn(0,0,mob)   ;ВОТ ТУТ ОНА ДОЛЖНА БЫТЬ
         #poisk()
         If Uo.GetHP() < 50 then
UO.usetype('0x0F0E','0x09BB')
Endif
      endif
      if uo.injournal('Body of') then
         if corpser==1 then
            uo.waittargetobject('lastcorpse')
            wait(100)
            uo.usetype(dagger)
            wait(500)   
         endif
         return
         uo.ignore(body)
      endif
      wait(1000)
   next
endsub


Это ходилка тупит и и за неё я падаю

Code: Select all


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


МНЕ БЫ НОРМ ХОДИЛКУ С ОБХОДОМ ПРИПЯСТВИЯ
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: кил моб

Post by Irina E »

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

Re: кил моб

Post by Mirage »

У меня оно выглядит вот так примерно:

Code: Select all

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'),1)
            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


n нужно чтобы поиск шел не от края круга к центру, а от центра расширяясь, как локатор. В Loot поиск тела по типу, открыть, вынуть нужные вещи. uo.GetX('finditem')==0 - У убитого моба обнуляются координаты.
Ходилка Beyonder как раз идеально подходит - обход препятствий, сквозь лес, и дома скидывать лут можно на любом этаже даже. У меня чар даже на беге не подлагивал практически никогда.
Irina E
Posts: 240
Joined: 2009-06-12 20:10:00
Location: Vasa Smerti(RASToMAN) DRW

Re: кил моб

Post by Irina E »

мираж проблема у меня опять же с ходил кой можно ли как то зделать чтобы он шол постоянно за мобом а не да пустим моб находица в квадрате 1111,2000,1 тут иду к ним и тут же моб уходит да пустим в квадрате 1115,2009,1 то мой чар идет там где был моб до перехода в другой квадрат.

и вторая проблема если я бю моба и он отходит на одну клетку и стоит на месте то чар ждет пока он не троница с места .

и третия проблема он не подходит постояна к мобу
Post Reply