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

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