Мининг | 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 :(
https://yoko.uokit.com/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