Здравствуйте, гость ( Вход | Регистрация )

7 страниц V  1 2 3 > »   
Ответить в эту темуОткрыть новую тему
> Создал Бот для Русской рыбалки, Игра Русская рыбалка. Ловля карпа.
Strannik
сообщение 4.8.2015, 13:37
Сообщение #1


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Версия 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]
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.8.2015, 13:55
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.596
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28801
Пользователь №: 11.279



Тему прилепил. Кодебоксы лучше заменить на код+спойлер.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Писать в личку.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 4.8.2015, 14:17
Сообщение #3


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Цитата(DarkMaster @ 4.8.2015, 14:55) *

Тему прилепил. Кодебоксы лучше заменить на код+спойлер.

спасибо, сейчас исправлю.
Строго не судите, 1й скрипт в жизни написал, который работает (IMG:style_emoticons/default/biggrin.gif)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 4.8.2015, 14:44
Сообщение #4


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Скажите, а есть в юпилот возможность, чтобы скрипт запрашивал перед певрым забросом удочки ввод координат? допустим мы нажимаем старт скрипта, и выскакивает окно куда втавятся координаты после нажатия Ctrl+A. тогда если переделать приаязки кликов мыши не к абсолютным координатам а к краям окна, то можно сделать бот универсальный для любой локации, остается лишь достать удочку и указать место заброса.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 4.8.2015, 15:07
Сообщение #5


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 27353
Пользователь №: 16.971
Возраст: 29



http://uopilot.tati.pro/index.php?title=Prompt
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.8.2015, 15:20
Сообщение #6


***********

Модератор UOPilot
Сообщений: 9.596
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28801
Пользователь №: 11.279



Цитата
Скажите, а есть в юпилот возможность, чтобы скрипт запрашивал перед певрым забросом удочки ввод координат? допустим мы нажимаем старт скрипта, и выскакивает окно куда втавятся координаты после нажатия Ctrl+A. тогда если переделать приаязки кликов мыши не к абсолютным координатам а к краям окна, то можно сделать бот универсальный для любой локации, остается лишь достать удочку и указать место заброса.

Можно чуть схитрить. Можно присвоить переменной рабочего окна wokwindow, скажем, -1 и ждать пока изменится значение этой переменной. Пользователь же нажмет ctrl+a в нужную точку и ее можно будет использовать непосредственно в скрипте.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Писать в личку.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 4.8.2015, 16:16
Сообщение #7


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Цитата(cirus @ 4.8.2015, 16:07) *


интересная команда, спасибо.

эх, буду наверное завтра начинать писать нормальный красивый код для использования любым пользователем. А то в моем много оставшейся от черновой версии ненужных коментов и строк которые по факту не используются а пропускаются переходами.

Цитата(DarkMaster @ 4.8.2015, 16:20) *

Можно чуть схитрить. Можно присвоить переменной рабочего окна wokwindow, скажем, -1 и ждать пока изменится значение этой переменной. Пользователь же нажмет ctrl+a в нужную точку и ее можно будет использовать непосредственно в скрипте.


Кстати можно вначале сделать проверку на переменную wokwindow и если она как раз скажем -1 изначально то соответственно запросить prompt и указать точку заброса, там и окно подвяжется и точка заброса определится. Единственное надо продумать удобный способ в случае необходимости эту точку поменять не перезапуская пилот.

P.S. на данный момент за 2 часа работы бота я нафармил денег больше чем за 2 вечера игры) Надеюсь не забанят, хотя игра так себе, интересен скорее сам процесс написания бота, нежели игра.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 4.8.2015, 17:05
Сообщение #8


***********

Модератор UOPilot
Сообщений: 9.596
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28801
Пользователь №: 11.279



Цитата

Кстати можно вначале сделать проверку на переменную wokwindow и если она как раз скажем -1 изначально то соответственно запросить prompt и указать точку заброса

Я для такого запроса использовал вывод в лог. Тут есть пример:
http://forum.uokit.com/index.php?showtopic=26742


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Писать в личку.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 5.8.2015, 15:52
Сообщение #9


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Цитата(DarkMaster @ 4.8.2015, 18:05) *

Я для такого запроса использовал вывод в лог. Тут есть пример:
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

Все работает, но только пока я не закрою игру, игру если открыть хендлы обновятся...
Соответственно хендлы я нашел через сканер. Как можно найти хендлы этих окон скриптом? Допустим я открыл игру, нажал ctrl+a в любом месте дальше бот работает... Почитал тему твою, я так понимаю там окна называться как-то должны(иметь текстовое название, у меня я так понимаю только родительское окно имеет его). Сканер пишет только хендлы, никакого текста в окнах нет. http://clip2net.com/s/3lJje2p
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.8.2015, 15:55
Сообщение #10


***********

Модератор UOPilot
Сообщений: 9.596
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28801
Пользователь №: 11.279



http://forum.uokit.com/index.php?showtopic=26742
попробуйте.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Писать в личку.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 5.8.2015, 16:26
Сообщение #11


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Цитата(DarkMaster @ 5.8.2015, 16:55) *

