Версия 2.0 Карп что добавлено: теперь пользовтелю ненадо НИЧЕГО настраивать в боте. Ему надо только зайти на локацию и достать удочку, проверить есть ли наживка и еда... Включаем бот и все) Функциональность пока без изменений (ловит, перезабрасывает, ест)
Планируется: продажа рыбы, закупка еды и наживки, расширение мест ловли
set linedelay 1 //установить задержку в 1 мсек.
// включение и настройка бота
// необходимо достать удочку и забросить в место ловли
// затем запускаем бот и следуем указаниям
// раздел проверки нужны ли начальные параметры
if #zabros > 0 and #eda > 0 and #cotel > 0 and #upotrebit > 0
goto eda
else
end_if
// этот раздел посвящен заданию начальных параметров
set #handlePilot findwindow ()
log #handlePilot
log close
log clear
log open
set #logSizeX 300
set #logSizeY 200
set #handleLog 0
while #handleLog = 0
set #handleLog findwindow (Log Window)
end_while
set #x (screenwidth - #logSizeX) / 2
set #y screenheight / 4
set windowpos 1 1 #logSizeX #logSizeY #handleLog
log mode compact
// окно заброса // карп 562, 329
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #zabros getwindow (#tmp next)
set #carpX 562
set #carpY 329
set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа
set #fiderY #carpY - 44
// окно - полоса еды
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #eda getwindow (#tmp next)
// окно - бегунок лески
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #LeskaW getwindow (#tmp next)
// окно - бегунок удочки
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #udaW getwindow (#tmp next)
// окно - котелок
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #cotel getwindow (#tmp child)
// окно употребить
set #ownerHandle findwindow (Продукты)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #upotrebit getwindow (#tmp next)
// конец поисков окон
//хотим ли есть?
:eda
set workwindow #eda //окно полосок с едой
get color #edacolor 27, 53 //координаты голода
if #edacolor = 13032663 // цвет голода
log Кушаю
set #handleWin findwindow (Продукты)
showwindow #handleWin
wait random (1000) + 300
set workwindow #upotrebit
left 10 10
send {space}
goto eda
else
end_if
// Начало заброса
:zabros
wait random (1000) + 500
log Забрасываю Удочку
set workwindow #zabros
//проверяем первый ли заброс
set #a #a + 1
if #a = 1
move #carpX #carpY
left #carpX #carpY
goto klev
end_if
set #z random (2)
if #z = 1
log забросил мышкой
move #carpX #carpY
left #carpX #carpY
else
send t
log забросил кнопкой
end_if
:klev // цикл клева
set #j #j + 1
if #j > 300
log возвращаюсь в начало (возможно есть проблемы)
set #j 0
goto nachalo
end_if
wait random (1000) + 1500
get color #uda #fiderX, #fiderY// надо всегда проверять место заброса
if #uda = 255 // цвет удочки
goto klev
else
log Клюнуло, ВЫВАЖИВАЕМ!
end_if
//вываживаем
start_script 1
start_script 2
// проверка улова
:ulov
set #b #b + 1 //увеличение счетчика
if #b > 1500
Log не вываживается, либо сорвалась
goto nachalo //сачек
end_if
set #a #a + 1 //увеличение счетчика
if #a > 50
send f //сачек
set #a 1
end_if
set #zabros workwindow
move #fiderX #fiderY
set #w windowfromcursor
set workwindow #w
if #w = #zabros// хендл окна заброса
goto ulov
else
set #riba #riba + 1
log поймалась #riba рыбка
stop_script 1
stop_script 2
wait random (1000) + 400
set #var findwindow (Садок)
set workwindow #var
send {Space}
wait random (1000) + 400
end_if
:nachalo
stop_script 1
stop_script 2
log начинаем все поновой
set #j 0
set #b 0
set linedelay 1 //установить задержку в 1 мсек.
set workwindow #LeskaW.4
send_down g
:leska
get color #leska 21, 7 // цвет полосы лески
if #leska = 4488494 // цвет без нагрузки
send_up g
else
goto leska
end_if
set linedelay 1 //установить задержку в 1 мсек.
set workwindow #udaW.4
send_down h
:palka
get color #palka 18, 7 // цвет полосы лески
if #palka = 4488494 // цвет без нагрузки
send_up h
else
goto palka
end_if
// включение и настройка бота
// необходимо достать удочку и забросить в место ловли
// затем запускаем бот и следуем указаниям
// раздел проверки нужны ли начальные параметры
if #zabros > 0 and #eda > 0 and #cotel > 0 and #upotrebit > 0
goto eda
else
end_if
// этот раздел посвящен заданию начальных параметров
set #handlePilot findwindow ()
log #handlePilot
log close
log clear
log open
set #logSizeX 300
set #logSizeY 200
set #handleLog 0
while #handleLog = 0
set #handleLog findwindow (Log Window)
end_while
set #x (screenwidth - #logSizeX) / 2
set #y screenheight / 4
set windowpos 1 1 #logSizeX #logSizeY #handleLog
log mode compact
// 1 ищем необходимые окна - место заброса // карп 562, 329
set workwindow 0
showwindow #handlePilot
log Укажите точку заброса (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #zabrosX defX
set #zabrosY defY
set #zabrosAX defxabs
set #zabrosAY defyabs
set #carpX 562
set #carpY 329
set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа
set #fiderY #carpY - 44
set #zabros workwindow
// 2 ищем необходимые окна - окно игры и пилота в строке пуск
set workwindow 0
showwindow #handlePilot
log Укажите положение окна игры в строке пуск (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #igraX defxabs
set #igraY defyabs
set workwindow 0
showwindow #handlePilot
log Укажите положение окна UoPilot в строке пуск(Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #pilotX defxabs
set #pilotY defyabs
// 3 ищем необходимые окна - полоса еды
set workwindow 0
showwindow #handlePilot
log Укажите на полоску еды в ее середину (Ctrl+A)
while workwindow = 0
wait 200
showwindow #handlePilot
end_while
set #edaX defX
set #edaY defY
set #eda workwindow
move 416, 31 //относительные коорд рядом с бегунком лески
get mouse_pos #leskaRX #leskaY abs//считываем абсолютные координаты окна рядом с леской
set #leskaX #leskaRX + 1
move #leskaX #leskaY abs
set #LeskaW windowfromcursor
move 416, 12 //относительные коорд рядом с бегунком удочки
get mouse_pos #udaRX #udaY abs//считываем абсолютные координаты окна рядом с леской
set #udaX #udaRX + 1
move #udaX #udaY abs
set #udaW windowfromcursor
// 4 ищем необходимые окна - котелок
set workwindow 0
showwindow #handlePilot
log Укажите на котелок(Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #cotelX defX
set #cotelY defY
set #cotel workwindow
set workwindow #cotel
move #cotelX #cotelY
left #cotelX #cotelY
wait 400
// 5 ищем необходимые окна употребить
set workwindow 0
showwindow #handlePilot
log Укажите на кнопку употребить (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #upotrebitX defX
set #upotrebitY defY
set #upotrebit workwindow
send {Space}
// конец раздела начальных параметров
//хотим ли есть?
:eda
set workwindow #eda //окно полосок с едой
get color #edacolor 27, 53 //координаты голода
if #edacolor = 13032663 // цвет голода
log Кушаю
set #handleWin findwindow (Продукты)
showwindow #handleWin
wait random (1000) + 300
set workwindow #upotrebit
left 10 10
send {space}
goto eda
else
end_if
// Начало заброса
:zabros
wait random (1000) + 500
log Забрасываю Удочку
set workwindow #zabros
//проверяем первый ли заброс
set #a #a + 1
if #a = 1
move #carpX #carpY
left #carpX #carpY
goto klev
end_if
set #z random (2)
if #z = 1
log забросил мышкой
move #carpX #carpY
left #carpX #carpY
else
send t
log забросил кнопкой
end_if
:klev // цикл клева
set #j #j + 1
if #j > 30
log возвращаюсь в начало (возможно есть проблемы)
set #j 0
goto nachalo
end_if
wait random (1000) + 1500
get color #uda #fiderX, #fiderY// надо всегда проверять место заброса
if #uda = 255 // цвет удочки
goto klev
else
log Клюнуло, ВЫВАЖИВАЕМ!
end_if
//вываживаем
start_script 1
start_script 2
// проверка улова
:ulov
set #b #b + 1 //увеличение счетчика
if #b > 150
Log не вываживается, либо сорвалась
goto nachalo //сачек
end_if
set #a #a + 1 //увеличение счетчика
if #a > 10
send f //сачек
set #a 1
end_if
move #zabrosAX #zabrosAY abs
set #w windowfromcursor
set workwindow #w
if #w = #zabros// хендл окна заброса
goto ulov
else
set #riba #riba + 1
log поймалась #riba рыбка
stop_script 1
stop_script 2
wait random (1000) + 400
set #var findwindow (Садок)
set workwindow #var
send {Space}
wait random (1000) + 400
end_if
:nachalo
stop_script 1
stop_script 2
log начинаем все поновой
set #j 0
set #b 0
move #igraX, #igraY abs
set #w windowfromcursor
set workwindow #w
left #igraX, #igraY abs
wait random (300)
move #pilotX, #pilotY abs
left #pilotX, #pilotY abs
wait random (300)
set workwindow #LeskaW.0
send_down g
:leska
get color #leska 21, 7 // цвет полосы лески
if #leska = 4488494 // цвет без нагрузки
send_up g
else
goto leska
end_if
set workwindow #udaW.0
send_down h
:palka
get color #palka 18, 7 // цвет полосы лески
if #palka = 4488494 // цвет без нагрузки
send_up h
else
goto palka
end_if
set #w windowfromcursor
set workwindow #w
//проверка еды
send_up f
:eda
get color #eda 196, 620 abs // надо всегда проверять место заброса
if #eda = 13032663 // цвет нет еды
move 340, 695 abs
left 340, 695 abs
wait 1s
move 854, 444 abs
left 854, 444 abs
wait 1s
left 916, 191 abs
move 916, 191 abs
wait 300
goto eda
else
wait random (1000)
end_if
wait random (400)
// начало ловли
move 757, 359 abs
set #w windowfromcursor
set workwindow #w
left 757, 359 abs
wait 1s
//send t // нажать t
wait random (1000)
// set $a 0 // для старта условного цикла нужна переменная $a с значением 0
:klev // цикл клева
get color #uda 725, 320 abs// надо всегда проверять место заброса
if #uda = 255 // цвет удочки в абс коорд
goto klev
else
send_down g
end_if
//начало выуживания
:leska
set #a #a + 1 //увеличение счетчика
if #a > 50
goto nachalo //перейти на метку
end_if
set #w windowfromcursor
set workwindow #w
get color #leska 648, 570 abs // цвет полосы лески
if #leska = 7117147 // цвет без нагрузки
send_up g
send_down h
wait 400
send_up h
send_down g
goto leska
else
goto ulov
end_if
//goto ulov
:palka
get color #palka 622, 555 abs // цвет полосы удочки
if #palka = 4356908 // цвет без нагрузки
send_up h
send_down g
send_down f
else
end_if
//проверка вылова
:ulov
send f
get color #ulov 443, 88 abs// цвет полосы окна
if #ulov = 1328284 // цвет окна
move 443, 88 abs
set #w windowfromcursor
set workwindow #w
send {Space}
wait random (1000)
//set workwindow 591816
else
goto leska
end_if
send_up f
wait random (1000)
:nachalo
start_script 2
end_script // завершиние работы скрипта закоментированно, поэтому работать код будет до ручного выключения
Тему прилепил. Кодебоксы лучше заменить на код+спойлер.
Скажите, а есть в юпилот возможность, чтобы скрипт запрашивал перед певрым забросом удочки ввод координат? допустим мы нажимаем старт скрипта, и выскакивает окно куда втавятся координаты после нажатия Ctrl+A. тогда если переделать приаязки кликов мыши не к абсолютным координатам а к краям окна, то можно сделать бот универсальный для любой локации, остается лишь достать удочку и указать место заброса.
http://uopilot.tati.pro/index.php?title=Prompt
:eda
set workwindow 395278 //окно полосок с едой
get color #eda 28, 77 //координаты голода
if #eda = 13032663 // цвет голода
set workwindow 5636428 //окно с котелком
move 36, 64
left 36, 64
wait random (1000)+ 1000
set workwindow 66808 //окно кнопки употребить
move 854, 444 abs
left 854, 444 abs
wait 1s
send {Space}
goto eda
else
end_if
end_script
http://forum.uokit.com/index.php?showtopic=26742
попробуйте.
Итог - вам дан скрипт, который возвращает хендл того самого окошка без названия.
:eda
set workwindow 395278 //окно полосок с едой
get color #eda 28, 77 //координаты голода
if #eda = 13032663 // цвет голода
set workwindow 5636428 //окно с котелком (меню всплывающее)
move 36, 64
left 36, 64
wait random (1000)+ 1000
set workwindow 66808 //окно кнопки употребить (внутри всплывающего меню)
move 854, 444 abs
left 854, 444 abs
wait 1s
send {Space}
goto eda
else
end_if
end_script
get mouse_pos <переменнаяX> <переменнаяY> [abs] нашел) завтра опробую.
init_arr %a (1) prompt()
log %a [1 1]
log %a [1 2]
stop_script
Спасибо за помощь, хорошо что есть форум. Использую вот этот кусок для пошагового запроса от пользователя всех кнопок перед началом работы бота, удобно получается.
// запрос места ловли (сразу узнаем и хендл окна и координаты точки заброса
set workwindow 0
showwindow #handlePilot
log Укажите место ловли (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #zabrosHANDLE workwindow
get mouse_pos #zabrosX #zabrosY
// и т.д. пошагово
set #zabrosX defX
set #zabrosY defY
set #zabrosX defX
set #zabrosY defY
https://forum.uokit.com/index.php?showtopic=20548
там есть про запуск пилота с ключами. Так же есть команда load_script.
От себя хотелось бы порекомендовать по возможности не использовать кучу вкладок, если их работа пересекается либо используются старт/стопы скриптов.
// этот раздел посвящен заданию начальных параметров
set #handlePilot findwindow ()
log #handlePilot
log close
log clear
log open
set #logSizeX 300
set #logSizeY 200
set #handleLog 0
while #handleLog = 0
set #handleLog findwindow (Log Window)
end_while
set #x (screenwidth - #logSizeX) / 2
set #y screenheight / 4
set windowpos 1 1 #logSizeX #logSizeY #handleLog
log mode compact
// 1 ищем необходимые окна - место заброса
set workwindow 0
showwindow #handlePilot
log Укажите точку заброса (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #zabrosX defX
set #zabrosY defY
set #zabrosAX defxabs
set #zabrosAY defyabs
set #fiderX #zabrosX - 32
set #fiderY #zabrosY - 37
set #zabros workwindow
// 3 ищем необходимые окна - полоса еды
set workwindow 0
showwindow #handlePilot
log Укажите на полоску еды в ее середину (Ctrl+A)
while workwindow = 0
wait 200
showwindow #handlePilot
end_while
set #edaX defX
set #edaY defY
set #eda workwindow
// 4 ищем необходимые окна - котелок
set workwindow 0
showwindow #handlePilot
log Укажите на котелок(Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #cotelX defX
set #cotelY defY
set #cotel workwindow
set workwindow #cotel
move #cotelX #cotelY
left #cotelX #cotelY
wait 400
// 5 ищем необходимые окна употребить
set workwindow 0
showwindow #handlePilot
log Укажите на кнопку употребить (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #upotrebitX defX
set #upotrebitY defY
set #upotrebit workwindow
send {Space}
// конец раздела начальных параметров
Готова версия 1.0 кодовое название КАРП
Вот собственно версия которая будет работать у всех.
Бот запрашивает место ловли, затем сам ловит рыбу, сам кушает, сам достает сачек. Ведет посчет количества выловленной рыбы. Делает перезабросы и т.д.
Пользователю остается следить чтобы была наживка и еда в наличии, ну и своевременно продавать рыбу.
Локация, пока только рыбхоз - карповая заводь.
Планирую дальше: минимизировать запросы от пользователя, сделать возможность боту самому пополнять запасы наживки и еды, а так же продавать выловленную рыбу. Плюс расширить места ловли (или сделать их универсальными)
// включение и настройка бота
// необходимо достать удочку и забросить в место ловли
// затем запускаем бот и следуем указаниям
// раздел проверки нужны ли начальные параметры
if #zabros > 0 and #eda > 0 and #cotel > 0 and #upotrebit > 0
goto eda
else
end_if
// этот раздел посвящен заданию начальных параметров
set #handlePilot findwindow ()
log #handlePilot
log close
log clear
log open
set #logSizeX 300
set #logSizeY 200
set #handleLog 0
while #handleLog = 0
set #handleLog findwindow (Log Window)
end_while
set #x (screenwidth - #logSizeX) / 2
set #y screenheight / 4
set windowpos 1 1 #logSizeX #logSizeY #handleLog
log mode compact
// 1 ищем необходимые окна - место заброса // карп 562, 329
set workwindow 0
showwindow #handlePilot
log Укажите точку заброса (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #zabrosX defX
set #zabrosY defY
set #zabrosAX defxabs
set #zabrosAY defyabs
set #carpX 562
set #carpY 329
set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа
set #fiderY #carpY - 44
set #zabros workwindow
// 2 ищем необходимые окна - окно игры и пилота в строке пуск
set workwindow 0
showwindow #handlePilot
log Укажите положение окна игры в строке пуск (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #igraX defxabs
set #igraY defyabs
set workwindow 0
showwindow #handlePilot
log Укажите положение окна UoPilot в строке пуск(Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #pilotX defxabs
set #pilotY defyabs
// 3 ищем необходимые окна - полоса еды
set workwindow 0
showwindow #handlePilot
log Укажите на полоску еды в ее середину (Ctrl+A)
while workwindow = 0
wait 200
showwindow #handlePilot
end_while
set #edaX defX
set #edaY defY
set #eda workwindow
move 416, 31 //относительные коорд рядом с бегунком лески
get mouse_pos #leskaRX #leskaY abs//считываем абсолютные координаты окна рядом с леской
set #leskaX #leskaRX + 1
move #leskaX #leskaY abs
set #LeskaW windowfromcursor
move 416, 12 //относительные коорд рядом с бегунком удочки
get mouse_pos #udaRX #udaY abs//считываем абсолютные координаты окна рядом с леской
set #udaX #udaRX + 1
move #udaX #udaY abs
set #udaW windowfromcursor
// 4 ищем необходимые окна - котелок
set workwindow 0
showwindow #handlePilot
log Укажите на котелок(Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #cotelX defX
set #cotelY defY
set #cotel workwindow
set workwindow #cotel
move #cotelX #cotelY
left #cotelX #cotelY
wait 400
// 5 ищем необходимые окна употребить
set workwindow 0
showwindow #handlePilot
log Укажите на кнопку употребить (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #upotrebitX defX
set #upotrebitY defY
set #upotrebit workwindow
send {Space}
// конец раздела начальных параметров
//хотим ли есть?
:eda
set workwindow #eda //окно полосок с едой
get color #edacolor 27, 53 //координаты голода
if #edacolor = 13032663 // цвет голода
log Кушаю
set #handleWin findwindow (Продукты)
showwindow #handleWin
wait random (1000) + 300
set workwindow #upotrebit
left 10 10
send {space}
goto eda
else
end_if
// Начало заброса
:zabros
wait random (1000) + 500
log Забрасываю Удочку
set workwindow #zabros
//проверяем первый ли заброс
set #a #a + 1
if #a = 1
move #carpX #carpY
left #carpX #carpY
goto klev
end_if
set #z random (2)
if #z = 1
log забросил мышкой
move #carpX #carpY
left #carpX #carpY
else
send t
log забросил кнопкой
end_if
:klev // цикл клева
set #j #j + 1
if #j > 30
log возвращаюсь в начало (возможно есть проблемы)
set #j 0
goto nachalo
end_if
wait random (1000) + 1500
get color #uda #fiderX, #fiderY// надо всегда проверять место заброса
if #uda = 255 // цвет удочки
goto klev
else
log Клюнуло, ВЫВАЖИВАЕМ!
end_if
//вываживаем
start_script 1
start_script 2
// проверка улова
:ulov
set #b #b + 1 //увеличение счетчика
if #b > 150
Log не вываживается, либо сорвалась
goto nachalo //сачек
end_if
set #a #a + 1 //увеличение счетчика
if #a > 10
send f //сачек
set #a 1
end_if
move #zabrosAX #zabrosAY abs
set #w windowfromcursor
set workwindow #w
if #w = #zabros// хендл окна заброса
goto ulov
else
set #riba #riba + 1
log поймалась #riba рыбка
stop_script 1
stop_script 2
wait random (1000) + 400
set #var findwindow (Садок)
set workwindow #var
send {Space}
wait random (1000) + 400
end_if
:nachalo
stop_script 1
stop_script 2
log начинаем все поновой
set #j 0
set #b 0
move #igraX, #igraY abs
set #w windowfromcursor
set workwindow #w
left #igraX, #igraY abs
wait random (300)
move #pilotX, #pilotY abs
left #pilotX, #pilotY abs
wait random (300)
set workwindow #LeskaW.0
send_down g
:leska
get color #leska 21, 7 // цвет полосы лески
if #leska = 4488494 // цвет без нагрузки
send_up g
else
goto leska
end_if
set workwindow #udaW.0
send_down h
:palka
get color #palka 18, 7 // цвет полосы лески
if #palka = 4488494 // цвет без нагрузки
send_up h
else
goto palka
end_if
get color #palka 18, 7 // цвет полосы лески
if #palka = 4488494 // цвет без нагрузки
if 18, 7 4488494
set linedelay 1 //установить задержку в 1 мсек.
get color #palka 18, 7 // цвет полосы лески
if #palka = 4488494 // цвет без нагрузки
if 18, 7 4488494
set linedelay 1 //установить задержку в 1 мсек.
Версия 2.0 Карп что добавлено: теперь пользовтелю ненадо НИЧЕГО настраивать в боте. Ему надо только зайти на локацию и достать удочку, проверить есть ли наживка и еда... Включаем бот и все) Функциональность пока без изменений (ловит, перезабрасывает, ест)
Планируется: продажа рыбы, закупка еды и наживки, расширение мест ловли
set linedelay 1 //установить задержку в 1 мсек.
// включение и настройка бота
// необходимо достать удочку и забросить в место ловли
// затем запускаем бот и следуем указаниям
// раздел проверки нужны ли начальные параметры
if #zabros > 0 and #eda > 0 and #cotel > 0 and #upotrebit > 0
goto eda
else
end_if
// этот раздел посвящен заданию начальных параметров
set #handlePilot findwindow ()
log #handlePilot
log close
log clear
log open
set #logSizeX 300
set #logSizeY 200
set #handleLog 0
while #handleLog = 0
set #handleLog findwindow (Log Window)
end_while
set #x (screenwidth - #logSizeX) / 2
set #y screenheight / 4
set windowpos 1 1 #logSizeX #logSizeY #handleLog
log mode compact
// окно заброса // карп 562, 329
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #zabros getwindow (#tmp next)
set #carpX 562
set #carpY 329
set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа
set #fiderY #carpY - 44
// окно - полоса еды
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #eda getwindow (#tmp next)
// окно - бегунок лески
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #LeskaW getwindow (#tmp next)
// окно - бегунок удочки
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #udaW getwindow (#tmp next)
// окно - котелок
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #cotel getwindow (#tmp child)
// окно употребить
set #ownerHandle findwindow (Продукты)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #upotrebit getwindow (#tmp next)
// конец поисков окон
//хотим ли есть?
:eda
set workwindow #eda //окно полосок с едой
get color #edacolor 27, 53 //координаты голода
if #edacolor = 13032663 // цвет голода
log Кушаю
set #handleWin findwindow (Продукты)
showwindow #handleWin
wait random (1000) + 300
set workwindow #upotrebit
left 10 10
send {space}
goto eda
else
end_if
// Начало заброса
:zabros
wait random (1000) + 500
log Забрасываю Удочку
set workwindow #zabros
//проверяем первый ли заброс
set #a #a + 1
if #a = 1
move #carpX #carpY
left #carpX #carpY
goto klev
end_if
set #z random (2)
if #z = 1
log забросил мышкой
move #carpX #carpY
left #carpX #carpY
else
send t
log забросил кнопкой
end_if
:klev // цикл клева
set #j #j + 1
if #j > 300
log возвращаюсь в начало (возможно есть проблемы)
set #j 0
goto nachalo
end_if
wait random (1000) + 1500
get color #uda #fiderX, #fiderY// надо всегда проверять место заброса
if #uda = 255 // цвет удочки
goto klev
else
log Клюнуло, ВЫВАЖИВАЕМ!
end_if
//вываживаем
start_script 1
start_script 2
// проверка улова
:ulov
set #b #b + 1 //увеличение счетчика
if #b > 1500
Log не вываживается, либо сорвалась
goto nachalo //сачек
end_if
set #a #a + 1 //увеличение счетчика
if #a > 50
send f //сачек
set #a 1
end_if
set #zabros workwindow
move #fiderX #fiderY
set #w windowfromcursor
set workwindow #w
if #w = #zabros// хендл окна заброса
goto ulov
else
set #riba #riba + 1
log поймалась #riba рыбка
stop_script 1
stop_script 2
wait random (1000) + 400
set #var findwindow (Садок)
set workwindow #var
send {Space}
wait random (1000) + 400
end_if
:nachalo
stop_script 1
stop_script 2
log начинаем все поновой
set #j 0
set #b 0
set linedelay 1 //установить задержку в 1 мсек.
set workwindow #LeskaW.4
send_down g
:leska
get color #leska 21, 7 // цвет полосы лески
if #leska = 4488494 // цвет без нагрузки
send_up g
else
goto leska
end_if
set linedelay 1 //установить задержку в 1 мсек.
set workwindow #udaW.4
send_down h
:palka
get color #palka 18, 7 // цвет полосы лески
if #palka = 4488494 // цвет без нагрузки
send_up h
else
goto palka
end_if
ребят подскажите как лучше выдергивать цифры из текста в окне. например в окне есть текст состоящий из 2х строк:
Рыб в садке: 27 / 300
Общий вес: 176,397 кг
Надо 27 выдернуть.
Наверняка у ког-то быстрые наработки есть.
Текст картинка или можно выделить мышкой?
set #ownerHandle findwindow (Садок)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #kolvo getwindow (#tmp next)
set $kolvo getwindowtext (#kolvo) // в этой переменной нужный нам текст :
//Рыб в садке: 27 / 300
//Общий вес: 176,397 кг
set $ws садке: // левое от числа слово
set #wlen size ( $ws ) // длина левого_слова
set $w2 / // правое от числа слово
set #n1 posex($ws $kolvo) // позиция в строке с которой начинается левое_слово
set #n2 posex($w2 $kolvo) // позиция в строке с которой начинается правое_слово
msg #n1 #n2
if ( #n1 > 0) and ( #n2 > 0 ) // если оба слова были найдены, то будем доставать число...
set #pos #n1 + #wlen // позиция в строке с которой начинается число
set #len #n2 - #pos // длина числа в символах
set $res copy($kolvo #pos #len) // получаем из строки нужную нам подстроку с числом
set #всего_рыбы $res // считаем сколько всего рыбы
msg Вы наловили уже #всего_рыбы рыбы! // Получили наше число
else
msg Вы вообще чтото ловили?! // неправильные исходные данные
end_if
end_script
такой вариант я вижу первый раз
Можно всё упростить:
set $kolvo Рыб в садке: 27 / 300
init_arr %a (1) $kolvo
log Вы наловили уже %a [1 4] рыбы!
stop_script
set $kolvo Рыб в садке: 27 / 300
init_arr %a (1) $kolvo
log Вы наловили уже %a [1 4] рыбы!
stop_script
set $kolvo Рыб в садке: 27 / 300
init_arr %a (1) $kolvo
log Вы наловили уже %a [1 4] рыбы!
set #fish %a [1 4]
stop_script
Блин, дерево окон тоже как и хендлы обновляется после перезапуска клиента. Получется способ который я применил не подходит( (а он был так хорош). Придется видимо возвращатся к кликам мышкой, и запросам от пользователя...
можно проходится по дереву окон и искать какой-то общий признак. Например, если в заголовке окна есть "/", значит - это наше окно. Так же можно под поиск использовать регекспы, что очень сильно облегчит создание шаблона с которым надо сравнивать окна.
придумал такой вариант. с помощью готового скрипта нахожу положение в дереве и хендл нужного окна на данные момент.
set #ownerHandle findwindow (Рыболовная база Озеро)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #childHandle getwindow (#tmp next)
set #ownerHandle findwindow (Рыболовная база Озеро)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp child)
:proverka
set #tmp getwindow (#tmp next)
set #childHandle getwindow (#tmp next)
set #a 80 // нужная нам длина
set #b 88 // нужная нам ширина
get windowpos #childHandle #x #y #ves #shirina
if #ves = #a and #shirina = #b
msg #childHandle нужное нам окно
else
goto proverka
end_if
end_script
ищи не по размеру, а по тексту. Есть же какой-то шаблон, например, 1-3 цифры, потом "/", еще сколько-то цифр, пробел и слово "тапок". По такому шаблону можно достаточно уверенно определить окно.
Регекспы: http://www.shtogrin.com/library/web/pcre/doc/pcre/
тогда ничего не понял.
Клиент игры там состоит из кучи окон, одни есть с названиями, такие как количество рыбы и т.д, другие являются просто кнопками без названий, у них есть только хендлы ну и размеры, и они постоянно меняются в дереве окон при перезагрузке клиента. Причем с названиями всего окна 3, а без названий гораздо больше. Мне для работы бота соответственно нужно определить хендлы порядка 10ти таких окон без названий. Вот пример http://c2n.me/3m6Od0E на скрине видно что текста окна нет. Есть максимум класс окна.
речь шла про конкретное окно с цифрами, для него данный метод подходит.
По поводу остальных увидеть бы дерево окон. В виндов сканере есть кнопочка соответствующая.
Вот дерево окон
http://clip2net.com/s/3m7tnaY
а в полностью раскрытом виде ветку можно?
+[66406] Рыболовная база Озеро {WindowsForms10.Window.8.app.0.378734a}
•[66410] {WindowsForms10.Window.8.app.0.378734a}
•[66412] {WindowsForms10.Window.8.app.0.378734a}
+[66414] {WindowsForms10.Window.8.app.0.378734a}
•[66416] {WindowsForms10.Window.8.app.0.378734a}
•[66418] {WindowsForms10.Window.8.app.0.378734a}
•[66420] {WindowsForms10.Window.8.app.0.378734a}
•[66422] {WindowsForms10.Window.8.app.0.378734a}
•[66424] {WindowsForms10.STATIC.app.0.378734a}
•[66426] {WindowsForms10.STATIC.app.0.378734a}
•[66428] {WindowsForms10.STATIC.app.0.378734a}
+[66914] {WindowsForms10.Window.8.app.0.378734a}
+[66916] {WindowsForms10.SysListView32.app.0.378734a}
•[66918] {SysHeader32}
•[132458] {WindowsForms10.STATIC.app.0.378734a}
•[66430] {WindowsForms10.Window.8.app.0.378734a}
•[66432] {WindowsForms10.Window.8.app.0.378734a}
•[66434] {WindowsForms10.Window.8.app.0.378734a}
•[66436] {WindowsForms10.STATIC.app.0.378734a}
•[66438] {WindowsForms10.STATIC.app.0.378734a}
•[66440] {WindowsForms10.STATIC.app.0.378734a}
•[66442] {WindowsForms10.Window.8.app.0.378734a}
•[66444] {WindowsForms10.STATIC.app.0.378734a}
•[66446] {WindowsForms10.Window.8.app.0.378734a}
•[66448] {WindowsForms10.STATIC.app.0.378734a}
•[66450] {WindowsForms10.Window.8.app.0.378734a}
•[66452] {WindowsForms10.Window.8.app.0.378734a}
•[66454] {WindowsForms10.STATIC.app.0.378734a}
•[66456] {WindowsForms10.Window.8.app.0.378734a}
•[66458] {WindowsForms10.STATIC.app.0.378734a}
•[66460] {WindowsForms10.Window.8.app.0.378734a}
•[66462] {WindowsForms10.STATIC.app.0.378734a}
•[66464] {WindowsForms10.Window.8.app.0.378734a}
•[66466] {WindowsForms10.Window.8.app.0.378734a}
•[66468] {WindowsForms10.Window.8.app.0.378734a}
•[66470] {WindowsForms10.Window.8.app.0.378734a}
•[66472] {WindowsForms10.Window.8.app.0.378734a}
•[66474] {WindowsForms10.Window.8.app.0.378734a}
•[66476] {WindowsForms10.Window.8.app.0.378734a}
•[66478] {WindowsForms10.Window.8.app.0.378734a}
•[66480] {WindowsForms10.Window.8.app.0.378734a}
•[66482] {WindowsForms10.Window.8.app.0.378734a}
•[66484] {WindowsForms10.Window.8.app.0.378734a}
•[66486] {WindowsForms10.Window.8.app.0.378734a}
•[66488] {WindowsForms10.STATIC.app.0.378734a}
•[66490] {WindowsForms10.Window.8.app.0.378734a}
•[66492] {WindowsForms10.Window.8.app.0.378734a}
•[66494] {WindowsForms10.Window.8.app.0.378734a}
+[66496] {WindowsForms10.Window.8.app.0.378734a}
•[66498] {WindowsForms10.STATIC.app.0.378734a}
•[66500] 4 510 545 руб. {WindowsForms10.STATIC.app.0.378734a}
•[66502] Время: {WindowsForms10.STATIC.app.0.378734a}
•[66504] 02:40 СР {WindowsForms10.STATIC.app.0.378734a}
•[66506] Деньги: {WindowsForms10.STATIC.app.0.378734a}
+[66938] {WindowsForms10.Window.8.app.0.378734a}
•[66940] Пополнить счет {WindowsForms10.STATIC.app.0.378734a}
•[66942] время МСК: 10:49 {WindowsForms10.STATIC.app.0.378734a}
•[66944] {WindowsForms10.STATIC.app.0.378734a}
•[66946] Форум Русской Рыбалки {WindowsForms10.STATIC.app.0.378734a}
•[66948] Оплачено 33 дн. {WindowsForms10.STATIC.app.0.378734a}
•[66950] Желаем вам приятной игры и отличного клева! Ответы на любые вопросы вы можете найти на нашем форуме. {WindowsForms10.STATIC.app.0.378734a}
•[66952] Добрый день strrrannik11 {WindowsForms10.STATIC.app.0.378734a}
•[66954] Второй {WindowsForms10.STATIC.app.0.378734a}
+[66508] {WindowsForms10.Window.8.app.0.378734a}
+[66510] {WindowsForms10.Window.8.app.0.378734a}
•[66512] {WindowsForms10.Window.8.app.0.378734a}
•[66514] Label1 {WindowsForms10.STATIC.app.0.378734a}
•[66516] {WindowsForms10.STATIC.app.0.378734a}
•[66518] {WindowsForms10.STATIC.app.0.378734a}
+[66930] {WindowsForms10.Window.8.app.0.378734a}
•[66932] Продлить на день {WindowsForms10.STATIC.app.0.378734a}
•[66934] Через час вас отправят на озеро. {WindowsForms10.STATIC.app.0.378734a}
•[66936] Закончилась путевка {WindowsForms10.STATIC.app.0.378734a}
•[132494] михась65 вышел {WindowsForms10.STATIC.app.0.378734a}
+[66520] {WindowsForms10.Window.8.app.0.378734a}
•[66522] {WindowsForms10.Window.8.app.0.378734a}
•[66524] {WindowsForms10.Window.8.app.0.378734a}
•[66526] {WindowsForms10.Window.8.app.0.378734a}
•[66528] {WindowsForms10.Window.8.app.0.378734a}
•[66530] {WindowsForms10.Window.8.app.0.378734a}
•[66532] {WindowsForms10.Window.8.app.0.378734a}
•[66534] {WindowsForms10.Window.8.app.0.378734a}
•[66536] {WindowsForms10.Window.8.app.0.378734a}
•[66538] {WindowsForms10.Window.8.app.0.378734a}
•[66540] {WindowsForms10.Window.8.app.0.378734a}
•[66542] {WindowsForms10.Window.8.app.0.378734a}
•[66544] {WindowsForms10.Window.8.app.0.378734a}
+[66546] {WindowsForms10.Window.8.app.0.378734a}
•[66548] {WindowsForms10.STATIC.app.0.378734a}
•[66550] {WindowsForms10.STATIC.app.0.378734a}
•[66552] {WindowsForms10.STATIC.app.0.378734a}
•[66554] {WindowsForms10.Window.8.app.0.378734a}
•[66556] {WindowsForms10.Window.8.app.0.378734a}
•[66558] {WindowsForms10.STATIC.app.0.378734a}
•[66560] Осталось путевки: не ограничено??Стоимость дня: 0 руб.??Рыбаков на базе: 28 {WindowsForms10.STATIC.app.0.378734a}
•[66562] {WindowsForms10.Window.8.app.0.378734a}
•[66564] {WindowsForms10.STATIC.app.0.378734a}
•[66566] {WindowsForms10.STATIC.app.0.378734a}
•[66568] Продлить путевку {WindowsForms10.STATIC.app.0.378734a}
•[66570] Озеро. Рыболовная база {WindowsForms10.STATIC.app.0.378734a}
•[66572] {WindowsForms10.STATIC.app.0.378734a}
Мусора жесть. В общем есть такая идея. Есть у нас некотрое дочернее окно которое необходимо найти. Можно попробовать к сочетанию координат добавить еще условие, что родительское окно имеет, например, 5 дочерних, если это не так, то наша ветка другая.
Можно еще через findimage в паре с windowfrompoint подергать хэндлы, но имхо это уже не так хорошо. Не люблю я таскать рисунки, да и при финдимидже уже не очень понятной становится необходимость хендлов. По хендлам работа - это шикарно имхо.
А через windowScanner окно именно скрытое? Просто оно может быть перекрыто, а статус иметь видимого.
Попробуй. В качестве параметра не принимает пока ничего, работает с рабочим окном.
Dll'ку закинуть рядом с exe пилота в папку Plugins.
set #a WindowStatus.minimized (fvvfds )
log минимизировано: #a
set #a WindowStatus.maximized (hdf)
log максимизировано: #a
set #a WindowStatus.visible (hdf)
log видимое: #a
set #a WindowStatus.enabled (hdf)
log доступно: #a
set #a WindowStatus.top (hdf)
log на переднем плане: #a
set #a WindowStatus.topParent (hdf)
log врехнее родительское: #a
Спасибо за советы, никак не добраться до компа было. Сегодня постараюсь отписать что получилось.
Перед этим выскакивает что запуск не возможен, т. к. отсутствует файл MSVCR120D.dll. Хотя файл есть. И все visial C++ установлены.
Возможно установлена нижняя версия редистов.
Попробуй эту версию.
И эту затестить на запуск. Тут использованы либы для работы с XP.
Прикрепленные файлы
WindowStatus.zip ( 10,87 килобайт )
Кол-во скачиваний: 1766
WindowStatus_120_xp.zip ( 10,83 килобайт )
Кол-во скачиваний: 1765
а которая xp?
Сделал все через windowfromcursor получился неплохой бот. Главное чтобы не перекрыто окно игры было пилотом или еще чем либо.
По сути все работает. надо теперь расширять места рыбалки. И сделать запрос места рыбалки от пользователся.
set #a 10
set #b 20
set #c 30
set %a [1] #a
set %a [2] #b
set %a [3] #c
set #z prompt (#a #b #c)
set #d %a [#z]
log #d
stop_script
сделал в боте возможность просмотра результата продажи рыбы. И решил для удобства сделать чтобы в логе суммировалось сколько уже денег заработано. Т.к. в окне где изначально выскакивает много текста о продаже надо было выдернуть одну цифру, а она еще вдобавок и с разделителями подается (например 111 234 154 руб.), долго соображал как сделать. В итоге получился такой вот интересный фрагмент:
//Блок информации сколько всего заработано денег за время работы скрипта
init_arr %a (1) $sellinfo
// ищем положение слова "сумме:" в массиве, причем оно повторяется и поэтому мы ищем с конца, нам необходимо последнее.
set #i 999
set $summa сумме: // левое от числа слово
set linedelay 0
:проверка
set $проверка %a [1 #i]
if_not $summa = $проверка
set #i #i - 1
goto проверка
end_if
// теперь ищем положение слова руб. оно вообще там часто повторяется, но т.к. нам известно предыдущее слово, мы ищем вперед от него.
set #r #i
set $руб руб. // правое от числа слово
:проверка2
set $проверка %a [1 #r]
if_not $руб = $проверка
set #r #r + 1
goto проверка2
end_if
//теперь составляем массив из всех цифр которые есть между этими словами
set #r #r -1
while_not #i = #r
set #i #i + 1
set $summ $summ %a [1 #i]
end_while
log $summ
init_arr %b (1) $summ
set $summa %b [1]
// теперь суммируем найденное число к предыдущему, и у нас ведется суммирование в течении всего действия скрипта.
set #summa #summa + $summa
log Всего заработаноденег: #summa руб.
send {Space}
set $summa //обнуляем текстовую переменную
set $summ //обнуляем текстовую переменную
set linedelay 1
else
log Всего заработаноденег: #summa руб.
end_if
Забанили) Видать нестоит меню обходить) продавал рыбу неуходя на базу с места ловли.
Перманент или на время? Продолжение банкета будет?
У меня ошибка когда рыбка клюнула http://prntscr.com/8r53wy
Попробуйте заменить #LeskaW.4 и #udaW.4 на #LeskaW.0 и #udaW.0
Автору скрипта напишите в личку, может ответит. Или попробуйте первые версии скрипта.
у вас не запущен скрипт в 4 вкладке. Скрипт ссылается на переменную в 4 вкладке, а т.к. скрипт не запущен(либо переменная не существует), то происходит данная ошибка.
вообще он пытается оттуда считать рабочее окно. У меня есть подозрение, что вы запускаете не тот скрипт. Точнее устаревшую версию, т.к. в новой уже красиво сделан поиск окон. Чтобы не было вылета достаточно привязать 4 вкладку и поставить ее на паузу.
чуть обманул. В 4 вкладке должна быть переменная #udaW в которой содержится хендл окна. В простейшем случае это:
set #udaW workwindow
это запомнит в переменную хендл рабочего окна.
а что должен делать?
А как идёт проверка поклёвки,по кончику удочки или по месту заброса???
помогите сделать бота на спининг и как бы под исправить этого бота что бы можно ловить было везде!
Пишите, спрашивайте - поможем.
Здесь просчитывается смещение координат относительно фидера. Т.е. на указанном расстоянии находится нужный в дальнейшем объект. Если в 2 словах, то да, вы поняли правильно.
[quote name='DarkMaster' date='23.10.2015, 2:04' post='216559']
Здесь просчитывается смещение координат относительно фидера. Т.е. на указанном расстоянии находится нужный в дальнейшем объект. Если в 2 словах, то да, вы поняли правильно.
[/quote
спасибо уже разобрался, бот наловил за ночь на 7 мил сома))
Спасибо тебе огромное!!
repeat 10
set workwindow #LeskaW.0
send_down g
if 434, 257 255
send_up g
goto ulov
end_if
end_repeat
goto eda
хотел сделать бот на спининг,но получилось всего 1 протяжка,после этого пишет"send_down - exceeded the number of keystrokes"
вот так
ну так а отжать то где? зажим идет каждый раз, а отжимает только в условии. Это не есть правильно.
я бы сделал флаг того, что кнопка уже зажата и не нажимал ее при этом. Сделайте дополнительный иф под зажатие
if #flag = 0
set #flag 1
сенды
end_if
if #flag = 0
set #flag 1
сенды
end_if
send_down g //зажали клавишу
while_not 434, 257 255 //пока не найден нужный цвет
wait 50
end_while
send_up g //отжали клавишу
Всем привет, а есть бот на прокачку наживки в русской рыбалке? Что бы н копал у меня всю ночь.
а на РФ4 есть бот ? Тех же карасиков в Комарино ловить?
Всем привет
А есть скрипт для спининговой ловли?
set linedelay 1 //установить задержку в 1 мсек.
// включение и настройка бота
// необходимо достать удочку и забросить в место ловли
// затем запускаем бот и следуем указаниям
// раздел проверки нужны ли начальные параметры
if #zabros > 0 and #eda > 0 and #cotel > 0 and #upotrebit > 0
goto eda
else
end_if
// этот раздел посвящен заданию начальных параметров
set #handlePilot findwindow ()
log #handlePilot
log close
log clear
log open
set #logSizeX 300
set #logSizeY 200
set #handleLog 0
while #handleLog = 0
set #handleLog findwindow (Log Window)
end_while
set #x (screenwidth - #logSizeX) / 2
set #y screenheight / 4
set windowpos 1 1 #logSizeX #logSizeY #handleLog
log mode compact
// окно заброса // карп 562, 329
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #zabros getwindow (#tmp next)
set #carpX 562
set #carpY 329
set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа
set #fiderY #carpY - 44
// окно - полоса еды
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #eda getwindow (#tmp next)
// окно - бегунок лески
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #LeskaW getwindow (#tmp next)
// окно - бегунок удочки
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #udaW getwindow (#tmp next)
// окно - котелок
set #ownerHandle findwindow (Рыбхоз: Карповая заводь)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #cotel getwindow (#tmp child)
// окно употребить
set #ownerHandle findwindow (Продукты)
set #tmp getwindow (#ownerHandle child)
set #tmp getwindow (#tmp next)
set #tmp getwindow (#tmp next)
set #upotrebit getwindow (#tmp next)
// конец поисков окон
//хотим ли есть?
:eda
set workwindow #eda //окно полосок с едой
get color #edacolor 27, 53 //координаты голода
if #edacolor = 13032663 // цвет голода
log Кушаю
set #handleWin findwindow (Продукты)
showwindow #handleWin
wait random (1000) + 300
set workwindow #upotrebit
left 10 10
send {space}
goto eda
else
end_if
// Начало заброса
:zabros
wait random (1000) + 500
log Забрасываю Удочку
set workwindow #zabros
//проверяем первый ли заброс
set #a #a + 1
if #a = 1
move #carpX #carpY
left #carpX #carpY
goto klev
end_if
set #z random (2)
if #z = 1
log забросил мышкой
move #carpX #carpY
left #carpX #carpY
else
send t
log забросил кнопкой
end_if
:klev // цикл клева
set #j #j + 1
if #j > 300
log возвращаюсь в начало (возможно есть проблемы)
set #j 0
goto nachalo
end_if
wait random (1000) + 1500
get color #uda #fiderX, #fiderY// надо всегда проверять место заброса
if #uda = 255 // цвет удочки
goto klev
else
log Клюнуло, ВЫВАЖИВАЕМ!
end_if
//вываживаем
start_script 1
start_script 2
// проверка улова
:ulov
set #b #b + 1 //увеличение счетчика
if #b > 1500
Log не вываживается, либо сорвалась
goto nachalo //сачек
end_if
set #a #a + 1 //увеличение счетчика
if #a > 50
send f //сачек
set #a 1
end_if
set #zabros workwindow
move #fiderX #fiderY
set #w windowfromcursor
set workwindow #w
if #w = #zabros// хендл окна заброса
goto ulov
else
set #riba #riba + 1
log поймалась #riba рыбка
stop_script 1
stop_script 2
wait random (1000) + 400
set #var findwindow (Садок)
set workwindow #var
send {Space}
wait random (1000) + 400
end_if
:nachalo
stop_script 1
stop_script 2
log начинаем все поновой
set #j 0
set #b 0
set linedelay 1 //установить задержку в 1 мсек.
set workwindow #LeskaW.4
send_down g
:leska
get color #leska 21, 7 // цвет полосы лески
if #leska = 4488494 // цвет без нагрузки
send_up g
else
goto leska
end_if
set linedelay 1 //установить задержку в 1 мсек.
set workwindow #udaW.4
send_down h
:palka
get color #palka 18, 7 // цвет полосы лески
if #palka = 4488494 // цвет без нагрузки
send_up h
else
goto palka
end_if
// включение и настройка бота
// необходимо достать удочку и забросить в место ловли
// затем запускаем бот и следуем указаниям
// раздел проверки нужны ли начальные параметры
if #zabros > 0 and #eda > 0 and #cotel > 0 and #upotrebit > 0
goto eda
else
end_if
// этот раздел посвящен заданию начальных параметров
set #handlePilot findwindow ()
log #handlePilot
log close
log clear
log open
set #logSizeX 300
set #logSizeY 200
set #handleLog 0
while #handleLog = 0
set #handleLog findwindow (Log Window)
end_while
set #x (screenwidth - #logSizeX) / 2
set #y screenheight / 4
set windowpos 1 1 #logSizeX #logSizeY #handleLog
log mode compact
// 1 ищем необходимые окна - место заброса // карп 562, 329
set workwindow 0
showwindow #handlePilot
log Укажите точку заброса (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #zabrosX defX
set #zabrosY defY
set #zabrosAX defxabs
set #zabrosAY defyabs
set #carpX 562
set #carpY 329
set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа
set #fiderY #carpY - 44
set #zabros workwindow
// 2 ищем необходимые окна - окно игры и пилота в строке пуск
set workwindow 0
showwindow #handlePilot
log Укажите положение окна игры в строке пуск (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #igraX defxabs
set #igraY defyabs
set workwindow 0
showwindow #handlePilot
log Укажите положение окна UoPilot в строке пуск(Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #pilotX defxabs
set #pilotY defyabs
// 3 ищем необходимые окна - полоса еды
set workwindow 0
showwindow #handlePilot
log Укажите на полоску еды в ее середину (Ctrl+A)
while workwindow = 0
wait 200
showwindow #handlePilot
end_while
set #edaX defX
set #edaY defY
set #eda workwindow
move 416, 31 //относительные коорд рядом с бегунком лески
get mouse_pos #leskaRX #leskaY abs//считываем абсолютные координаты окна рядом с леской
set #leskaX #leskaRX + 1
move #leskaX #leskaY abs
set #LeskaW windowfromcursor
move 416, 12 //относительные коорд рядом с бегунком удочки
get mouse_pos #udaRX #udaY abs//считываем абсолютные координаты окна рядом с леской
set #udaX #udaRX + 1
move #udaX #udaY abs
set #udaW windowfromcursor
// 4 ищем необходимые окна - котелок
set workwindow 0
showwindow #handlePilot
log Укажите на котелок(Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #cotelX defX
set #cotelY defY
set #cotel workwindow
set workwindow #cotel
move #cotelX #cotelY
left #cotelX #cotelY
wait 400
// 5 ищем необходимые окна употребить
set workwindow 0
showwindow #handlePilot
log Укажите на кнопку употребить (Ctrl+A)
while workwindow = 0
wait 100
showwindow #handlePilot
end_while
set #upotrebitX defX
set #upotrebitY defY
set #upotrebit workwindow
send {Space}
// конец раздела начальных параметров
//хотим ли есть?
:eda
set workwindow #eda //окно полосок с едой
get color #edacolor 27, 53 //координаты голода
if #edacolor = 13032663 // цвет голода
log Кушаю
set #handleWin findwindow (Продукты)
showwindow #handleWin
wait random (1000) + 300
set workwindow #upotrebit
left 10 10
send {space}
goto eda
else
end_if
// Начало заброса
:zabros
wait random (1000) + 500
log Забрасываю Удочку
set workwindow #zabros
//проверяем первый ли заброс
set #a #a + 1
if #a = 1
move #carpX #carpY
left #carpX #carpY
goto klev
end_if
set #z random (2)
if #z = 1
log забросил мышкой
move #carpX #carpY
left #carpX #carpY
else
send t
log забросил кнопкой
end_if
:klev // цикл клева
set #j #j + 1
if #j > 30
log возвращаюсь в начало (возможно есть проблемы)
set #j 0
goto nachalo
end_if
wait random (1000) + 1500
get color #uda #fiderX, #fiderY// надо всегда проверять место заброса
if #uda = 255 // цвет удочки
goto klev
else
log Клюнуло, ВЫВАЖИВАЕМ!
end_if
//вываживаем
start_script 1
start_script 2
// проверка улова
:ulov
set #b #b + 1 //увеличение счетчика
if #b > 150
Log не вываживается, либо сорвалась
goto nachalo //сачек
end_if
set #a #a + 1 //увеличение счетчика
if #a > 10
send f //сачек
set #a 1
end_if
move #zabrosAX #zabrosAY abs
set #w windowfromcursor
set workwindow #w
if #w = #zabros// хендл окна заброса
goto ulov
else
set #riba #riba + 1
log поймалась #riba рыбка
stop_script 1
stop_script 2
wait random (1000) + 400
set #var findwindow (Садок)
set workwindow #var
send {Space}
wait random (1000) + 400
end_if
:nachalo
stop_script 1
stop_script 2
log начинаем все поновой
set #j 0
set #b 0
move #igraX, #igraY abs
set #w windowfromcursor
set workwindow #w
left #igraX, #igraY abs
wait random (300)
move #pilotX, #pilotY abs
left #pilotX, #pilotY abs
wait random (300)
set workwindow #LeskaW.0
send_down g
:leska
get color #leska 21, 7 // цвет полосы лески
if #leska = 4488494 // цвет без нагрузки
send_up g
else
goto leska
end_if
set workwindow #udaW.0
send_down h
:palka
get color #palka 18, 7 // цвет полосы лески
if #palka = 4488494 // цвет без нагрузки
send_up h
else
goto palka
end_if
set #w windowfromcursor
set workwindow #w
//проверка еды
send_up f
:eda
get color #eda 196, 620 abs // надо всегда проверять место заброса
if #eda = 13032663 // цвет нет еды
move 340, 695 abs
left 340, 695 abs
wait 1s
move 854, 444 abs
left 854, 444 abs
wait 1s
left 916, 191 abs
move 916, 191 abs
wait 300
goto eda
else
wait random (1000)
end_if
wait random (400)
// начало ловли
move 757, 359 abs
set #w windowfromcursor
set workwindow #w
left 757, 359 abs
wait 1s
//send t // нажать t
wait random (1000)
// set $a 0 // для старта условного цикла нужна переменная $a с значением 0
:klev // цикл клева
get color #uda 725, 320 abs// надо всегда проверять место заброса
if #uda = 255 // цвет удочки в абс коорд
goto klev
else
send_down g
end_if
//начало выуживания
:leska
set #a #a + 1 //увеличение счетчика
if #a > 50
goto nachalo //перейти на метку
end_if
set #w windowfromcursor
set workwindow #w
get color #leska 648, 570 abs // цвет полосы лески
if #leska = 7117147 // цвет без нагрузки
send_up g
send_down h
wait 400
send_up h
send_down g
goto leska
else
goto ulov
end_if
//goto ulov
:palka
get color #palka 622, 555 abs // цвет полосы удочки
if #palka = 4356908 // цвет без нагрузки
send_up h
send_down g
send_down f
else
end_if
//проверка вылова
:ulov
send f
get color #ulov 443, 88 abs// цвет полосы окна
if #ulov = 1328284 // цвет окна
move 443, 88 abs
set #w windowfromcursor
set workwindow #w
send {Space}
wait random (1000)
//set workwindow 591816
else
goto leska
end_if
send_up f
wait random (1000)
:nachalo
start_script 2
end_script // завершиние работы скрипта закоментированно, поэтому работать код будет до ручного выключения
Какой из скриптов привделенных выше вы используете?
КАРП 2.0 должен быть в 4 вкладке... Здоровья автору)
либо исправьте номер вкладки в скрипте 1
set workwindow #LeskaW.4
и номер вкладки в скрипте 2
set workwindow #udaW.4
на 0 вместо 4
проверьте соответсвуют ли координаты вашему разрешению:
set #carpX 562
set #carpY 329
set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа
set #fiderY #carpY - 44
Я игру в глаза не видел, как и скрипт никогда не использовал. Исходя из имен переменных и коммента - это координаты карпа и возможное их отклонение.
в 1 и 2 скрипт вставить встроки:
log script 1 started
и
log script 2 started
соответвственно номеров скриптов.
скорее всего не соответствуют введенные точка/цвет
=)
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)