я лювлю рыбу но не могу домой полететь

Anything and all.

Moderators: Murderator+, Murderator

papir7
Posts: 20
Joined: 2008-10-11 23:21:25

я лювлю рыбу но не могу домой полететь

Post by papir7 »

всем привет.помогите пожалуйста дорогие скриптеры.вот скрипт на рыбалку.как набераеш максимальный вес,реколишся домой по рунбуку.но мой герой не реколитца почемуто:( Пишетца - Cant see the target.(когда очередь рекола подходит) Рунбук я указал при начальной маркировке.Помогите пожалуйста.

Code: Select all

sub Starter()
   var i=0,j=0,k=0,r=0,q=0,ii,jj
   var TopX=324,TopY=65
   dim PointX[5000], PointY[5000],PointT[5000]
   
   var flag=0,PointCount=0,clicks=0,flag2=0
   #BETEP™#
   uo.Exec("filterspeech on")
   uo.Exec("filterspeech add 'Where do you want to use the pickaxe?'")
   
   if GetFromFile==1 then
      uo.Print('Загружаем координаты из файла...')
      f.open()
      PointCount=safe call f.ReadNumber()
      for i=1 to PointCount
         PointT[i]=safe call f.ReadNumber()
         PointX[i]=safe call f.ReadNumber()
         PointY[i]=safe call f.ReadNumber()
      next
      f.close()
   else
      
      uo.Print('Выбери Кирку: ')
      uo.Exec('addobject Pickaxe')
      while uo.Targeting()
         wait(100)
      wend
      uo.Print('Собираем координаты точек для ловли ...')
      repeat
         clicks=0
         flag=0
         uo.DeleteJournal()
         uo.UseObject('Pickaxe')
         waitForTarget()
         uo.DeleteJournal()
         WaitForTryRock()
         if uo.Lasttile(1)==uo.getX() and uo.Lasttile(2)==uo.gety() then
            flag=3
         end if
         PointCount=PointCount+1
         PointX[PointCount]=uo.LastTile(1)
         PointY[PointCount]=uo.LastTile(2)
         PointT[PointCount]=uo.LastTile(0)
         uo.Print('Найдена точка ловли '+str(PointCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))+' '+str(PointCount))
      until (Flag==3) or (PointCount==5000)
      uo.Exec("filterspeech off")
      uo.Print('Анализ закончен, координаты точек записаны в файл C:\Fish.dat')
      SaveToFile(PointCount,PointX,PointY,PointT)
   end if
   uo.Print('Точек найдено: '+str(PointCount))
   wait(2000)
   while 1==1
      if PointCount>0 then
         for i=1 to PointCount
            uo.Print('Идем к координате '+str(i)+': x='+str(PointX[i])+' y='+str(PointY[i]))
            flag=GotoXY(PointX[i],PointY[i])
            if flag==1 then
               if TryHiding==1 then
                  ToHide()
               end if
               Fishing()
            end if
         next
      end if
   wend
end sub

sub Options()########################################## Конфиг
   UO.Say("zdarova eto skript nastrojka!")
   wait(3000)
   UO.Say("sledujte instrukcii!")
   wait(3000)
   UO.Say("vi dolzni stojat licom k sunduku dla sbrosa!!")
   wait(4000)
   
   UO.Say("ukazite runbuk ")
   UO.AddObject('RuneB1')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.SaveConfig()
   
   UO.Say("ukazite sunduk pricelom")
   UO.AddObject('Sunduk')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.SaveConfig()
   UO.Say("ukazite sumku v sunduke")
   UO.AddObject('SundukBag')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.SaveConfig()
   
   UO.Say("otli4no")
   UO.UseObject('Sunduk')
   wait(3000)
   
   UO.Say("ukazite sumku dla rar ribi")
   UO.AddObject('StoreFish')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.SaveConfig()
   
   UO.Say("ukazite sumku dla prajz ribi")
   UO.AddObject('StorePRFish')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.SaveConfig()
   
   UO.Say("ukazite sumku dla kart")
   UO.AddObject('StoreMAP')
   While UO.Targeting()==2
      wait(500)
   Wend
   UO.SaveConfig()
   
   wait(2000)
   
   UO.Say("vse ok,perezapustite skript.")
end sub


Sub Fishing()
   var mX, mY, mZ, i, j
   var f
   var a=0
   #########################################################################
   ###################
   ### Массив рыбы ###
   ###################
   dim Fish[6]
   Fish[0]=0x09CC
   Fish[1]=0x09CD
   Fish[2]=0x09CE
   Fish[3]=0x09CF
   Fish[4]=0x14EB
   Fish[5]=0x0DD6
   Fish[6]=0x0DD6
   
   Beginning:
   uo.Set('finddistance','6')
   mX = uo.getX("self")
   mY = uo.getY("self")
   mZ = uo.getZ("self")
   uo.DeleteJournal()
   for i = mX-6 to mX+6
      for j = mY-6 to mY+6
         
         if uo.Dead() then
            return
         end if
         
         if TryToHide==1 then
            ToHide()
         end if
         
         uo.Print("Сейчас ловим: "+str(mx-i)+" "+str(my-j))
         
         while not uo.InJournal("You pull") and not uo.InJournal("in water") and not uo.InJournal("no fish") and not uo.InJournal("far away")
            uo.DeleteJournal()
            uo.Waittargettile("1341", str(i), str(j), str(mZ))
            uo.Usetype('0x0DBF')
            
            while not uo.InJournal("You pull") and not uo.InJournal("location") and not uo.InJournal("no fish") and not uo.InJournal("but fail") and not uo.InJournal("far away") and not uo.InJournal("in water")
               wait (100)
               if uo.InJournal("You pull") then
                  
                  if a>0 then
                     uo.print(STR(a))
                  end if
                  
                  if UO.InJournal("You pull out a fish!") then
                     if TakeFish==1 then
                        uo.Print('Собираем рыбу.')
                        for f=0 to 3
                           uo.FindType(Fish[f],"-1","ground")
                           if uo.Count(Fish[2])> 0 then
                              a= a+1
                           end if
                           uo.MoveItem("finditem","1","Fishs")
                           wait(200)
                        next
                     end if
                  endif
                  
                  if UO.InJournal("You pull out a Tattered treasure map!") then
                     if TakeMaps==1 then
                        uo.Print('Собираем карты.')
                        for f=4 to 4
                           uo.FindType(Fish[f],"-1","ground")
                           uo.MoveItem("finditem","-1","Maps")
                           wait(200)
                        next
                     end if
                  endif
                  
                  if UO.InJournal("Truly Rare Fish") then
                     if TakeRareFish==1 then
                        uo.Print('Собираем рар рыбу.')
                        for f=5 to 5
                           uo.FindType(Fish[f],"-1","ground")
                           uo.MoveItem("finditem","-1","RareFish")
                           wait(200)
                        next
                     end if
                  endif
                  
                  if UO.InJournal("Prize") then
                     if TakePrizeFish==1 then
                        uo.Print('Собираем приз рыбу.')
                        for f=6 to 6
                           uo.FindType(Fish[f],"-1","ground")
                           uo.MoveItem("finditem","-1","PrizeFish")
                           wait(200)
                        next
                     end if
                  endif
                  
                  if TryRecall==1 and uo.Weight>=uo.STR*4+20 then
                     ToRecall()
                  end if
                  
               end if
            wend
         wend
         uo.DeleteJournal()
      next
   next
