Исправьте что не так

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
zekauo
Posts: 1
Joined: 2006-05-30 21:25:31

Исправьте что не так

Post by zekauo »

на дрв УНСП блочит закупку, подправьте под дрв

Code: Select all

 ##################################################### 
#                         NOVA                      # 
#               Dungeon [*HiCk*] © 2005             # 
#                 (http://nova-uo.com)              # 
##################################################### 


################################### 
# Èñïîëüçîâàíà Ñàâàäæåâñêàÿ õîäèëêà 
################################### 
# Ñïèñîê ðåãîâ ñîñòàâëÿåòñÿ âî âêëàäêå Buy/Sell ñòðàíèöû Main èíæåêòà 
# è îáçûâàåòñÿ íåïîòðåáíûì ñëîâîì "test" 
# òàêæå äëÿ ñêóïêè ðåêîë ðîåãîâ þçàåì ñïèñêè ïîêóïêè "bp", "mr", "bm" 
# Â ñêðèïòå ìîæíî óáåðàòü ðóíû èç ïðîõîäà ò.ê. íà Íîâå öåíû â ãîðîäà çàâèñÿò îò ôðàêöèé 
# Åñòü âûêëàäûâàëêà â áàíê ðåãîâ è àâòîìàòè÷åñêàÿ äîêóïàëêà èõ ó âåíäîðîâ. 
# Ê êàæäîé ðóíå ìîýæåò áûòü ïðèâÿçàíî ñêîëüêî óãîäíî âåíäîðîâ. 
# Õç ÷òî âàì åùå ìîæåò ïîíàäîáèòñÿ ) 
# Äóìàþ ÷òî ñîîáðàæàþùèé ïîëüçîâàòåëü âïîëíå ðàçáåðåòñÿ ñ íàñòðîéêîé. 
# Ñäåëàíî íà îñíîâå êàêîãî-òî ìàêðîñà ñ ôîðóìà Yako 
# Çàêèäûâàåì â ñåáÿ ÷åê íà êó÷ó äåíåã è âïåðåä ïî ìàãàçèíàì ) çà íî÷ ñêóïàåòñÿ íåìåðåííî ðåãîâ ) 
# Version 1.0 RC0 

sub main()     
   var maxRune = 7; # Ðàçìåðíîñòü ìàñèâà rune 
   var maxVendors = 7; # Ðàçìåðíîñòü ìàñèâà vendors 
   var maxRegs = 1; # Êîë-âà ïîêóïàåìûõ ðåãîâ 
   var res; 
   DIM rune[12]     
   DIM ven[12] 
   DIM RegsToBuy[1] #Òèïû ðåãîâ êîòîðûå âû ïîêóïàåòå äëÿ âûêëàäûâàíèÿ â áàíê 
   var useAll = true; # Åñëè íå íàäî îòìåíÿòü íèêàêèå ðóíû ïîñòàâòå true 
   var maxNoBuy = 2; # Ðàçìåðíîñòü ìàñèâà NoBuy 
   DIM NoBuy[10] #Ìàñèâ äëÿ ïîìåòêè ðóí ïî êîòîðûì íåíóæíî ðåêîëèòñÿ    
   var i, n, j, m, recallNext, h, amoun     
   var runeBank = '0x400265A2'; 
   rune[1]='0x401E6EE7'     
   rune[2]='0x401E6DD9' 
   rune[3]='0x4013D53E' 
   rune[4]='0x4013D5A3' 
   rune[5]='0x4013D6C7' 
   rune[6]='0x4013D56D' 
   rune[7]='0x4013D63D' 
   rune[8]='0x4013D616' 
   rune[9]='0x4013D70F' 
   rune[10]='0x4013D591' 
   rune[11]='0x4013D6EE' 
   rune[12]='0x4015C288' 
   ven[1]='0x004E7A24,0x00327187' #Britain niz
   ven[2]='0x00002081,0x00002082' #Trinsic 
   ven[3]='0x00002D14,0x00002D11' #Britain 
   ven[4]='0x000020A3,0x000020A4' #Vesper 
   ven[5]='0x0000209B,0x00002099' #Vesper 
   ven[6]='0x00018979,0x0001897A' #Maginciya 
   ven[7]='0x00002A54,0x00002A36' #Moonglow 
   ven[8]='0x00002FD8,0x00002FE4' #Moonglow 
   ven[9]='0x00002EA4,0x00002EC6' #Jelom 
   ven[10]='0x0000C593' #Jelom 
   ven[11]='0x00002DF0,0x00002DFE' #Skara bra 
   ven[12]='0x00002E39,0x00002E38' #Skara bra 
   NoBuy[1] = 6; 
   NoBuy[2] = 7; 
   RegsToBuy[1] = '0x0F7A' 
    
   repeat        
      for i=1 to maxRune 
         recallNext = true; 
         if useAll == false then 
            for m = 1 to maxNoBuy 
               if i == NoBuy[m] then 
                  recallNext = false;    
               endif 
            next 
         endif 
         if recallNext == true then 
            if UO.Weight>300 then    
               recall(-1,runeBank)                
               UO.Say("bank guards")                
               wait(1000); 
               for h=1 to maxRegs 
                  uo.findtype(RegsToBuy[h],-1,"Bpack") 
                  amoun = uo.GetQuantity("finditem")-30                   
                  if amoun > 0 then 
                     uo.moveitem("finditem",amoun,"lastcontainer") 
                  endif 
                  wait(1000) 
               next 
            endif 
            recall(i,rune) 
            for j=1 to GetAmountVendors( ven[i] ) 
               uo.Print(STR(GetVendor( ven[i], j ))) 
               WalkN(0,0,GetVendor( ven[i], j )) 
               UO.buy('test','vendor') 
               wait(1000) 
               UO.Say( uo.GetName(GetVendor( ven[i], j )) + " buy") 
               UO.DeleteJournal()              
               if UO.BM<30 || UO.BP<30 || UO.MR<30 then 
                  BuyRegs( uo.GetName(GetVendor( ven[i], j )) ) 
               end if    
            next 
            UO.Click(rune[i]) 
            repeat 
               wait(1000) 
            until UO.InJournal('Recalls Remaining') 
            res = takenum() 
            if res < 10 then 
               Mark(i,rune) 
            endif 
            med() 
         endif 
      next 
      waitNext(); 
   until UO.Dead() 
