Добавить полиморф

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Tw
Posts: 31
Joined: 2006-06-24 11:22:43

Добавить полиморф

Post by Tw »

Помогите добавить полиморф в демона. Если возможно с проверкой в демоне чар или нет; добор регов.

Code: Select all

### 
# В рунбуке по порядку лежат руны с первой до 6ой. Указываем таргетом рунбуку, максимальный вес, сундук, # форжу, настраиваем шоплист
# в котором пишем названия всех рингмайл и чайнмайл предметов которые потом пойдут на переплавку,и        # координаты около дома -рядом
# с форжой и сундуком. Запустили-полетели-купили-вернулись-переплавили-инги убрали-полетели дальше.
#######
# ymd #
#######
sub main()
var X,Y, Xself , Yself, z ,i, n, k
var MaxWeight = 700 # Your max weight
uo.Set('finddistance','15')
uo.Set('buydelay','3000')

  uo.AddObject('Runebook')
  while uo.Targeting()
    wait(100)
  wend
 
for z = 0 to 1
  for i = 1 to 8 #6 - six runes to shop in runebook (mb changes)
    RecallShop:
    CheckLag()
    uo.UseObject('Runebook')
    wait(1000)
    uo.LClick(135 , i*15+55) # Runebook for DRW
    wait(500)
    Xself = uo.GetX('self')
    Yself = uo.GetY('self')
    repeat
      wait(100)
    until Xself<>uo.GetX('self') and Yself<>uo.GetY('self')
    uo.Print('Buying ...')
    wait(2550)
    uo.Buy('iron') #Shop list with chainmail items and ringmail items
    wait(6000)
    CheckLag()
    RecallHome()
  next
  wait(300000) #Pause for respaun
next
end sub

sub RecallHome()
var RuneToHome=9 #Slot in runebook where's rune to home
var Runebook='0x401E3A53' #ID of your runebook
var Xself , Yself, k
  RecallHome:
  Xself = uo.GetX('self')
  Yself = uo.GetY('self')
  CheckLag()
  uo.UseObject('Runebook')
  wait(2000)
  uo.LClick(135 , RuneToHome*15+55)
  wait(5000)
  k = 0
  repeat
    uo.Print('Get out an items ...')
    wait(1000)
    k = k + 1
  until Xself<>uo.GetX('self') and Yself<>uo.GetY('self')
  if Xself <> uo.GetX('self') then
    wait(1000)
    SmelthingForIron()
    CheckLag()
  end if
end sub

Sub CheckLag()
  UO.DeleteJournal()
  UO.Click('backpack')
  repeat
    wait(50)
  until UO.InJournal('backpack')
end sub

sub SmelthingForIron()
uo.Set('findistance','5')
var i
var Forge='0x401C37AC' #ID of your forge near house
var Sunduk='0x40074435'  #ID of a container near house
var ingot='0x1BEF'  #Type of iron ingot

DIM chain[10]

    chain[0]='0x13EC' #0-9 .Types of ringmail and chainmail items
    chain[1]='0x13F0'
    chain[2]='0x13BF'
    chain[3]='0x13BB'
    chain[4]='0x13EE'
    chain[5]='0x13EB'
    chain[6]='0x13BE'
    chain[7]='0x1B76'
    chain[8]='0x1411'
    chain[9]='0x1413'

    go(65535,65535,0) # X,Y near forge
    while not uo.Hidden()
      uo.UseSkill('Hiding')
      wait(5000)
    wend
    for i = 0 to 9
      uo.FindType(chain[i],'-1','backpack')
      if uo.FindCount() then
        while uo.FindCOunt()
          uo.FindType(chain[i],'-1','backpack')
          uo.WaitTargetObject('finditem')
          uo.UseObject(Forge)
          wait(1000)
        wend
      else
        uo.Print('There are no chainmail armor')
      end if
    next
    uo.FindType('0x1BEF','-1','backpack')
    if uo.FindCOunt() then
      uo.moveitem('finditem','all',Sunduk)
      wait(1000)
    end if
    uo.FindType('0x1BEF','-1','ground')
    if uo.FindCOunt() then
      uo.moveitem('finditem','all',Sunduk)
      wait(1000)
    end if
end sub   


Sub go(x,y,k)
    var kop
   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"
   kop=0
   While Exit<>1   

         dx=x-UO.GetX()
         dy=y-UO.GetY()
         If dx==0 AND dy==0 Then
            Exit=1
         Endif
         
            kop=kop+1
            if kop==15 then
             Exit=1
            else
   
      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
     endif
   Wend
   if k==1 then
    minround()
   endif
end sub


Sub StepEdit(x,y,dir,key)
   VAR walkwait=300
   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=300
   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()
var ms="attacking you"
var k=uo.life-uo.str
    if k*k>1 or uo.injournal(ms) then
     uo.say("")
    endif
   UO.DeleteJournal()
   UO.Click('backpack')
   repeat
      wait(50)
   until UO.InJournal('backpack')
end sub
Post Reply