Помогите зацыклить скрипт...

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
felkon
Posts: 11
Joined: 2009-02-25 21:21:04
Location: Саратов
Contact:

Помогите зацыклить скрипт...

Post by felkon »

Умные мира сего, перепробовал все что знал, ну не могу я зацыклить макрос...

Code: Select all

var RuneBook = "0x404CB0E5" # Серийник рунбуки
var Marks = 9 # Количество марков в рунбуке ( первый марк не считается )
var WeightLimit = 850 # Предельный вес
var Container = "0x403A7629" # Сундук

# Дальше не трогать :-)
var MarkNo
var i
var TmpX
var TmpY
var CurX
var CurY
var CurZ
var TileX
var TileY

sub RecallTo( i )
   TmpX = UO.GetX("self")
   TmpY = UO.GetY("self")
   UO.Exec("recall "+RuneBook+" "+STR( i ))
   while TmpX == UO.GetX("self") and TmpY == UO.GetY("self")
      Wait(500)
   wend
end sub

sub GoHome()
   RecallTo( 1 )

   UO.Exec("setreceivingcontainer "+Container)   
   while not UO.Count("0x19b9") == 0
      UO.Exec("waittargettype 0x19b9")
      UO.Exec("grab 0")
      Wait(2000)
   wend
   UO.Exec("unsetreceivingcontainer")   

   RecallTo( MarkNo )
end sub

sub CheckAction()
   if UO.InJournal("You loosen") then
      return 1
   end if
   if UO.InJournal("You put") then
      return 1
   end if
   if UO.InJournal("no ore") then
      return 1
   end if
   if UO.InJournal("no line") then
      return 1
   end if
   if Uo.InJournal("overclick BUG") then
      return 1
   end if
   if UO.InJournal("too far") then
      return 1
   end if
   if UO.InJournal("You put the Proto") then
      return 1
   end if
   if UO.InJournal("Try mining in rock") then
      return 1
   end if
   if UO.InJournal("Your pickaxe is destroyed") then
      return 1
   end if
   return 0
   wait (1000)
end sub

sub main()
   if not UO.Count("0x0E85") then
      UO.Print("Take some shovel please...")
      return 0
   end if

   UO.DeleteJournal()

   for MarkNo = 2 to ( 1 + Marks )   
      RecallTo( MarkNo )
      Wait( 1000 )

      CurX = UO.GetX("self")
      CurY = UO.GetY("self")
      CurZ = UO.GetZ("self")
      
      
      
      for TileX = -4 to 4
         for TileY = -4 to 4
         
            
            Start:
            
            if NOT UO.Hidden() then
               UO.useskill("Hiding")
               Wait(8000)
               end if
            
            UO.Exec("waittargettile * "+STR( CurX + TileX )+" "+STR( CurY + TileY )+" "+STR( CurZ ))
            UO.Exec("usetype 0x0E85")

            while not CheckAction()
               Wait( 1500 )
            wend      

            if UO.InJournal("You put") then
               if UO.Weight > WeightLimit then
                  GoHome()
               end if
               UO.DeleteJournal()
               Wait( 1000 )
               goto Start
            else
               Wait(1000)
            end if

            UO.DeleteJournal()
         next
      next
   next
end sub


Если кто сможе респект тому человеку и уважуха! По всем особенностям шарда и рунбуки расскажу по номеру 177615099.
Предложения по зацикливанию типо

Code: Select all

sub main()
while 1
min()
wend
end sub

не действуют..... Помогите чем можете...
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Помогите зацыклить скрипт...

Post by Mirage »

Это пипец

Code: Select all

var RuneBook = "0x404CB0E5" # Серийник рунбуки
var Marks = 9 # Количество марков в рунбуке ( первый марк не считается )
var WeightLimit = 850 # Предельный вес
var Container = "0x403A7629" # Сундук