end sub 

sub BuyRegs( VendorName ) 
   if UO.BM<30 then 
      UO.buy('bm','vendor') 
      wait(1000) 
      UO.Say( VendorName + " buy") 
      UO.DeleteJournal() 
   end if     
   if UO.BP<30 then 
      UO.buy('bp','vendor') 
      wait(1000) 
      UO.Say( VendorName + " buy")     
      UO.DeleteJournal() 
   end if     
   if UO.MR<30 then 
      UO.buy('mr','vendor') 
      wait(1000) 
      UO.Say( VendorName + " buy") 
      UO.DeleteJournal() 
   end if 
end sub 

sub GetVendor( str, j ) 
   var   lstr, ven, venID, i 
   if GetAmountVendors( str ) < j then 
      j = GetAmountVendors( str ); 
   endif 
   lstr = len( str ) 
   ven = 1; 
   venID = ''    
   for i = 0 to lstr       
      if str[i]==',' then           
         if ven == j then             
            return venID 
         else 
            venID = '' 
            ven = ven + 1 
         endif 
      else 
         venID = venID+str[i];       
      endif 
   next 
   return venID 
end sub 

sub waitNext() 
   var i; 
   for i = 0 to 80 
      uo.Say("guards Bank") 
      wait(4000) 
   next 
end sub 

sub GetAmountVendors( str ) 
   var j, num, i 
   j = len( str ) - 1 
   num=1; 
   for i = 0 to j        
      if str[i]==',' then 
         num=num+1        
      endif        
   next     
   return num; 
end sub 
  
sub takenum() 
   var ns, j, i, n 
   var str, num 
   num=''     
   n=uo.InJournal('Recalls Remaining')-1 
   str=uo.Journal(n) 
   UO.Print(str) 
   j = len( str ) - 1 
   for i = 0 to j 
      if str[i]<>' ' then 
         num=num+str[i] 
      else 
         return val(num) 
      endif        
   next 
   return val(num) 
end sub 

sub Recall(i,rune) 
   var b 
   if i <> -1 then 
      uo.print('Recoll Rune '+str(i)) 
   endif 
   for b=1 to 10 
      if i == -1 then 
         uo.deletejournal() 
         uo.waittargetobject(rune) 
         uo.cast('Recall',rune) 
         if WaitForRecall()==1 then 
            return 1 
         end if 
      else 
         uo.deletejournal() 
         uo.waittargetobject(rune[i]) 
         uo.cast('Recall',rune[i]) 
         if WaitForRecall()==1 then 
            return 1 
         end if 
      end if 
   next 
   return 0 
end sub 

sub Mark(i,rune) 
   uo.waittargetobject(rune[i]) 
   uo.cast('Mark',rune[i]) 
end sub 

sub WaitForRecall() 
   var Text1="cliloc# 0xAB68" 
   var mess='',lastX=uo.getX(),lastY=uo.getY() 
   for var v=0 to 200 
      mess=uo.journal(0) 
      if uo.Journal(0)==Text1 then 
         return 0 
      end if 
      if uo.getX()<>lastX OR uo.getY()<>LastY then 
         return 1 
      end if 
      wait(1000) 
   next 
   return 0 
end sub 

sub med() 
   VAR LastTimer 
   while UO.Mana<UO.Int 
      LastTimer=UO.Timer() 
      UO.UseSkill('Meditation') 
      repeat 
         wait(1000) 
      until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200 
      UO.DeleteJournal() 
      wait(1000) 
   wend 
end sub 


