Доброго времени суток. Предоставляю Вам вполне рабочий скрипт на мининг от уважаемого Destruction, который на других бы шардах работал, но, к сожалению, не у меня:
Code: ;Нужная информация о координатах - лежит в файле mining.txt: ;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. var step_timeout = 600 ; таймаут на шаг sub mining() uo.addObject( "pickaxe" ) while uo.targeting() wait(100) wend var continue = "dig some|loosen some" ; сообщения о продолжении капания этого тайла var break = "is too far|it seems|no metal" ; сообщения о прекращении капания этого тайла var i = 0, f = file( "C:\uo_zuluhotel\Injection\Scripts\minoc.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.useobject( "pickaxe" ) repeat wait( 100 ) until uo.injournal( break + "|" + continue ) until uo.injournal( break ) endif next endsub Sub deljournal(msg) while uo.injournal(msg) uo.setjournalline(uo.injournal(msg)-1,"") wend 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
Проблема в том, что скрипт не обрабатывает переменные:
Code: var continue = "dig some|loosen some" ; сообщения о продолжении капания этого тайла var break = "is too far|it seems|no metal" ; сообщения о прекращении капания этого тайла
Поскольку при копке руды, сервер посылает 3 сообщения:
Code: 1. You start mine. ; сообщение которое нам не интересно. 2. There is no metal to mine. ;сообщение которое нам нужно обработать скриптом, для нормальной работы... 3. You stop mine. ;сообщение которое скрипт может обработать.
Подскажите, помогите пожалуйста, как мне скриптом обрабатывать именно второе сообщение, а не последнее.
Еще хотелось бы узнать, как тип действия (0 - капать в тайле, 1 - подойти к тайлу, 2 - подойти а потом капать.) указать не в файле с координатами, а отдельно в самом скрипте?
|