|
|
|
Создал Бот для Русской рыбалки, Игра Русская рыбалка. Ловля карпа. |
|
|
KillFors |
26.12.2020, 19:15
|
Registred
Сообщений: 9
Регистрация: 26.12.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.838
Возраст: 25
|
Цитата(Strannik @ 4.8.2015, 13:37) Версия 2.0 Карп что добавлено: теперь пользовтелю ненадо НИЧЕГО настраивать в боте. Ему надо только зайти на локацию и достать удочку, проверить есть ли наживка и еда... Включаем бот и все) Функциональность пока без изменений (ловит, перезабрасывает, ест) Планируется: продажа рыбы, закупка еды и наживки, расширение мест ловли КАРП 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
script 1
Код 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
script 2
Код 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
Порядок запуска: качаем юпилот (можно прямо тут на форуме), открываем вкладку со скриптами и там делаем 3 вкладки со скриптами. Далее запускаем игру, затариваемся наживкой и едой, заходим на локацию Рыбхоз - карповая заводь. Достаем Донку, включаем бот... Надо открыть все 3 скрипта в пилоте, чтобы они так и назывались (0, 1, 2) Далее так же планирую привязать их к окну пилота, чтобы при запуске пилота сразу подгружались эти скрипты. Предыдущие версии версия 1.0
Готова версия 1.0 кодовое название КАРП Вот собственно версия которая будет работать у всех. Бот запрашивает место ловли, затем сам ловит рыбу, сам кушает, сам достает сачек. Ведет посчет количества выловленной рыбы. Делает перезабросы и т.д. Пользователю остается следить чтобы была наживка и еда в наличии, ну и своевременно продавать рыбу. Локация, пока только рыбхоз - карповая заводь. Планирую дальше: минимизировать запросы от пользователя, сделать возможность боту самому пополнять запасы наживки и еды, а так же продавать выловленную рыбу. Плюс расширить места ловли (или сделать их универсальными) [spoiler=script 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)
script 1
Код set workwindow #LeskaW.0 send_down g :leska get color #leska 21, 7 // цвет полосы лески if #leska = 4488494 // цвет без нагрузки send_up g else goto leska end_if
script 2
Код set workwindow #udaW.0 send_down h :palka get color #palka 18, 7 // цвет полосы лески if #palka = 4488494 // цвет без нагрузки send_up h else goto palka end_if
[/spoiler] версия 0.0
Решил попробовать написать простенький бот для такой незатейливой игры как Русская рыбалка. Бот конечно получился под меня, т.к. координаты завязаны на абсолютные значения моего экрана. Впринципе любой кто немного соображает сможет перенастроить под себя перебив клики мышкой. Если заморочиться то можно сделать бот с привязкой к окну, и вычислением координат от краев, но это если только делать не для себя а, например на продажу. Итак. Бот сам ест, сам забрасывает донку, когда клюет он выуживает рыбу и достает ее сачком, далее заного проверяет не голодны ли вы и все по новой. Я его сделал для ловли карпа на локации Рыбхоз. Карповая заводь. за 1 час безостоновочной работы (пака я уехал на обед с работы) он выловил на 800к зачетного карпа. максимальный вес 36кг за шт. Главное чтобы была наживка и еда в наличии и хорошая снасть. С какими проблемами я столкнулся: 1) Бот категорически не хотел выполнять команду Send на домашнем компе (перелопатив форум понял что это скорее всего из-за системы, поэтому тупо сделал все на ноуте, на котором команда выполнялась отлично) 2) после вылва рыбы, закрытия окна с уловом, он категорически не хотел забрасывать удочку заново. Долго парился как это исправить (и привязку окна под курсором и просто прописывая номер активного окна, бот не закидывал удочку, а просто как-будто игнорировал эти строки. (исправил таким образом: в конце скрипта запускал другой скрипт, который просто переключит на рабочем столе окна, тыкнет на окно рыбалки и опять на окно юпилота, далее сам остановиться и запустит скрипт основной, а тот в свою очередь заного поймает окно рыбалки и все начинает работать. вот собственно сам код. (с радостью приму предложения по оптимизации и конструктивную критику.) [spoiler=скрипт основной] Код 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 // завершиние работы скрипта закоментированно, поэтому работать код будет до ручного выключения
[/spoiler] При запуске скрипта он просто сворачивает все окна что я делаю не так
|
|
|
|
KillFors |
30.12.2020, 16:52
|
Registred
Сообщений: 9
Регистрация: 26.12.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.838
Возраст: 25
|
Цитата(DarkMaster @ 27.12.2020, 16:20) я бы начал с этого. Вообще какой из скриптов используете? Там их два. В лог что-нибудь пишет?
Все данные действия были проделаны. В логе пишет: удочка заброшена поклёвка выводим рыбу забрасываем удочку А на самом деле ничего не происходит изредка забрасывает удочку ивсё
|
|
|
|
KillFors |
15.1.2021, 14:57
|
Registred
Сообщений: 9
Регистрация: 26.12.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.838
Возраст: 25
|
Цитата(DarkMaster @ 31.12.2020, 11:46) Нуменрация вкладок со скриптами в пилоте соблюдена?
да соблюдена
|
|
|
|
KillFors |
17.1.2021, 9:12
|
Registred
Сообщений: 9
Регистрация: 26.12.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.838
Возраст: 25
|
Цитата(DarkMaster @ 15.1.2021, 16:32) Какой из скриптов привделенных выше вы используете?
КАРП 2.0 КАРП 2.0(ставлю в 0 скрпт) 1 скрипт в 1 2 скрипт в 2
|
|
|
|
KillFors |
19.1.2021, 13:01
|
Registred
Сообщений: 9
Регистрация: 26.12.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.838
Возраст: 25
|
Цитата(DarkMaster @ 17.1.2021, 13:37) КАРП 2.0 должен быть в 4 вкладке... Здоровья автору) либо исправьте номер вкладки в скрипте 1 set workwindow #LeskaW.4 и номер вкладки в скрипте 2 set workwindow #udaW.4 на 0 вместо 4
4 поменял на 0 Стал правильно производить заброс. Правильно видит поклёвку. Но не вываживает просто достаёт подсак постоянно и все
|
|
|
|
KillFors |
19.1.2021, 21:01
|
Registred
Сообщений: 9
Регистрация: 26.12.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.838
Возраст: 25
|
Цитата(DarkMaster @ 19.1.2021, 13:54) проверьте соответсвуют ли координаты вашему разрешению: set #carpX 562 set #carpY 329 set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа set #fiderY #carpY - 44
Извиняюсь, но конкретно не понял координаты чего нужно поменять для того что бы началось вываживание рыбы. Строчки: set #carpX 562 set #carpY 329 set #fiderX #carpX - 32 //дельта места заброса и конца фидера на карпа set #fiderY #carpY - 44 Я нашел в скрипте.
|
|
|
|
KillFors |
20.1.2021, 13:06
|
Registred
Сообщений: 9
Регистрация: 26.12.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.838
Возраст: 25
|
Цитата(DarkMaster @ 20.1.2021, 13:01) Я игру в глаза не видел, как и скрипт никогда не использовал. Исходя из имен переменных и коммента - это координаты карпа и возможное их отклонение.
Я так понимаю это точка места заброса, заброс происходит правильно. Не происходит вываживание рыбы.(то есть это скрипт 1-2 вываживание происходит по нажатию клавиш G/H по очередности.)
|
|
|
|
KillFors |
20.1.2021, 14:19
|
Registred
Сообщений: 9
Регистрация: 26.12.2020 Группа: Пользователи Наличность: 0
Пользователь №: 19.838
Возраст: 25
|
Цитата(DarkMaster @ 20.1.2021, 13:24) Это точка считывания успешности поклевки.
Напишите, пожалуйста, очередность действий которые должны происходить в игре и ту очередность, которая происходит в скрипте.
происходит автоматический заброс удилища в нужную точку(это все правильно ) ждет поклевки(правильно) произошла поклевка(правильно, скрипт все это понимает) в логе пишет что произошла поклевка начинаем вываживание рыбы.(и вот тут начинается) рыбу он не вываживает а просто достаёт подсачек. Ощущение что нестартуют вот эти скрипты log Клюнуло, ВЫВАЖИВАЕМ! end_if //вываживаем start_script 1 start_script 2 А подсачек постоянно достаётся как и должно быть во время поклёвки send f //сачек set #a 1 end_if Выше Вы писали что в скриптах 1-2 поменять 4 на 0. эти действия были произведены
|
|
|
|
DarkMaster |
20.1.2021, 15:10
|
Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008 Группа: Супермодераторы Наличность: 27724
Пользователь №: 11.279
|
в 1 и 2 скрипт вставить встроки: log script 1 started и log script 2 started соответвственно номеров скриптов. скорее всего не соответствуют введенные точка/цвет Цитата get color #leska 21, 7 // цвет полосы лески if #leska = 4488494 // цвет без нагрузки и Цитата get color #palka 18, 7 // цвет полосы лески if #palka = 4488494 // цвет без нагрузки так же вставьте строки: log script 1 if #leska = 4488494 в первый скрипт перед if'ом. и log script 2 if #palka = 4488494 во второй скрипт перед ифом. результаты лога сюда
--------------------
Скрипты UOPilot под заказ. Консультации по UOpilot 15$/час. Услуги Lua разработчика (не пилот, проекты, постоянка) Disсоrd: Kov____
|
|
|
|
|
|
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|