Скуп регов

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
discon
Posts: 34
Joined: 2006-08-09 20:33:57

Скуп регов

Post by discon »

Люди у кого есть нормально работающий скрипт для скупки регов на ДРВ? А то тот НОВАвский, реколится у меня по первой руне, скупает, а дальше не телепортится.... может это я где-то накосячил когда менял, посмотрите плиз

Code: Select all

 sub main()     
   var maxRune = 11; # Размерность масива rune
   var maxVendors = 11; # Размерность масива vendors
   var maxRegs = 3; # Кол-ва покупаемых регов
   var res;
   DIM rune[11]     
   DIM ven[11]
   DIM RegsToBuy[10] #Типы регов которые вы покупаете для выкладывания в банк
   var useAll = true; # Если не надо отменять никакие руны поставте true
   var maxNoBuy = 2; # Размерность масива NoBuy
;   DIM NoBuy[10] #Масив для пометки рун по которым ненужно реколится   
   var i, n, j, m, recallNext, h, amoun     
   var runeBank = '0x400D8B5A';
   rune[1]='0x403D7789'     
   rune[2]='0x403D1DF4'
   rune[3]='0x4000294E'
   rune[4]='0x40265E8E'
   rune[5]='0x404E55E7'
   rune[6]='0x403D7766'
   rune[7]='0x401DAE63'
   rune[8]='0x40002A12'
   rune[9]='0x4029181D'
   rune[10]='0x40002A2C'
   rune[11]='0x400D8B1A'
;   rune[12]='0x4015C288'
   ven[1]='0x00086F0F' #minoc
   ven[2]='0x00442AC8' #delucia
   ven[3]='0x0048E86C' #br1
   ven[4]='0x00476698' #br2
   ven[5]='0x0009F9A3' #br3
   ven[6]='0x00020BE1' #br4
   ven[7]='0x004A66A1' #br5
   ven[8]='0x0004F14E' #tr1
   ven[9]='0x000EFBCA' #tr2
   ven[10]='0x004899DE' #tr3
   ven[11]='0x0007542E,0x00041E50' #tr
;   ven[12]='0x00002E39,0x00002E38' #Skara bra
;   NoBuy[1] = 6;
;   NoBuy[2] = 7;
   RegsToBuy[1] = '0x0E34' #blank scrolls
   RegsToBuy[1] = '0x0F7B' #Blood Moss
   RegsToBuy[1] = '0x0F88' #Nightshade
   RegsToBuy[1] = '0x0F8D' #Spider's Silk
   RegsToBuy[1] = '0x0F8C' #Sulfurous Ash
;   RegsToBuy[1] = '0x0F84' #Garlic
   RegsToBuy[1] = '0x0F86' #Mandrake Roots
   RegsToBuy[1] = '0x0F7A' #Black Pearls
;   RegsToBuy[1] = '0x0F85' #Ginseng
   RegsToBuy[1] = '0x175D' #folded cloth
   RegsToBuy[1] = '0x0F0E' #empty bottles
   RegsToBuy[1] = '0x14EB' #a Blank Map
   
   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>700 then   
               recall(-1,runeBank)               
               UO.Say("bank guards")               
               wait(600);
               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(600)
               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(500)
               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(500)
            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(500)
      UO.Say( VendorName + " buy")
      UO.DeleteJournal()
   end if     
   if UO.BP<30 then
      UO.buy('bp','vendor')
      wait(500)
      UO.Say( VendorName + " buy")     
      UO.DeleteJournal()
   end if     
   if UO.MR<30 then
      UO.buy('mr','vendor')
      wait(500)
      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(50)
   next
   return 0
end sub

sub med()
   VAR LastTimer
   while UO.Mana<UO.Int
      LastTimer=UO.Timer()
      UO.UseSkill('Meditation')
      repeat
         wait(100)
      until UO.InJournal("You are") OR UO.InJournal("You lose") OR UO.Timer()>LastTimer+200
      UO.DeleteJournal()
      wait(200)
   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(500)
   until UO.InJournal('cliloc# 0x9ED5')
end sub
Chico
Posts: 46
Joined: 2005-05-02 17:37:12
Contact:

Post by Chico »

Сильно не смотрел, но сразу скажу места где точно ошибка (точнее связано это стем что в на НОВЕ клилоки, а на ДРВ сообщения )

sub WaitForRecall()
var Text1="cliloc# 0xAB68" Тут заместо клиллока надо вставить сообщение ващего сервера

и в этом сабе

sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(500)
until UO.InJournal('cliloc# 0x9ED5') Тут также при клике на багпак, что говорит ваш серв
end sub

Либо если канал стабильный можно вообще вырезать данный саб и все упоминания на него
discon
Posts: 34
Joined: 2006-08-09 20:33:57

Post by discon »

Chico wrote:Сильно не смотрел, но сразу скажу места где точно ошибка (точнее связано это стем что в на НОВЕ клилоки, а на ДРВ сообщения )

sub WaitForRecall()
var Text1="cliloc# 0xAB68" Тут заместо клиллока надо вставить сообщение ващего сервера

и в этом сабе

sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(500)
until UO.InJournal('cliloc# 0x9ED5') Тут также при клике на багпак, что говорит ваш серв
end sub

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



Я вот тоже заметил, но уберал только в чеклаге, а тут var Text1="cliloc# 0xAB68" Тут заместо клиллока надо вставить сообщение ващего сервера на что поменять?
discon
Posts: 34
Joined: 2006-08-09 20:33:57

Post by discon »

все кликлоки исправил! всеравно стоит и не телепортится
discon
Posts: 34
Joined: 2006-08-09 20:33:57

Post by discon »

Люди ну что делать?! помогите плиз!! я не поверю что все своими ручками, днем и ночью скупают реги и бланки!!! Выложите плиз кто-нить рабочий скрипт или прешлите на Discond@yandex.ru
discon
Posts: 34
Joined: 2006-08-09 20:33:57

Post by discon »

HELP!!! PLS!!! Хотяб скажите работает ли этот скрипт у кого-нить на ДРВ
Post Reply