end sub


Sub ToRecall()
   RecallToHome()
   Drop()
   if EatingFood==1 then
      EatingFood()
   end if
   wait(3000)
   RecallToPoint()
end sub

sub RecallToHome()
   uo.Print('Прыгаем Домой.')
   RunebookRecall(RuneToHome)
end sub

sub RecallToPoint()
   uo.Print('Прыгаем в Лес.')
   RunebookRecall(RuneToPoint)
end sub

sub ToHide()
   while not uo.Hidden()
      uo.Print('Пытаемся уйти в хайд...')
      uo.DeleteJournal()
      uo.UseSkill('Stealth')
      wait(4500)
   wend
   wait(100)
end sub

Sub WaitForRecall()
   var Text1=uo.GetName()+": The spell fizzles."
   var mess='',lastX=uo.getX(),lastY=uo.getY()
   for var i=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 WaitForTryRock()
   var Text1="That is too far away."
   var Text2="Try mining in rock."
   var Text3="There is no ore here to mine."
   var Text4="You have no line of sight to that location"
   var Text5="You can't see the target"
   for var i=0 to 50
      if uo.Journal(0)==Text1 or uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 or uo.Journal(0)==Text5 then
         return 1
      end if
      wait(200)
   next
   return 0
end sub

Sub WaitForTarget()
   for var i=0 to 50
      if uo.Targeting()==1 then
         return 1
      end if
      wait(200)
   next
   return 0
end sub

Sub WaitForChangeXY(myX,myY,lastX,lastY)
   for var i=1 to 50
      if lastX<>myX or lastY<>myY then
         return 1
      end if
      wait(200)
   next
   return 0
end sub

Sub GotoXY(x,y)
   var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
   for i=1 to 60
      myX=uo.getX();
      myY=uo.getY();
      if LastX==myX and LastY==myY then
         halt=halt+1
      else
         halt=0
      end if
      if halt>=10 then
         if uo.GetDir()==1 then
            for z=0 to 8
               uo.Press(40)
            next
         end if
         if uo.GetDir()==3 then
            for z=0 to 8
               uo.Press(37)
            next
         end if
         if uo.GetDir()==5 then
            for z=0 to 8
               uo.Press(38)
            next
         end if
         if uo.GetDir()==7 then
            for z=0 to 8
               uo.Press(39)
            next
         end if
         halt=15
      end if
      if Numb(x-myX)<=1 and Numb(y-myY)<=1 then
         return 1
      end if
      if x<=myX then
         if y<=myY then
            for z=0 to 3
               uo.Press(38)
            next
         else
            for z=0 to 3
               uo.Press(37)
            next
         end if
      else
         if y<=myY then
            for z=0 to 3
               uo.Press(39)
            next
         else
            for z=0 to 3
               uo.Press(40)
            next
         end if
      end if
      lastX=myX
      lastY=myY
      wait(200)
   next
   return 0
end sub

Sub Numb(num)
   if num>=0 then
      return num
   else
      return num*(-1)
   end if
end sub

Sub SaveToFile(PointCount,PointX,PointY,PointT)
   var f=file("C:\Fish.dat")
   var s=0,i=0
   f.open()
   f.create()
   s=safe call f.writeln(PointCount)
   for i=1 to PointCount
      s=safe call f.writeln(str(PointT[i])+' '+str(PointX[i])+' '+str(PointY[i]))
   next
   f.close()
end sub

sub Drop()
   if uo.Waiting() then
      uo.CancelTarget()
   end if
   var Exit
   var f
   ;var a=0
   dim Fish[7]
   Fish[0]=0x09CC
   Fish[1]=0x09CD
   Fish[2]=0x09CE
   Fish[3]=0x09CF
   Fish[4]=0x14EB
   Fish[5]=0x0DD6
   Fish[6]=0x0DD6
   
   UO.UseObject('Sunduk')
   wait(1000)
   UO.UseObject('SundukBag')
   wait(1000)
   UO.UseObject('StoreFish')
   wait(1300)
   UO.UseObject('StoreMAP')
   wait(1000)
   UO.UseObject('StorePRFish')
   
   
   wait(700)
   exit=0
   
   repeat
      for f=0 to 3
         uo.FindType(Fish[f],"-1","backpack")
         uo.SetReceivingContainer('StoreFish')
         if uo.GetQuantity('finditem')> 0 then
            repeat
               wait(130)
               
               uo.FindType(Fish[f],"-1","backpack")
               uo.Grab('0','finditem')
               wait(1300)
            until uo.FindCount()==0
         else
            exit=1
         next
         uo.UnSetReceivingContainer()
      end if
   until Exit==1
   
   exit=0
   repeat
      for f=4 to 4
         uo.FindType(Fish[f],"-1","backpack")
         uo.SetReceivingContainer('StoreMAP')
         if uo.GetQuantity('finditem')> 0 then
            repeat
               uo.FindType(Fish[f],"-1","backpack")
               uo.Grab('0','finditem')
               wait(1000)
            until uo.FindCount()==0
         else
            exit=1
         next
         uo.UnSetReceivingContainer()
      end if
   until Exit==1
   
   exit=0
   repeat
      for f=5 to 5
         uo.FindType(Fish[f],"0x01BB","backpack")
         uo.SetReceivingContainer('StorePRFish')
         if uo.GetQuantity('finditem')>0 then
            repeat
               uo.FindType(Fish[f],"0x01BB","backpack")
               uo.Grab('0','finditem')
               wait(1000)
            until uo.FindCount()==0
         else
            exit=1
         next
         uo.UnSetReceivingContainer()
      end if
   until Exit==1
   
   repeat
      for f=6 to 6
         uo.FindType(Fish[f],"backpack")
         uo.SetReceivingContainer('StoreFish') ;rar
         if uo.GetQuantity('finditem')>0 then
            repeat
               uo.FindType(Fish[f],"-1","backpack")
               uo.Grab('0','finditem')
               wait(1000)
            until uo.FindCount()==0
         else
            exit=1
         next
         uo.UnSetReceivingContainer()
      end if
   until Exit==1
   uo.Print("Улов выложен")
end sub


Sub RunebookRecall(n)
   oldX=uo.getX()
   oldY=uo.getY()
   repeat
      uo.Exec('warmode 0')
      uo.UseObject('Runebook')
      wait(1000)
      uo.LClick(135, n*15+55)
      wait(500)
      uo.LClick(135, n*15+55)
      time=uo.Timer()
      repeat
         wait(500)
      until oldX<>uo.getX() or oldY<>uo.getY() or uo.Life==0 or uo.InJournal('needs') or time+200<uo.Timer()
      uo.DeleteJournal()
   until oldX<>uo.getX() or oldY<>uo.getY()
end sub