# Дальше не трогать :-)
var MarkNo
var i, TmpX, TmpY, CurX, CurY, CurZ, TileX, TileY

sub RecallTo( i )
   TmpX = UO.GetX("self")
   TmpY = UO.GetY("self")
   UO.Exec("recall "+RuneBook+" "+STR( i ))
   while TmpX == UO.GetX("self") and TmpY == UO.GetY("self")
      Wait(500)
   wend
end sub

sub GoHome()
   RecallTo( 1 )

   UO.Exec("setreceivingcontainer "+Container)   
   while not UO.Count("0x19b9") == 0
      UO.Exec("waittargettype 0x19b9") ; <--- вот это тут накой?
      UO.Exec("grab 0")
      Wait(2000)
   wend
   UO.Exec("unsetreceivingcontainer")   

   RecallTo( MarkNo )
end sub

sub CheckAction()
   if UO.InJournal("You loosen|You put|no ore|no line|overclick BUG|too far|You put the Proto|Try mining in rock|Your pickaxe is destroyed") then
      return 1
   end if
   return 0
   wait (1000)
end sub

sub main()
   if not UO.Count("0x0E85") then
      UO.Print("Take some shovel please...")
      return 0
   end if

   UO.DeleteJournal()

   for MarkNo = 2 to ( 1 + Marks )   
      RecallTo( MarkNo )
      Wait( 1000 )

      CurX = UO.GetX("self")
      CurY = UO.GetY("self")
      CurZ = UO.GetZ("self")
            
      for TileX = -4 to 4
         for TileY = -4 to 4
                  
            Start:
            
            if NOT UO.Hidden() then
               UO.useskill("Hiding")
               Wait(8000)
               end if
            
            UO.Exec("waittargettile * "+STR( CurX + TileX )+" "+STR( CurY + TileY )+" "+STR( CurZ ))
            UO.Exec("usetype 0x0E85")

            while not CheckAction()
               Wait( 500 )
            wend      

            if UO.InJournal("You put") then
               if UO.Weight > WeightLimit then
                  GoHome()
               end if
               UO.DeleteJournal()
               Wait( 1000 )
               goto Start ; так нельзя
            else
               Wait(1000)
            end if

            UO.DeleteJournal()
         next
      next
   next
end sub


Предложения по зацикливанию типо

Code: Select all

sub main()
while 1
min()
wend
end sub

[/quote] :shock:
предложение БУДЕТ работать если привести скрипт в порядок. А так существует множество скриптов на добычу по принципу:

Code: Select all

sub
указывается тайл
цыкл
пауза пока не (сообщение любое + таймер + проверка на смерть)
пока не (сообщение о том что нет логов\руды + смерть + перегруз)
end.
felkon
Posts: 11
Joined: 2009-02-25 21:21:04
Location: Саратов
Contact:

Post by felkon »

ну конечно может это и пипец но все же.... У меня нет привязки к тайлам он просто обкапывает вокруг себя все портуется домой при перевесе и опбатно... когда доходит до конца рунбуки (посути должен перейти на начало ... ан нет выбивает ошибку)...
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

Привязка к тайлам есть. Просто есть привязка к определенным тайлам а есть к нулевому = все тайлы :)

когда ты запускаешь скрипт он обкапывает квадрат он же не ходит? Просто с 1 квадрата набирает вес или джет когда будет руда Так?
глюк в цикле получается потому что не обнуляется значение MarkNo.
Оно растет for MarkNo = 2 to ( 1 + Marks ) до предела но чтобы начать с начала оно должно быть минимальным Так?
Следовательно:

Code: Select all


sub main()
repeat
MarkNo = 2

   if not UO.Count("0x0E85") then
      UO.Print("Take some shovel please...")
      return 0
   end if
   UO.DeleteJournal()
   for MarkNo = 2 to ( 1 + Marks )
.....................

   next
until uo.Dead()
end sub


хз. Попробуй вот так.
Post Reply