я не совсем понял итог этого скрипта. Он написал в переменные хендлы тех двух окон что я указал вначале?
Просто у меня получается игра состоит из множества окон, мне надо будет на каждое тогда Ctrl+A юзать?. Или я совсем не допонял....
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 5.8.2015, 17:12
Сообщение #12


***********

Модератор UOPilot
Сообщений: 9.596
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28801
Пользователь №: 11.279



Итог - вам дан скрипт, который возвращает хендл того самого окошка без названия.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Писать в личку.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 5.8.2015, 19:13
Сообщение #13


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Цитата(DarkMaster @ 5.8.2015, 17:12) *

Итог - вам дан скрипт, который возвращает хендл того самого окошка без названия.

Просто судя по скрипту, вы хендлы задаете сразу, а потом идет проверка действительно ли 2е окно дочернее?

У меня в игре все кнопки это отдельные окна. и в некоторых открываются меню. Всего я насчитал порядка 5ти нужных мне кнопок, но проблема в том что 2 из них нажимаются в всплывающем меню, которое если у пользователя запрашивать показать его c помощью Ctrl+A, при переходе на окно пилота - будет закрываться.

как раз для этого небольшого куска, который я приложил выше. этот способ и не подойдет т.к. там есть это злополучное меню с едой.
небольшой кусок для наглядности

Код

: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://clip2net.com/s/3lJZfjW
далее http://c2n.me/3lJZQyd

Может так сделать? навести мышь билзко к котелку в окне с бегунками здоровья, далее считать абсолютные координаты мыши? (если так можно) далее прибавить к этим координатам координаты чтобы сместиться гарантировано на нужную кнопку, потом считать хендл окна под курсором... и т.д. получается мы работаем в абсолютных координатах, но не привязаны к положению окна.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 5.8.2015, 19:30
Сообщение #14


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



get mouse_pos <переменнаяX> <переменнаяY> [abs] нашел) завтра опробую.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 6.8.2015, 2:05
Сообщение #15


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 27353
Пользователь №: 16.971
Возраст: 29



Цитата
есть мысли как это обойти?

http://uopilot.tati.pro/index.php?title=WindowFromCursor
Или можно искать кнопки с помощью Findimage и делать клик по найденным координатам.
Цитата
Скажите, а есть в юпилот возможность, чтобы скрипт запрашивал перед певрым забросом удочки ввод координат?

Для координат можно использовать такой вариант:
Код
init_arr %a (1) prompt()
log %a [1 1]
log %a [1 2]
stop_script
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.8.2015, 5:50
Сообщение #16


***********

Модератор UOPilot
Сообщений: 9.596
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28801
Пользователь №: 11.279



Цитата
Для координат можно использовать такой вариант:

Насколько я понимаю, то имеется ввиду произвольная точка. Поэтому ctrl+a и дальше используем defx и defy.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Писать в личку.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 6.8.2015, 19:53
Сообщение #17


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Спасибо за помощь, хорошо что есть форум. Использую вот этот кусок для пошагового запроса от пользователя всех кнопок перед началом работы бота, удобно получается.
Код

// запрос места ловли (сразу узнаем и хендл окна и координаты точки заброса
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
// и т.д. пошагово

По идее в итоге должно получится что пользователь задаст все кнопки а потом скрипт будет проверять заданы они или нет и работать постоянно. Отальные параметры дело техники. на след неделе попробую закончить рабочую версию.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 6.8.2015, 21:54
Сообщение #18


***********

Модератор UOPilot
Сообщений: 9.596
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28801
Пользователь №: 11.279



Цитата
get mouse_pos #zabrosX #zabrosY

Можно убрать и использовать defx и defy зарезервированные переменные. Они содержат в себе координаты, которые забирались по ctrl+a. Т.е. имхо более корректно будет заменить на:
Код
set #zabrosX defX
set #zabrosY defY


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Писать в личку.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Strannik
сообщение 10.8.2015, 15:22
Сообщение #19


**

Neophyte
Сообщений: 33
Регистрация: 4.8.2015
Группа: Пользователи
Наличность: 0
Пользователь №: 17.574
Возраст: 28



Цитата(DarkMaster @ 6.8.2015, 21:54) *

Можно убрать и использовать defx и defy зарезервированные переменные. Они содержат в себе координаты, которые забирались по ctrl+a. Т.е. имхо более корректно будет заменить на:
Код
set #zabrosX defX
set #zabrosY defY


Спасибо за пример, принял к исправлению. Почти закончил неплохой вариант скрипта, осталось концовку подправить. Хочу вообще уйти от абсолютных координат, а для этого надоа обойти проблему: когда рыба выловлена у меня выскакивает окно. по сути его надо обнаружить, закрыть и начать скрипт снова. Как определить выскочило окно или еще нет. раньше я распознавал цвет в точке где выскакивает это окно, но тогда использовал абсолютные координаты. Как еще можно это сделать? может чтото типа showwindow?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 10.8.2015, 17:22
Сообщение #20


***********

Модератор UOPilot
Сообщений: 9.596
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 28801
Пользователь №: 11.279



Цитата
Как еще можно это сделать?

findimage
http://uopilot.tati.pro/index.php?title=Findimage


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Писать в личку.
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

7 страниц V  1 2 3 > » 
Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 10.11.2024, 20:55
Designed by Nickostyle