Мининг | Mining -)

Good scripts, not reviewed and checked yet

Moderators: Murderator+, Murderator

Post Reply
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Мининг | Mining -)

Post by Destruction »

Да, знаю, что уже хрен знает какой по счёту, но этот - как всегла особый :-)

Собственно капаем, ходим, капаем.

Code: Select all

var step_timeout = 600 ; таймаут на шаг
sub mining()
   uo.addObject( "pickaxe" )
   while uo.targeting()
      wait(100)
   wend
   var continue = "Вы положили|Вы отменили|не удалось" ; сообщения о продолжении капания этого тайла
   var break = "нет обзора|в другом месте|ничего нету" ; сообщения о прекращении капания этого тайла
   var i = 0, f = file( "mining.tci" ) ; файлик с координатами
   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.useobject( "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


Обратите внимание на ранее нигде не проскакивающую функцию хождения, носится - как зверь, но обходить, к сожалению - не умеет.

Теперь собственно о том, откуда беруться координаты - нет, они беруться не из воздуха :-)

Нужная информация - лежит в файле mining.tci, формат файла:

Code: Select all

count
TYPE T X Y Z
TYPE T X Y Z

count - количество строк вида "TYPE T X Y Z".
TYPE - тип действия, 0 - капать в тайле, 1 - подойти к тайлу, 2 - подойти а потом капать.
T, X, Y, Z - соответсвенно информация о тайле, см. infotile.

Такой формат файла хорош для маленьких, кривых пещер - например такой, как в НТ на Антаресе.

Для больших масшатабов - можно написать функцию разметки.

PS: Скрипт писался и тестировался в НТ на Антаресе )

PPS: Правкой пары букв из ходилки можно сделать догонялку, которая работает по тому же принципу, что и многие другие.
-=WOLVERINE=-
Posts: 66
Joined: 2004-05-27 18:19:17
Contact:

Post by -=WOLVERINE=- »

Может напишешь хотя бы пример этого фаилика а то я что то написал
только вот скрипт никак не хочет запускаться вот что я написал...да еще где сохранять этото фаил я его в папке с инжеи сохранял..

Code: Select all

36
2 1341 1896 271 0
2 1340 1897 271 0
2 1342 1900 271 0
2 1341 1903 271 0
2 1340 1907 271 0
2 1343 1910 272 0
2 1340 1913 276 0
2 1341 1916 280 0
2 1339 1921 275 0
2 1341 1920 271 0
2 1339 1921 268 0
2 1340 1924 267 0
2 1341 1926 268 0
2 1340 1928 270 0
2 1342 1930 267 0
2 1343 1931 266 0
2 1340 1931 264 0
2 1343 1927 260 0
2 1339 1923 260 0
2 1340 1922 262 0
2 1339 1923 264 0
2 1343 1921 266 0
2 1343 1920 268 0
2 1343 1919 270 0
2 1340 1917 271 0
2 1341 1912 272 0
2 1342 1910 271 0
2 1343 1909 269 0
2 1342 1907 267 0
2 1339 1906 267 0
2 1342 1904 266 0
2 1339 1902 265 0
2 1341 1898 266 0
2 1342 1897 268 0
2 1341 1897 270 0
2 1339 1894 271 0
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Хмм, ну дык всё верно делаешь.

Как именно не пашет?
-=WOLVERINE=-
Posts: 66
Joined: 2004-05-27 18:19:17
Contact:

Post by -=WOLVERINE=- »

Просто выдает парсер....может версия клиента особая нужна?(Инжектовского.. :oops: )
Kenshin
Posts: 1
Joined: 2007-02-11 21:25:40

Post by Kenshin »

key = getWalkDir( x-mx, y-my, 0, 0 )
dir = getWalkDir( x-mx, y-my, 1, 0 )

как я понимаю это и есть та самая ходилка, только ее в инжу надо ставить отдельно или она там уже есть??
у меня YokoInjection 505.18 VeNdOr

при попытке запустить скрипт говорит что не могу найти функцию
getWalkDir :(
Disconnecting
Posts: 6
Joined: 2007-03-23 19:36:22

Post by Disconnecting »

У меня тоже не работает. Пишет Unhandled exception in parser
Версия инжекта 505.16

В чем проблема?
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Kenshin wrote:key = getWalkDir( x-mx, y-my, 0, 0 )
dir = getWalkDir( x-mx, y-my, 1, 0 )

как я понимаю это и есть та самая ходилка, только ее в инжу надо ставить отдельно или она там уже есть??
у меня YokoInjection 505.18 VeNdOr

при попытке запустить скрипт говорит что не могу найти функцию
getWalkDir :(

viewtopic.php?t=7379&start=0
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Edikus
Posts: 98
Joined: 2004-07-12 13:03:57

Post by Edikus »

так ни у кого и не заработало?

у меня тоже выдаёт ошибку парсера, хотя и функцию гетвалкдир всунул и файл с координатами правильный сделал...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Ошибки выскакивают для того, чтобы дать информацию!
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Disconnecting
Posts: 6
Joined: 2007-03-23 19:36:22

Post by Disconnecting »

Кто нибудь разобрался почему выскакивает ошибка с парсером?!
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Disconnecting wrote:Кто нибудь разобрался почему выскакивает ошибка с парсером?!

Конечно! Знаешь в чем? Читать нужно внимательно, и хотя бы думать иногда.
Excaliburg
Posts: 10
Joined: 2008-03-20 18:09:07

Post by Excaliburg »

Kynep wrote:
Disconnecting wrote:Кто нибудь разобрался почему выскакивает ошибка с парсером?!

Конечно! Знаешь в чем? Читать нужно внимательно, и хотя бы думать иногда.


Умничай в другом месте. Если бы я хоть не много разбирался в скриптах, я бы проблему сам решил. А ты вместо того, чтобы умничать, лучше помог. Если не можешь/хочешь помочь, дорога тебе найух.
Kynep
Expert!
Posts: 1348
Joined: 2006-02-07 08:51:40
Location: г. Старый Оскол
Contact:

Post by Kynep »

Excaliburg wrote:Умничай в другом месте. Если бы я хоть не много разбирался в скриптах, я бы проблему сам решил. А ты вместо того, чтобы умничать, лучше помог. Если не можешь/хочешь помочь, дорога тебе найух.

Не хочешь думать идешь на йух сам, понял? Удачи в.... понимании !
Excaliburg
Posts: 10
Joined: 2008-03-20 18:09:07

Post by Excaliburg »

Kynep wrote:
Excaliburg wrote:понял?


Нет, не понял.
Successful
Posts: 174
Joined: 2008-12-13 00:00:15

Post by Successful »

щас довыеживается))))
Excaliburg
Posts: 10
Joined: 2008-03-20 18:09:07

Post by Excaliburg »

Скрипт работает на ура, хоть и не понятно, что было не так .)
Destruction'y большое спасибо.

Кому нахамил, прощу прощения. Не в настроении был :P
Botinokk
Posts: 62
Joined: 2006-09-08 04:46:12

Post by Botinokk »

Мда че то тоже непонял где должен этот текстовый лежать...
kumatt
Posts: 4
Joined: 2009-06-22 07:54:00

Post by kumatt »

а как добавить в скрипт ещё чтоб он выкидывал всё в сумку у дома, помогите плз :roll:
Post Reply