Sub Open(Container)
   uo.DeleteJournal()
   uo.UseObject(Container)
   repeat
      wait(500)
   until uo.InJournal('Contains')
end sub


Sub EatingFood()
   ToEat()
   DropFood()
end sub

Sub ToEat()
   uo.SetReceivingContainer('backpack')
   Open('Sunduk')
   uo.FindType(TypeFood,'-1','Sunduk')
   uo.Grab('50','finditem')
   wait(500)
   repeat
      Checklag()
      uo.UseType(TypeFood)
      wait(1000)
   until uo.InJournal('You are simply too full to eat any more!')
   uo.UnsetReceivingContainer()
end sub

Sub DropFood()
   if uo.Waiting() then
      uo.CancelTarget()
   end if
   var f,Exit
   dim Food[1]
   Food[0]=TypeFood
   uo.SetReceivingContainer('Sunduk')
   wait(500)
   for f=0 to 0
      Exit=0
      repeat
         uo.FindType(Food[f])
         if uo.GetQuantity('finditem')>0 then
            uo.Grab('0','finditem')
            wait(1500)
         else
            Exit=1
         end if
      until Exit==1
   next
   uo.UnSetReceivingContainer('Sunduk')
end sub

Sub RecallAtAttack()
   var mX,mY
   reccal:
   uo.DeleteJournal()
   if uo.Waiting() then
      uo.CancelTarget()
   end if
   mX=uo.getX("self")
   mY=uo.getY("self")
   uo.DeleteJournal()
   uo.FindType('0x1F14',-1,'mY')
   uo.Cast('Recall','finditem')
   uo.Print('Атака! Реколимся!')
   wait(4000)
   if not uo.getX("self")<>mX and not uo.getY("self")<>mY then
      goto reccal
   end if
   RecallToHome()
   Drop()
   Terminate()
end sub

sub Reconnect()
   var ReconnectTime,rFlag
   ReconnectTime='0'
   rFlag=1
   repeat
      while (uo.ObjAtLayer('Bpack')=='')
         if rFlag then
            ReconnectTime=MakeTime()
            rFlag=0
         end if
         wait(20000)
         uo.Say('')
         wait(3000)
         uo.Say('')
         wait(3000)
         uo.Say('')
         wait(3000)
         uo.LDblClick(357,164)
         uo.LClick(616,459)
         wait(3000)
      wend
      wait(3000)
      if (rFlag==0) and (ReconnectTime<>'0') then
         uo.TextOpen()
         uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
         rFlag=1
         ReconnectTime='0'
      end if
   until false
end sub

Sub MakeTime()
   var d,t,ret,i
   ret=str(uo.Time())
   t=""
   for i=0 to Len(ret)
      t=ret[Len(ret)-i]+t
      if (i==2) or (i==4) then
         t=":"+t
      end if
   next
   ret=str(uo.Date())
   d=""
   for i=0 to Len(ret)
      d=ret[Len(ret)-i] + d
      if (i==2) or (i==4) then
         d="."+d
      end if
   next
   ret=t+" @ "+d
   return ret
end sub

sub Terminate()
   uo.Print('Все функции скрипта выключены!')
   uo.DeleteJournal()
   uo.Exec('terminate all')
   wait(100)
   uo.Exec('terminate all')
   wait(100)
   uo.Exec('terminate all')
   wait(100)
end sub

Sub CheckLag()
   if uo.Waiting()>0 then
      uo.Exec('canceltarget')
   end if
   uo.DeleteJournal()
   uo.Click('backpack')
   repeat
      wait(50)
   until uo.InJournal('backpack')
end sub
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Ты в скрипте настройка добавляешь обьект - RuneB1

Code: Select all

UO.Say("ukazite runbuk ") 
      UO.AddObject('RuneB1')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
, а уже когда реколлишься, используешь обьект - Runebook

Code: Select all

Sub RunebookRecall(n) 
oldX=uo.getX()
oldY=uo.getY()
repeat
uo.Exec('warmode 0')
uo.UseObject('Runebook')


Обзови из одинаково, помоему в этом трабл.
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

спасибо.объясни пожалуйста,как это - обозвать их одинаково? функцию саму? Я не очень понимаю!
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Не так выразился. Рунбуку ты обозвал - RuneB1, соответственно и использовать тебе надо её же, так что во втором куске исправь, вместо uo.UseObject('Runebook') пропиши uo.UseObject('RuneB1')
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

спасибо тебе большое! полёт по рунбуке заработал 8) Но вот есть насущная проблема.Герой прилетит к дому,выгрузитcа,и летит опять рыбачить.Но к сожалению при прилёте к месту рыбалке,герой просто стоит на месте и не рыбачит(притом никаких ошибок не вылетает).И ещё,он не всю рыбу выгружает :oops: Вот список рыбы в списке .присутсвует вся рыба но к сожалению он не всю выгружает :cry:

Code: Select all

sub Drop()
if uo.Waiting() then
uo.CancelTarget()
end if
var Exit
var f
;var a=0
dim Fish[7]
Fish[0]=0x09CC
Fish[1]=0x09CD
Fish[2]=0x09CE
Fish[3]=0x09CF
Fish[4]=0x14EB
Fish[5]=0x0DD6
Fish[6]=0x0DD6

Можеш пожалуйста сказать хоть почему он не рыбачит?
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Code: Select all

Sub Fishing() 
   var mX, mY, mZ, i, j
   var f
   var a=0
   #########################################################################
   ###################
   ### Массив рыбы ###
   ###################
   dim Fish[6]
тут тоже вбей dim Fish[7] вместо dim Fish[6]
это так, неточность, а поповоду невыгружает и не рыбачит, пока смотрю, скрипт замудрёный какой-то.
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

ты золото спасибо! да я вбил парочку видов рыб,на всякий случай.если найдёш время до глянь пожалуйста,чего там такое.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Code: Select all

sub Drop() 
   if uo.Waiting() then
      uo.CancelTarget()
   end if
   var f
   dim Fish[7]
   Fish[0]=0x09CC
   Fish[1]=0x09CD
   Fish[2]=0x09CE
   Fish[3]=0x09CF
   Fish[4]=0x14EB
   Fish[5]=0x0DD6
   Fish[6]=0x0DD6
   
   UO.UseObject('Sunduk')
   wait(1000)
   UO.UseObject('SundukBag')
   wait(1000)
   UO.UseObject('StoreFish')
   wait(1300)
   UO.UseObject('StoreMAP')
   wait(1000)
   UO.UseObject('StorePRFish')
   
   
   wait(700)
   
     
      for f=0 to 3
         if uo.count(Fish[f]) then
             uo.SetReceivingContainer('StoreFish')
                while uo.count(Fish[f])
                    uo.FindType(Fish[f],"-1","backpack")
                    uo.Grab('0','finditem')
                    checklag()
                    wait(1000)
                 wend
             uo.UnSetReceivingContainer()
          end if
       next
   
      if uo.count(Fish[4]) then
         uo.SetReceivingContainer('StoreMAP')
            while uo.count(Fish[4])
               uo.FindType(Fish[4],"-1","backpack")
               uo.Grab('0','finditem')
               checklag()
               wait(1000)
             wend
          uo.UnSetReceivingContainer()
       end if
   
      if uo.count(Fish[5]) then
         uo.SetReceivingContainer('StorePRFish')
            while uo.count(Fish[5])
               uo.FindType(Fish[5],"-1","backpack")
               uo.Grab('0','finditem')
               checklag()
               wait(1000)
             wend
          uo.UnSetReceivingContainer()
       end if
 

      if uo.count(Fish[6]) then
         uo.SetReceivingContainer('StoreFish')
            while uo.count(Fish[6])
               uo.FindType(Fish[6],"-1","backpack")
               uo.Grab('0','finditem')
               checklag()
               wait(1000)
             wend
          uo.UnSetReceivingContainer()
       end if
 
   uo.Print("Улов выложен")