############################## 
# WalkN(X,Y,Serial) - char is walking by dX and dY step 
# sub using Home, End, PgUp, PgDown keys 
# d'not rebind this key from default action! 
# serial - Serial of target or "" - string 
# walkwait - delay after keypress 
# Example: 
# WalkN(2080,2113,'') - go to coordinates 
# WalkN(0,0,'0x12345678') - go to target position 
#-------------------------------------------------------------- 
sub WalkN(x,y,Target) 
   VAR i,StepSucess 
   VAR dx,dy,Exit=0 
   While Exit<>1 
      If Target<>"" Then 
         dx=UO.GetX(Target)-UO.GetX() 
         dy=UO.GetY(Target)-UO.GetY() 
         If UO.GetDistance(Target)<2 Then 
            Exit=1 
         Endif 
      Else 
         dx=x-UO.GetX() 
         dy=y-UO.GetY() 
         If dx==0 AND dy==0 Then 
            Exit=1 
         Endif 
      Endif 
      if Target<>"" AND uo.GetDistance(Target)<=3 then          
         Exit=1 
      endif 
      If dx<>0 AND dy<>0 Then 
         If dx>0 AND dy>0 Then 
            StepSucess=Go(3,40,300) ;SE - DownArrow 
            If StepSucess==-1 Then 
               StepSucess=Go(7,38,300) ;WN - UpArrow 
               StepSucess=Go(1,39,300) ;NE - RightArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(5,37,300) ;SW - LeftArrow 
               Endif 
            Endif 
         Endif 
         If dx>0 AND dy<0 Then 
            StepSucess=Go(1,39,300) ;NE - RightArrow 
            If StepSucess==-1 Then 
               StepSucess=Go(5,37,300) ;SW - LeftArrow 
               StepSucess=Go(3,40,300) ;SE - DownArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(7,38,300) ;WN - UpArrow 
               Endif 
            Endif 
         Endif 
         If dx<0 AND dy>0 Then 
            StepSucess=Go(5,37,300) ;SW - LeftArrow 
            If StepSucess==-1 Then 
               StepSucess=Go(1,39,300) ;NE - RightArrow 
               StepSucess=Go(7,38,300) ;WN - UpArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(3,40,300) ;SE - DownArrow 
               Endif 
            Endif 
         Endif 
         If dx<0 AND dy<0 Then 
            StepSucess=Go(7,38,300) ;WN - UpArrow 
            If StepSucess==-1 Then 
               StepSucess=Go(3,40,300) ;SE - DownArrow 
               StepSucess=Go(5,37,300) ;SW - LeftArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(1,39,300) ;NE - RightArrow 
               Endif 
            Endif 
         Endif 
      Endif 
      If dx<>0 AND dy==0 Then 
         If dx>0 Then 
            StepSucess=Go(2,34,300) ;E - PgDown 
            If StepSucess==-1 Then 
               StepSucess=Go(3,40,300) ;SE - DownArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(1,39,300) ;NE - RightArrow 
               Endif 
               StepSucess=Go(2,34,300) ;E - PgDown 
            Endif 
         Endif 
         If dx<0 Then 
            StepSucess=Go(6,36,300) ;W - Home 
            If StepSucess==-1 Then 
               StepSucess=Go(7,38,300) ;WN - UpArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(5,37,300) ;SW - LeftArrow 
               Endif 
               StepSucess=Go(6,36,300) ;W - Home 
            Endif 
         Endif 
      Endif 
      If dx==0 AND dy<>0 Then 
         If dy>0 Then 
            StepSucess=Go(4,35,300) ;S - End 
            If StepSucess==-1 Then 
               StepSucess=Go(3,40,300) ;SE - DownArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(5,37,300) ;SW - LeftArrow 
               Endif 
               StepSucess=Go(4,35,300) ;S - End 
            Endif 
         Endif 
         If dy<0 Then 
            StepSucess=Go(0,33,300) ;N - PgUp 
            If StepSucess==-1 Then 
               StepSucess=Go(1,39,300) ;NE - RightArrow 
               If StepSucess==-1 Then 
                  StepSucess=Go(7,38,300) ;WN - UpArrow 
               Endif 
               StepSucess=Go(0,33,300) ;N - PgUp 
            Endif 
         Endif 
      Endif 
   Wend 
end sub 

sub Go(dir,key,walkwait) 
   VAR x,y, OldDir 
   x=UO.GetX() 
   y=UO.GetY() 
   OldDir=UO.GetDir() 
   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() 
   Endif 
   If x==UO.GetX() AND y==UO.GetY() AND OldDir<>UO.GetDir() Then 
      UO.Press(key) 
      wait(walkwait) 
   Endif 
   If x==UO.GetX() AND y==UO.GetY() Then 
      CheckLag() 
   Endif 
   If x==UO.GetX() AND y==UO.GetY() Then 
      UO.Print("Zasada!") 
      return -1 
   Else 
      return 1 
   Endif 
end sub 

sub CheckLag() 
   UO.DeleteJournal() 
   UO.Click('backpack') 
   repeat 
      wait(1000) 
   until UO.InJournal('cliloc# 0x9ED5') 
end sub 
BigMouseI
Posts: 93
Joined: 2006-04-15 09:00:35

Post by BigMouseI »

Не блочит на ДРВ, отключи просто галку на No client hung message
Post Reply