Page 1 of 1

Дайте проверку на кирку

Posted: 2009-06-13 18:56:16
by zimglads
дайте пожалуста проверку на кирку .. чтобы после фразы You broke the pickaxe. он брал опять кирку ... и продолжал копать ... изначально мой скрипт выглядит так :
var step_timeout = 800 ; таймаут на шаг

Code: Select all

sub mining() 
   uo.addtype( "pickaxe" ) 
   while uo.targeting() 
      wait(200) 
   wend 
   var continue = "You loosen some rocks but fail to find any useable ore.|in your pack.|Success in work!" ; сообщения о продолжении капания этого тайла 
   var break = "Try mining in rock.|That is too far away.|There is no ore here to mine.|You can't see the target|Unexpected button input" ; сообщения о прекращении капания этого тайла 
   var i = 0, f = file ( "D:\mining.txt" )  ; файлик с координатами 
   f.open() 
   var cnt = f.readNumber() 
   DIM type[ val( str( cnt ) ) ] 
   DIM tile_t[ val( str( cnt ) ) ] 
   DIM tile_x[ val( str( cnt ) ) ] 
   DIM tile_y[ val( str( cnt ) ) ] 
   DIM tile_z[ val( str( cnt ) ) ] 
   while not f.eof() 
      type[ i ] = f.readNumber() 
      tile_t[ i ] = f.readNumber() 
      tile_x[ i ] = f.readNumber() 
      tile_y[ i ] = f.readNumber() 
      tile_z[ i ] = f.readNumber() 
      i = i + 1 
   wend 
   f.close() 
   for i = 0 to cnt -1 
      if type[i] == 2 || type[i] == 1 then 
         desWalker( tile_x[i], tile_y[i] ) 
      endif 
      if type[i] == 2 || type[i] == 0 then 
         repeat 
            deljournal( break + "|" + continue ) 
            uo.waittargettile( str( tile_t[ i ] ), str( tile_x[ i ] ), str( tile_y[ i ] ), str( tile_z[ i ] ) ) 
            uo.usetype( "pickaxe" ) 
            repeat 
               wait( 100 ) 
            until uo.injournal( break + "|" + continue ) 
         until uo.injournal( break ) 
      endif 
   next 
endsub 

Sub desWalker( x, y ) 
   var dir, key, mx, my, timer 
   if x== uo.getX() && y == uo.getY() then 
      return false 
   endif 
   repeat 
      mx = uo.getX() 
      my = uo.getY() 
      key = getWalkDir( x-mx, y-my, 0, 0 ) 
      dir = getWalkDir( x-mx, y-my, 1, 0 ) 
      if Not uo.getDir() == dir then 
         uo.press( key, 2 ) 
      else 
         uo.press( key ) 
      endif 
      timer = 0 
      while uo.getX() == mx && uo.getY() == my && step_timeout / 100 > timer 
         wait( 100 ) 
         timer = timer + 1 
      wend 
   until uo.getX() == x && y == uo.getY() 
endsub
Sub getWalkDir(x, y, type, walk) 
   DIM keys[8] 
   if type == 0 then 
      if walk == 0 then 
         keys[0] = 35; End 
         keys[1] = 40; Down 
         keys[2] = 34; Page Down 
         keys[3] = 39; Right 
         keys[4] = 33; Page Up 
         keys[5] = 38; Up 
         keys[6] = 36; Home 
         keys[7] = 37; Left 
      else 
         keys[0] = 33; Page Up 
         keys[1] = 38; Up 
         keys[2] = 36; Home 
         keys[3] = 37; Left 
         keys[4] = 35; End 
         keys[5] = 40; Down 
         keys[6] = 34; Page Down 
         keys[7] = 39; Right 
      endif 
   else 
      if walk == 0 then 
         keys[0] = 4; End 
         keys[1] = 3; Down 
         keys[2] = 2; Page Down 
         keys[3] = 1; Right 
         keys[4] = 0; Page Up 
         keys[5] = 7; Up 
         keys[6] = 6; Home 
         keys[7] = 5; Left 
      else 
         keys[0] = 0; Page Up 
         keys[1] = 7; Up 
         keys[2] = 6; Home 
         keys[3] = 5; Left 
         keys[4] = 4; End 
         keys[5] = 3; Down 
         keys[6] = 2; Page Down 
         keys[7] = 1; Right 
      endif 
   endif 
   if x==0 && y > 0 then 
      return keys[0] 
   endif 
   if x==0 && y < 0 then 
      return keys[4] 
   endif 
   if x > 0 && y == 0 then 
      return keys[2] 
   endif 
   if x < 0 && y == 0 then 
      return keys[6] 
   endif 
   if x > 0 && y > 0 then 
      return keys[1] 
   endif 
   if x > 0 && y < 0 then 
      return keys[3] 
   endif 
   if x < 0 && y > 0 then 
      return keys[7] 
   endif 
   if x < 0 && y < 0 then 
      return keys[5] 
   endif 
endsub
Sub deljournal(msg)
while uo.injournal(msg)
uo.setjournalline(uo.injournal(msg)-1,"")
wend
endsub
sub OneClick() 

dim reindex[8] 
reindex[0] = 11 
reindex[1] = 12 
reindex[2] = 13 
reindex[3] = 10 
reindex[4] = 16 
reindex[5] = 14 
reindex[6] = 17 
reindex[7] = 15 
var GumpID = 0 
var ButtonID = 0 
var ButtonText 
var i = 18 

if uo.LastGump('text', 4) <> "0" then 
i = 19 
end if 
GumpID = val(Mid(uo.LastGump('command', i), 16, 4)) 
ButtonID = reindex[GumpID-2225] 
ButtonText = uo.LastGump('command', ButtonID) 
uo.LClick(Val(Mid(ButtonText, 7, 3)), Val(Mid(ButtonText, 11, 3))) 
wait(300) 

end sub 

sub AntiMacro() 

while not uo.Dead() 
if not uo.LastGump('replyed') then 
if uo.LastGump('text', 0) == 'Antimacros System' then 
OneClick() 
end if 
endif 
wait(500) 
wend 

end sub

Posted: 2009-06-14 08:58:31
by Savage
А он разве не берёт? Если юзаешь по типу кирку, то новая автоматом в руки возьмётся.

Posted: 2009-06-14 13:18:24
by zimglads
Savage wrote:А он разве не берёт? Если юзаешь по типу кирку, то новая автоматом в руки возьмётся.
неа( первую берёт и если круг макры прошол то тоже возьмёт новую на стартовой клетке ... а если ломаеться то не берёт (

Posted: 2009-06-14 15:44:24
by Savage
Не может такого быть. Навреное у тебя типы кирок разные. Бывет - лежат в разные стороны, соответственно и типы разные.
А на счёт проверки - смотри хэлп на команду UO.ObjAtLayer()

Posted: 2009-06-14 16:02:29
by zimglads
нет 100% одинаковые.. тип одинаковый .. т.к. покупал в одном магазине и через обжект тип один и тотже показует .. стадартный .. я думал нехватает проверки на слова в чате "ваша кирка сломалась" ...

Posted: 2009-06-14 19:23:06
by Successful
очень странно ))если ты играешь на мл,скачай пофикшенный инжектион.длл ) у меня было что-то похожее,юзтайп видел только ту вещь,которая в руке находилась,а ту что в бекпаке не трогал )

Posted: 2009-06-14 20:21:24
by zimglads
не пацаны )) спасибо я разобрался ) я в инжорнале забыл вписать фразу о поломке кирки О_О