end sub
переделал выгружалку, должна выгружать все типы, указанные в массиве из пака по сундукам, не уверен, что распихивать по сундукам будет, как задумано, т.к. не разбираюсь в типах рыбы. Хошь чтоб точно раскладывал, распиши подробно какой тип - какая рыба, типа призовая, обычная или рарная или ваще это карта. А если призовая рыба того же типа что и обычная или рарная, но другого цвета, то ваще надо всё по другому делать.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Ты ваще разобрался как этот скрипт работает? Запускаешь Starter, скрипт проверяет значение странной переменной GetFromFile, эта переменная нигде не обьявляется и значение ей нигде не присваивается, но тем не менее, скрипт проверяет, если она равна 1, то скрипт загружает из файла в массивы координаты точек лова, иначе скрипт предлагает тебе взять в зубы кирку и пройтись потыкать киркой, показать эти точки лова рыбы, и ходить и тыкать ты будешь, пока ненатыкаешь 5000 точек или ни ткнёшь в себя. После этого скрипт запишет координаты этих точек в файл, и вот тут, я думаю, он и должен присвоить значение 1 переменной GetFromFile. Но, неважно, не присваивает и ладно, я думаю, чтоб скрипт сработал и не глюкнул, лучше вернуться к первой точке, и только потом ткнуть киркой под себя. Потом скрипт проверяет, если он насохранял точек больше нуля, чар, по идее, по очереди по ним бегает и рыбачит, реколится, выкладывает, прилетает, опять рыбачит и ваще всё зашибись :lol:
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

))))) GetfromFile - это файл с кординатами (сохранённый на компе) по которым он рыбачить,чтобы каждый раз не маркать место ловли рыбы.Скрипт работает так - грузиш функцию Starter,и он ловит рыбу.Как наберёт много веса - летит домой и складывает улов в сундук.Но есть кое-что.Перед началом ловли надо загрузить функцию - Options,чтобы прицелом указать сундук и мешки в нём(в которые рыбу складывать).Моя проблема в том,что когда он всё выгрузит и прилетает на место рыбалки он ничего не делает :( А просто стоит.Чего скажеш?
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

Слушай я помойму бред написал)) Так значит Getfromfile нули устанавливаетца как он прилетит домой или как? поясни пожалуйста! и как сделать так чтобы всё норм было.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Файл где координаты точек - C:\Fish.dat, открой его блокнотом и вытри с него все координаты, закрой его пустым. Ниже строки sub Starter() сделай пустую строку и набери там:
var GetFromFile=0
Сохрани скрипт. Теперь, когда ты запустишь Starter, он те напишет
Выбери кирку. Надо, чтоб у тя в паке была кирка. Ты, значит выбираешь кирку и ходишь по берегу тыкаешь прицелом в места, с которых будешь рыбачить, когда надоест, подойди к месту, где у тя была первая точка и ткни киркой точно под себя, тогда скрипт сохранит все точки в файл и начнёт рыбачить с них поочереди. Теперь у тебя будет файл с координатами и чтоб опять не бегать с киркой перед следующим запуском скрипта измени var GetFromFile=0 на var GetFromFile=1. И ещё совет, чтоб чар не заблудился, если ты рыбачишь вдоль берега, то протыкай точки какойто кусок вдоль берега, потом протыкай точки обратно к началу, и потом киркой точно под себя. А то может так получиться, что чар у тебя убежит хер знает куда от первой точки и потом несможет к ней вернуться.
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

