Код
// ********************************************************************************
**************************************
// Скрипт на рубку деревьев для DW (где неработает LastTargetXY +- ..). ver 1.06 (c) BELL
// если он вам понравится, можете пожертвовать несколько gp :)
// написано для UOPilot v2.12 uopilot.uokit.com
// ICQ#: 319-386-671 все баги ТОЛЬКО В ICQ
// Внимание! Отключайте Circle of transparency! помоему он мешает :)
// Бинды: F5 - LastObject; F8 UseSkill Hiding;
// Запуск: На топор и в путь
//
// Герой ходит в одном направлении, рубя все что попадается в округе. Когда вес превышает
// ограничение - выполняется Ваше действие (например recall), записанное на макрос в другой
// программе (например, UOAssist). Звенит звонок. Если герой уперся, предпринимаются попытки
// обойти препятствие. Возможно рубить спрятавшись. Проверка на сохранение мира. Убегает если
// атакуют или нарвались Ent`а.
// ********************************************************************************
**************************************
//НАСТРОЙКИ. Проверьте все
//В какую строну идти. Значения: up, down, left, right
set $move right //замените последнее слово на нужное
//на сколько шагов
set #step 8
//Спрятаться? 1 да 0 нет
set #hide 1
//Сколько может унести герой. Как нарубит - нажмется клавиша, определяемая ниже
set #wghtc 350
set $retkey F12 //какую клавишу нажать, чтобы среколится (макрос забивайте в Ассисте например)
//ОТНОСИТЕЛЬНЫЕ координаты расчитываются исходя из размеров игрового экрана
//в данном случае 800 на 600. чтобы получить центр делим на два
set #charX 400 - 30 //400 это левая рука чара, нам надо середину
set #charY 300 - 30 //300 это ноги чара, нам надо середину чара
//разница между координатами героя XY и кординатами мыши. Грубо говоря квадрат, по углам которого
//будут производится клики
set #rX 40
set #rY 40
//ПРОГРАММА. Не трогайте ничего если не уверены.
//Главный цикл
:begin //метка
for #x -2 1 2
for #y -2 1 2
//все вырубили в округе? проверка на вес
if wght >= #wghtc
send $retkey 8000
say ОКОНЧЕНО!
repeat 5
alarm
end_repeat
end_script
end_if
if (#hide == 1) and (hidden == 0) //если надо спрятаться
while hidden == 0
send F8 3000
end_while
end_if
set #cX #charX + #x * #rX //вычисляем координаты мыши
set #cY #charY + #y * #rY
gosub lumberjack //рубим
end_for
end_for
gosub run //меняем положение
goto begin //на начало
//подпрограммы
:lumberjack
send F5//берем топор
waitfortarget 300 //ждем прицела
move #cX #cY //кликаем по относительным координатам
left #cX #cY
wait 2000 //2 секунды на лаги после клика
//первая проверка на курсор, имеет или он форму прицела
//остальные проверки на последние сообщения сервера
if (target == 1) or (lastmsg no logs) or (lastmsg nothing) or (lastmsg can't) or (lastmsg far away)//если проверки не прошли уходим, не теряя времени
return
end_if
set #wt 10 //сколько максимум ждать рубки в секундах
while lastmsg use this on? //пока нет сообщений ждем (пока рубит) но не более #wt секунд
wait 1000
set #wt #wt - 1
if #wt == 1 //выходим если прошло максимальное время
break
end_if
end_while
if lastmsg use this on? //если сообщение не изменилось, уходим - попали на куст или глюк (дайте покурить)
return
end_if
if (lastmsg oops) or (lastmsg attacking you) or (lastmsg ent!!!) // есличо - валим отсюда :)
repeat 25
gosub run
end_repeat
return
end_if
if lastmsg saving.. //проверка на сохранение мира
repeat 85
wait 1000
if lastmsg save
break
end_if
end_repeat
end_if
goto lumberjack //если все успешно снова рубим те же координаты
:run //смена положения
set #step #step / 2
repeat #step
set #oldcx charposx
set #oldcy charposy
send $move
send $move
if (#oldcx == charposx) and (#oldcy == charposy) //если уперлись например
if ($move == left) or ($move == right) //если ходим вправо-влево, пытаемся выбраться вверх-вниз
if random 10 > 5
repeat 8
send up
end_repeat
else
repeat 8
send down
end_repeat
end_if
end_if //если вправо-влево
if ($move == up) or ($move == down) //если ходим вверх-вниз, пытаемся выбраться вправо-влево
if random 10 > 5
repeat 8
send left
end_repeat
else
repeat 8
send right
end_repeat
end_if
end_if //если вверх-вниз
end_if //если уперлись
end_repeat
return