Millerbeer спассиб! Щас хоть герой рыбу выгружает абсолютно всю 8) Но вот тока,когда он летить обратно к месту рыбалки он так и так не рыбачит,чтож творитцо то(( ,а просто на месте стоит.Getfromfile=1 не помогает.Я нашол начало скрипта,там вроде Getfromfile=1 есть вот глянь:

Code: Select all

var RuneToHome=1 ## 1 -  Номер руны Домой,по счёту в рунбуке.(сейчас в 1ом слоте,можно менять от 1-9)
###
var RuneToPoint=2 ## 2- Номер руны в Лес,по счёту в рунбуке.(сейчас в 9ом слоте,можно менять от 1-9)
###
var GetFromFile=0 ## 1 - Координаты будут считыватся из файла, 0 - собиратся из клиента
### (сначала соберите а потом считывайте из файла).

может ещё в чом то ошибка? Ну остальные настройки не столь важны.Кушать,рекол от пк и тагдалее.Я их не включал.
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

А до реколла он по точкам ходит или нет? Попробуй в ходилке в своей, в функции Sub GotoXY(x,y) после каждого нажатия на кнопку, т.е. команды uo.Press воткнуть checklag() и wait(300). Короче, чтоб каждое нажатие на кнопку выглядело так:

Code: Select all

uo.Press(кнопка) 
checklag()
wait(300)
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

аха он ходит до рекола по точкам,но потом,када выгрузитца нe рыбачит, а просто на месте стоит.Может проблема в функциях :

[/code]Starter
Options
RecallToHome
RecallToPoint
ToHide
Drop
Reconnect
Terminate

Code: Select all


Может,после рекола обратно к месту ловли Starter не работает?
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Фууу, блиин, дошло наконец-то... :lol: Автор скрипта проверку веса и реколл засунул внутрь цикла, который ждёт сообщение в журнале. Естественно, что после 2 реколлов и выгрузки рыбы в журнале нихрена этого сообщения не остаётся, поэтому когда чар прилетает из дома цикл дальше ждёт появления Ю пул или локейшн или фиш или остальной дребедени... Короче, сделай вот что... В функции Sub Fishing() вот этот кусок

Code: Select all

                  if TryRecall==1 and uo.Weight>=uo.STR*4+20 then 
                     ToRecall()
                  end if

оттуда убери нахрен, а засунь его как сейчас покажу

Code: Select all

Sub Fishing() 
   var mX, mY, mZ, i, j
   var f
   var a=0
   #########################################################################
   ###################
   ### Массив рыбы ###
   ###################
   dim Fish[6]
   Fish[0]=0x09CC
   Fish[1]=0x09CD
   Fish[2]=0x09CE
   Fish[3]=0x09CF
   Fish[4]=0x14EB
   Fish[5]=0x0DD6
   Fish[6]=0x0DD6
   
   Beginning:
   uo.Set('finddistance','6')
   mX = uo.getX("self")
   mY = uo.getY("self")
   mZ = uo.getZ("self")
   uo.DeleteJournal()
   for i = mX-6 to mX+6
      for j = mY-6 to mY+6
         
         if uo.Dead() then
            return
         end if
         
         if TryToHide==1 then
            ToHide()
         end if
         
         uo.Print("Сейчас ловим: "+str(mx-i)+" "+str(my-j))
         
         while not uo.InJournal("You pull") and not uo.InJournal("in water") and not uo.InJournal("no fish") and not uo.InJournal("far away")
            uo.DeleteJournal()
            uo.Waittargettile("1341", str(i), str(j), str(mZ))
            uo.Usetype('0x0DBF')
             
            while not uo.InJournal("You pull") and not uo.InJournal("location") and not uo.InJournal("no fish") and not uo.InJournal("but fail") and not uo.InJournal("far away") and not uo.InJournal("in water")
               wait (100)
               if uo.InJournal("You pull") then
                   
                  if a>0 then
                     uo.print(STR(a))
                  end if
                   
                  if UO.InJournal("You pull out a fish!") then
                     if TakeFish==1 then
                        uo.Print('Собираем рыбу.')
                        for f=0 to 3
                           uo.FindType(Fish[f],"-1","ground")
                           if uo.Count(Fish[2])> 0 then
                              a= a+1
                           end if
                           uo.MoveItem("finditem","1","Fishs")
                           wait(200)
                        next
                     end if
                  endif
                   
                  if UO.InJournal("You pull out a Tattered treasure map!") then
                     if TakeMaps==1 then
                        uo.Print('Собираем карты.')
                        for f=4 to 4
                           uo.FindType(Fish[f],"-1","ground")
                           uo.MoveItem("finditem","-1","Maps")
                           wait(200)
                        next
                     end if
                  endif
                   
                  if UO.InJournal("Truly Rare Fish") then
                     if TakeRareFish==1 then
                        uo.Print('Собираем рар рыбу.')
                        for f=5 to 5
                           uo.FindType(Fish[f],"-1","ground")
                           uo.MoveItem("finditem","-1","RareFish")
                           wait(200)
                        next
                     end if
                  endif
                   
                  if UO.InJournal("Prize") then
                     if TakePrizeFish==1 then
                        uo.Print('Собираем приз рыбу.')
                        for f=6 to 6
                           uo.FindType(Fish[f],"-1","ground")
                           uo.MoveItem("finditem","-1","PrizeFish")
                           wait(200)
                        next
                     end if
                  endif   
               end if
            wend
         wend
         uo.DeleteJournal()
                  if TryRecall==1 and uo.Weight>=uo.STR*4+20 then
                     ToRecall()
                  end if
      next
   next
end sub


короче, можешь прям отсюда функцию всю скопировать и у себя заменить..., ваще скрипт масштабный, но исполнение корявенькое :D
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

А ваще погоди...Домой он реколлится из разных мест, а обратно возвращается на одно и тоже, так что после реколла на рыбалку ему ещё нужно добежать на ту точку где он рыбачил...Короче, надо пол скрипта тут переделывать...Сча пойду посплю, а завтра вечером посмотрю, что можно сделать...
Хотя, вполне возможно, что по прилёту обратно, он на той точке куда прилетит всё протыкает-проловит и побежит на следующую из списка точку, так что попробуй тот вариант, что я тебе в предыдущем посте нарисовал..
Вобщем отпишись что получилось, а то я всё в теории и никогда на практике.... :lol:
Millerbeer
Posts: 247
Joined: 2008-09-12 05:07:34

Post by Millerbeer »

Нет, наверное всё-таки правильнее будет сделать вот как:
В скрипте Фишинг, если вес превысит максимальное значение, делаем просто Return. А уже в скрипт Стартер воткнём реколлы с выгрузками. Тогда по прилёту из дома он поскачет с удочкой наперевес на следующую точку из массива. Да и с точки зрения структурного программирования это правильней. В общем модифицированные Starter и Fishing копируй и вместо своих втыкай

Code: Select all

sub Starter() 
   var i=0,j=0,k=0,r=0,q=0,ii,jj
   var TopX=324,TopY=65
   dim PointX[5000], PointY[5000],PointT[5000]
   
   var flag=0,PointCount=0,clicks=0,flag2=0
   #BETEP™#
   uo.Exec("filterspeech on")
   uo.Exec("filterspeech add 'Where do you want to use the pickaxe?'")
   
   if GetFromFile==1 then
      uo.Print('Загружаем координаты из файла...')
      f.open()
      PointCount=safe call f.ReadNumber()
      for i=1 to PointCount
         PointT[i]=safe call f.ReadNumber()
         PointX[i]=safe call f.ReadNumber()
         PointY[i]=safe call f.ReadNumber()
      next
      f.close()
   else
       
      uo.Print('Выбери Кирку: ')
      uo.Exec('addobject Pickaxe')
      while uo.Targeting()
         wait(100)
      wend
      uo.Print('Собираем координаты точек для ловли ...')
      repeat
         clicks=0
         flag=0
         uo.DeleteJournal()
         uo.UseObject('Pickaxe')
         waitForTarget()
         uo.DeleteJournal()
         WaitForTryRock()
         if uo.Lasttile(1)==uo.getX() and uo.Lasttile(2)==uo.gety() then
            flag=3
         end if
         PointCount=PointCount+1
         PointX[PointCount]=uo.LastTile(1)
         PointY[PointCount]=uo.LastTile(2)
         PointT[PointCount]=uo.LastTile(0)
         uo.Print('Найдена точка ловли '+str(PointCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))+' '+str(PointCount))
      until (Flag==3) or (PointCount==5000)
      uo.Exec("filterspeech off")
      uo.Print('Анализ закончен, координаты точек записаны в файл C:\Fish.dat')
      SaveToFile(PointCount,PointX,PointY,PointT)
   end if
   uo.Print('Точек найдено: '+str(PointCount))
   wait(2000)
   while 1==1
      if PointCount>0 then
         for i=1 to PointCount
            uo.Print('Идем к координате '+str(i)+': x='+str(PointX[i])+' y='+str(PointY[i]))
            flag=GotoXY(PointX[i],PointY[i])
            if flag==1 then
               if TryHiding==1 then
                  ToHide()
               end if
               Fishing()
                  if TryRecall==1 and uo.Weight>=uo.STR*4  then
                     ToRecall()
                  end if
            end if
         next
      end if
   wend
end sub



Sub Fishing()
   var mX, mY, mZ, i, j
   var f
   #########################################################################
   ###################
   ### Массив рыбы ###
   ###################
   dim Fish[7]
   Fish[0]=0x09CC
   Fish[1]=0x09CD
   Fish[2]=0x09CE
   Fish[3]=0x09CF
   Fish[4]=0x14EB
   Fish[5]=0x0DD6
   Fish[6]=0x0DD6
   
   Beginning:
   uo.Set('finddistance','6')
   mX = uo.getX("self")
   mY = uo.getY("self")
   mZ = uo.getZ("self")
   uo.DeleteJournal()
   for i = mX-6 to mX+6
      for j = mY-6 to mY+6
         
         if uo.Dead() then
            return
         end if
         
         if TryToHide==1 then
            ToHide()
         end if
         
         uo.Print("Сейчас ловим: "+str(mx-i)+" "+str(my-j))
         
         repeat
            uo.DeleteJournal()
            uo.Waittargettile("1341", str(i), str(j), str(mZ))
            uo.Usetype('0x0DBF')
             
                repeat
                     wait (300)
                untiluo.InJournal("You pull|location|no fish|but fail|far away|in water") 
                if (UO.InJournal("You pull out a fish!")) and (TakeFish==1) then
                        uo.Print('Собираем рыбу.')
                        for f=0 to 3
                           uo.FindType(Fish[f],"-1","ground")
                                 if uo.FindCount() then
                                       uo.MoveItem("finditem","0","Fishs")
                                       wait(200)
                                 endif
                         next
                         uo.Print(str(uo.Count(Fish[2])))
                  endif
                   if (UO.InJournal("You pull out a Tattered treasure map!")) and (TakeMaps==1) then
                        uo.Print('Собираем карты.')
                        uo.FindType(Fish[4],"-1","ground")
                               if uo.FindCount() then
                                     uo.MoveItem("finditem","0","Maps")
                                     wait(200)
                               endif
                   endif
                   if (UO.InJournal("Truly Rare Fish")) and (TakeRareFish==1) then
                        uo.Print('Собираем рар рыбу.')
                           uo.FindType(Fish[5],"-1","ground")
                                  if uo.FindCount() then
                                        uo.MoveItem("finditem","0","RareFish")
                                        wait(200)
                                    endif
                     end if 
                     if (UO.InJournal("Prize")) and( TakePrizeFish==1) then
                        uo.Print('Собираем приз рыбу.')
                        uo.FindType(Fish[6],"-1","ground")
                                    if uo.FindCount() then
                                          uo.MoveItem("finditem","0","PrizeFish")
                                          wait(200)
                                     end if
                      endif                     
                      if  uo.Weight>=uo.STR*4 then
                            Return
                      end if 
         until  uo.InJournal("in water|no fish|far away|location")
      next
   next

end sub



Типа, почти последний релиз :lol: , ваще тут при желании до фига чего можно переделать, так сказать, очеловечить и окультурить :lol:
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

спасиб! вот я вставил тобой исправленный кусок sub(Starter) он работает
а второй кусок sub(Fishing) выдаёт ошибку при старте скрипта
line 357 parse error.
------

Code: Select all

Sub Fishing()
   var mX, mY, mZ, i, j
   var f
   #########################################################################
   ###################
   ### Массив рыбы ###
   ###################
   dim Fish[7]
   Fish[0]=0x09CC
   Fish[1]=0x09CD
   Fish[2]=0x09CE
   Fish[3]=0x09CF
   Fish[4]=0x14EB
   Fish[5]=0x0DD6
   Fish[6]=0x0DD6
   
   Beginning:
   uo.Set('finddistance','6')
   mX = uo.getX("self")
   mY = uo.getY("self")
   mZ = uo.getZ("self")
   uo.DeleteJournal()
   for i = mX-6 to mX+6
      for j = mY-6 to mY+6
         
         if uo.Dead() then
            return
         end if
         
         if TryToHide==1 then
            ToHide()
         end if
         
         uo.Print("Сейчас ловим: "+str(mx-i)+" "+str(my-j))
         
         repeat
            uo.DeleteJournal()
            uo.Waittargettile("1341", str(i), str(j), str(mZ))
            uo.Usetype('0x0DBF')
             
                repeat
                     wait (300)
                untiluo.InJournal("You pull|location|no fish|but fail|far away|in water")
                if (UO.InJournal("You pull out a fish!")) and (TakeFish==1) then
                        uo.Print('Собираем рыбу.')
                        for f=0 to 3
                           uo.FindType(Fish[f],"-1","ground")
                                 if uo.FindCount() then
                                       uo.MoveItem("finditem","0","Fishs")
                                       wait(200)
                                 endif
                         next
                         uo.Print(str(uo.Count(Fish[2])))
                  endif
                   if (UO.InJournal("You pull out a Tattered treasure map!")) and (TakeMaps==1) then
                        uo.Print('Собираем карты.')
                        uo.FindType(Fish[4],"-1","ground")
                               if uo.FindCount() then
                                     uo.MoveItem("finditem","0","Maps")
                                     wait(200)
                               endif
                   endif
                   if (UO.InJournal("Truly Rare Fish")) and (TakeRareFish==1) then
                        uo.Print('Собираем рар рыбу.')
                           uo.FindType(Fish[5],"-1","ground")
                                  if uo.FindCount() then
                                        uo.MoveItem("finditem","0","RareFish")
                                        wait(200)
                                    endif
                     end if
                     if (UO.InJournal("Prize")) and( TakePrizeFish==1) then
                        uo.Print('Собираем приз рыбу.')
                        uo.FindType(Fish[6],"-1","ground")
                                    if uo.FindCount() then
                                          uo.MoveItem("finditem","0","PrizeFish")
                                          wait(200)
                                     end if
                      endif                     
                      if  uo.Weight>=uo.STR*4 then
                            Return
                      end if
         until  uo.InJournal("in water|no fish|far away|location")
      next
   next

end sub                                     

чтож дедать?
papir7
Posts: 20
Joined: 2008-10-11 23:21:25

Post by papir7 »

вот полный скрипт с апдейтами.Выдаёт line 357 - parse error.

Code: Select all

sub Starter()
   var i=0,j=0,k=0,r=0,q=0,ii,jj
   var TopX=324,TopY=65
   dim PointX[5000], PointY[5000],PointT[5000]
   
   var flag=0,PointCount=0,clicks=0,flag2=0
   #BETEP™#
   uo.Exec("filterspeech on")
   uo.Exec("filterspeech add 'Where do you want to use the pickaxe?'")
   
   if GetFromFile==1 then
      uo.Print('Загружаем координаты из файла...')
      f.open()
      PointCount=safe call f.ReadNumber()
      for i=1 to PointCount
         PointT[i]=safe call f.ReadNumber()
         PointX[i]=safe call f.ReadNumber()
         PointY[i]=safe call f.ReadNumber()
      next
      f.close()
   else
       
      uo.Print('Выбери Кирку: ')
      uo.Exec('addobject Pickaxe')
      while uo.Targeting()
         wait(100)
      wend
      uo.Print('Собираем координаты точек для ловли ...')
      repeat
         clicks=0
         flag=0
         uo.DeleteJournal()
         uo.UseObject('Pickaxe')
         waitForTarget()
         uo.DeleteJournal()
         WaitForTryRock()
         if uo.Lasttile(1)==uo.getX() and uo.Lasttile(2)==uo.gety() then
            flag=3
         end if
         PointCount=PointCount+1
         PointX[PointCount]=uo.LastTile(1)
         PointY[PointCount]=uo.LastTile(2)
         PointT[PointCount]=uo.LastTile(0)
         uo.Print('Найдена точка ловли '+str(PointCount)+' : x='+str(uo.Lasttile(1))+' y='+str(uo.LastTile(2))+' '+str(PointCount))
      until (Flag==3) or (PointCount==5000)
      uo.Exec("filterspeech off")
      uo.Print('Анализ закончен, координаты точек записаны в файл C:\Fish.dat')
      SaveToFile(PointCount,PointX,PointY,PointT)
   end if
   uo.Print('Точек найдено: '+str(PointCount))
   wait(2000)
   while 1==1
      if PointCount>0 then
         for i=1 to PointCount
            uo.Print('Идем к координате '+str(i)+': x='+str(PointX[i])+' y='+str(PointY[i]))
            flag=GotoXY(PointX[i],PointY[i])
            if flag==1 then
               if TryHiding==1 then
                  ToHide()
               end if
               Fishing()
                  if TryRecall==1 and uo.Weight>=uo.STR*4  then
                     ToRecall()
                  end if
            end if
         next
      end if
   wend
end sub


sub Options()########################################## Конфиг
UO.Say("zdarova! tebja privetstvujet skript nastrojka!")
wait(3000)
UO.Say("sledujte instrukcijam!")
wait(3000)
UO.Say("vi dolzni stojat licom k sunduku mesta sbrosa!")
wait(4000)

UO.Say("ukazite runbuk ")
      UO.AddObject('RuneB1')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()

UO.Say("ukazite sunduk pricelom")
      UO.AddObject('Sunduk')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()
  UO.Say("ukazite sumku v sunduke")
      UO.AddObject('SundukBag')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()

UO.Say("Отлично")
UO.UseObject('Sunduk')
wait(3000)

UO.Say("ukazite sumku dla rar ribi")
      UO.AddObject('StoreFish')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()

UO.Say("ukazite sumku dla prize ribi")
      UO.AddObject('StorePRFish')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()

UO.Say("ukazite sumku dla kart")
      UO.AddObject('StoreMAP')
      While UO.Targeting()==2
         wait(500)
      Wend
      UO.SaveConfig()

wait(2000)

UO.Say("nastrojka zakon4enna. Dlja izmenenija parametrov,perezapustite skript povtorno.")
end sub


Sub Fishing()
   var mX, mY, mZ, i, j
   var f
   #########################################################################
   ###################
   ### Массив рыбы ###
   ###################
   dim Fish[7]
   Fish[0]=0x09CC
   Fish[1]=0x09CD
   Fish[2]=0x09CE
   Fish[3]=0x09CF
   Fish[4]=0x14EB
   Fish[5]=0x0DD6
   Fish[6]=0x0DD6
   
   Beginning:
   uo.Set('finddistance','6')
   mX = uo.getX("self")
   mY = uo.getY("self")
   mZ = uo.getZ("self")
   uo.DeleteJournal()
   for i = mX-6 to mX+6
      for j = mY-6 to mY+6
         
         if uo.Dead() then
            return
         end if
         
         if TryToHide==1 then
            ToHide()
         end if
         
         uo.Print("Сейчас ловим: "+str(mx-i)+" "+str(my-j))
         
         repeat
            uo.DeleteJournal()
            uo.Waittargettile("1341", str(i), str(j), str(mZ))
            uo.Usetype('0x0DBF')
             
                repeat
                     wait (300)
                untiluo.InJournal("You pull|location|no fish|but fail|far away|in water")
                if (UO.InJournal("You pull out a fish!")) and (TakeFish==1) then
                        uo.Print('Собираем рыбу.')
                        for f=0 to 3
                           uo.FindType(Fish[f],"-1","ground")
                                 if uo.FindCount() then
                                       uo.MoveItem("finditem","0","Fishs")
                                       wait(200)
                                 endif
                         next
                         uo.Print(str(uo.Count(Fish[2])))
                  endif
                   if (UO.InJournal("You pull out a Tattered treasure map!")) and (TakeMaps==1) then
                        uo.Print('Собираем карты.')
                        uo.FindType(Fish[4],"-1","ground")
                               if uo.FindCount() then
                                     uo.MoveItem("finditem","0","Maps")
                                     wait(200)
                               endif
                   endif
                   if (UO.InJournal("Truly Rare Fish")) and (TakeRareFish==1) then
                        uo.Print('Собираем рар рыбу.')
                           uo.FindType(Fish[5],"-1","ground")
                                  if uo.FindCount() then
                                        uo.MoveItem("finditem","0","RareFish")
                                        wait(200)
                                    endif
                     end if
                     if (UO.InJournal("Prize")) and( TakePrizeFish==1) then
                        uo.Print('Собираем приз рыбу.')
                        uo.FindType(Fish[6],"-1","ground")
                                    if uo.FindCount() then
                                          uo.MoveItem("finditem","0","PrizeFish")
                                          wait(200)
                                     end if
                      endif                     
                      if  uo.Weight>=uo.STR*4 then
                            Return
                      end if
         until  uo.InJournal("in water|no fish|far away|location")
      next
   next

end sub                                     


Sub ToRecall()
RecallToHome()
Drop()
if EatingFood==1 then
EatingFood()
end if
wait(3000)
RecallToPoint()
end sub

sub RecallToHome()
uo.Print('Прыгаем Домой.')
RunebookRecall(RuneToHome)
end sub

sub RecallToPoint()
uo.Print('Прыгаем в Лес.')
RunebookRecall(RuneToPoint)
end sub

sub ToHide()
while not uo.Hidden()
uo.Print('Пытаемся уйти в хайд...')
uo.DeleteJournal()
uo.UseSkill('Stealth')
wait(4500)
wend
wait(100)
end sub

Sub WaitForRecall()
var Text1=uo.GetName()+": The spell fizzles."
var mess='',lastX=uo.getX(),lastY=uo.getY()
for var i=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 WaitForTryRock()
var Text1="That is too far away."
var Text2="Try mining in rock."
var Text3="There is no ore here to mine."
var Text4="You have no line of sight to that location"
var Text5="You can't see the target"
for var i=0 to 50
if uo.Journal(0)==Text1 or uo.Journal(0)==Text2 or uo.Journal(0)==Text3 or uo.Journal(0)==Text4 or uo.Journal(0)==Text5 then
return 1
end if
wait(200)
next
return 0
end sub

Sub WaitForTarget()
for var i=0 to 50
if uo.Targeting()==1 then
return 1
end if
wait(200)
next
return 0
end sub

Sub WaitForChangeXY(myX,myY,lastX,lastY)
for var i=1 to 50
if lastX<>myX or lastY<>myY then
return 1
end if
wait(200)
next
return 0
end sub

Sub GotoXY(x,y)
var myX,myY,lastX=0,lastY=0,i,halt=0,z,r=0
for i=1 to 60
myX=uo.getX();
myY=uo.getY();
if LastX==myX and LastY==myY then
halt=halt+1
else
halt=0
end if
if halt>=10 then
if uo.GetDir()==1 then
for z=0 to 8
uo.Press(40)
next
end if
if uo.GetDir()==3 then
for z=0 to 8
uo.Press(37)
next
end if
if uo.GetDir()==5 then
for z=0 to 8
uo.Press(38)
next
end if
if uo.GetDir()==7 then
for z=0 to 8
uo.Press(39)
next
end if
halt=15
end if
if Numb(x-myX)<=1 and Numb(y-myY)<=1 then
return 1
end if
if x<=myX then
if y<=myY then
for z=0 to 3
uo.Press(38)
next
else
for z=0 to 3
uo.Press(37)
next
end if
else
if y<=myY then
for z=0 to 3
uo.Press(39)
next
else
for z=0 to 3
uo.Press(40)
next
end if
end if
lastX=myX
lastY=myY
wait(200)
next
return 0
end sub

Sub Numb(num)
if num>=0 then
return num
else
return num*(-1)
end if
end sub

Sub SaveToFile(PointCount,PointX,PointY,PointT)
var f=file("C:\Fish.dat")
var s=0,i=0
f.open()
f.create()
s=safe call f.writeln(PointCount)
for i=1 to PointCount
s=safe call f.writeln(str(PointT[i])+' '+str(PointX[i])+' '+str(PointY[i]))
next
f.close()
end sub

sub Drop()
   if uo.Waiting() then
      uo.CancelTarget()
   end if
   var f
   dim Fish[7]
   Fish[0]=0x09CC
   Fish[1]=0x09CD
   Fish[2]=0x09CE
   Fish[3]=0x09CF
   Fish[4]=0x14EB
   Fish[5]=0x0DD6
   Fish[6]=0x0DD6
   
   UO.UseObject('Sunduk')
   wait(1000)
   UO.UseObject('SundukBag')
   wait(1000)
   UO.UseObject('StoreFish')
   wait(1300)
   UO.UseObject('StoreMAP')
   wait(1000)
   UO.UseObject('StorePRFish')
   
   
   wait(700)
   
     
      for f=0 to 3
         if uo.count(Fish[f]) then
             uo.SetReceivingContainer('StoreFish')
                while uo.count(Fish[f])
                    uo.FindType(Fish[f],"-1","backpack")
                    uo.Grab('0','finditem')
                    checklag()
                    wait(1000)
                 wend
             uo.UnSetReceivingContainer()
          end if
       next
   
      if uo.count(Fish[4]) then
         uo.SetReceivingContainer('StoreMAP')
            while uo.count(Fish[4])
               uo.FindType(Fish[4],"-1","backpack")
               uo.Grab('0','finditem')
               checklag()
               wait(1000)
             wend
          uo.UnSetReceivingContainer()
       end if
   
      if uo.count(Fish[5]) then
         uo.SetReceivingContainer('StorePRFish')
            while uo.count(Fish[5])
               uo.FindType(Fish[5],"-1","backpack")
               uo.Grab('0','finditem')
               checklag()
               wait(1000)
             wend
          uo.UnSetReceivingContainer()
       end if
 

      if uo.count(Fish[6]) then
         uo.SetReceivingContainer('StoreFish')
            while uo.count(Fish[6])
               uo.FindType(Fish[6],"-1","backpack")
               uo.Grab('0','finditem')
               checklag()
               wait(1000)
             wend
          uo.UnSetReceivingContainer()
       end if
 
   uo.Print("Улов выложен")
end sub

Sub RunebookRecall(n)
oldX=uo.getX()
oldY=uo.getY()
repeat
uo.Exec('warmode 0')
uo.UseObject('RuneB1')
wait(1000)
uo.LClick(135, n*15+55)
wait(500)
uo.LClick(135, n*15+55)
time=uo.Timer()
repeat
wait(500)
until oldX<>uo.getX() or oldY<>uo.getY() or uo.Life==0 or uo.InJournal('needs') or time+200<uo.Timer()
uo.DeleteJournal()
until oldX<>uo.getX() or oldY<>uo.getY()
end sub

Sub Open(Container)
uo.DeleteJournal()
uo.UseObject(Container)
repeat
wait(500)
until uo.InJournal('Contains')
end sub


Sub EatingFood()
ToEat()
DropFood()
end sub

Sub ToEat()
uo.SetReceivingContainer('backpack')
Open('Sunduk')
uo.FindType(TypeFood,'-1','Sunduk')
uo.Grab('50','finditem')
wait(500)
repeat
Checklag()
uo.UseType(TypeFood)
wait(1000)
until uo.InJournal('You are simply too full to eat any more!')
uo.UnsetReceivingContainer()
end sub

Sub DropFood()
if uo.Waiting() then
uo.CancelTarget()
end if
var f,Exit
dim Food[1]
Food[0]=TypeFood
uo.SetReceivingContainer('Sunduk')
wait(500)
for f=0 to 0
Exit=0
repeat
uo.FindType(Food[f])
if uo.GetQuantity('finditem')>0 then
uo.Grab('0','finditem')
wait(1500)
else
Exit=1
end if
until Exit==1
next
uo.UnSetReceivingContainer('Sunduk')
end sub

Sub RecallAtAttack()
var mX,mY
reccal:
uo.DeleteJournal()
if uo.Waiting() then
uo.CancelTarget()
end if
mX=uo.getX("self")
mY=uo.getY("self")
uo.DeleteJournal()
uo.FindType('0x1F14',-1,'mY')
uo.Cast('Recall','finditem')
uo.Print('Атака! Реколимся!')
wait(4000)
if not uo.getX("self")<>mX and not uo.getY("self")<>mY then
goto reccal
end if
RecallToHome()
Drop()
Terminate()
end sub

sub Reconnect()
var ReconnectTime,rFlag
ReconnectTime='0'
rFlag=1
repeat
while (uo.ObjAtLayer('Bpack')=='')
if rFlag then
ReconnectTime=MakeTime()
rFlag=0
end if
wait(20000)
uo.Say('')
wait(3000)
uo.Say('')
wait(3000)
uo.Say('')
wait(3000)
uo.LDblClick(357,164)
uo.LClick(616,459)
wait(3000)
wend
wait(3000)
if (rFlag==0) and (ReconnectTime<>'0') then
uo.TextOpen()
uo.TextPrint('Disconnected & Reconnected @ '+ReconnectTime)
rFlag=1
ReconnectTime='0'
end if
until false
end sub

Sub MakeTime()
var d,t,ret,i
ret=str(uo.Time())
t=""
for i=0 to Len(ret)
t=ret[Len(ret)-i]+t
if (i==2) or (i==4) then
t=":"+t
end if
next
ret=str(uo.Date())
d=""
for i=0 to Len(ret)
d=ret[Len(ret)-i] + d
if (i==2) or (i==4) then
d="."+d
end if
next
ret=t+" @ "+d
return ret
end sub

sub Terminate()
uo.Print('Все функции скрипта выключены!')
uo.DeleteJournal()
uo.Exec('terminate all')
wait(100)
uo.Exec('terminate all')
wait(100)
uo.Exec('terminate all')
wait(100)
end sub

Sub CheckLag()
if uo.Waiting()>0 then
uo.Exec('canceltarget')
end if
uo.DeleteJournal()
uo.Click('backpack')
repeat
wait(50)
until uo.InJournal('backpack')
end sub
Post Reply