Помощь - Поиск - Пользователи - Календарь
Полная версия: Клик по одинаковым картинкам и другие вопросы
UoKit.com Форумы > Кликер > UO Pilot
Чекист
Доброго времени суток, Ув. Форумчане. Очень надеюсь на вашу помощь по нескольким вопросам.


= = = = = = = = = = = = = = = = 1(Решено) = = = = = = = = = = = = = = = =


1. Клик на случайную картинку


1. Есть скрипт:

Код
            
set $music2 findimage (205, 131 631, 1008 abs(D:\Работа\uopilot\AdobePremier\Images\music2.bmp) %c 2 100 -1 abs)
            if $music2  > 0

            
            log видим весь плейлист
                set #x %c[1 1]
                set #y %c[1 2]

                kleft #x, #y abs
                wait 300



            end_if



Есть вертикальный список в данных координатах, с одинаковыми картинками (значок mp3) - их много, мне нужно сделать так, что бы бот рандомно кликал на одну из них - т.е. находит 33 одинаковых картинок и каждый раз при запуске этого скрипта - бот должен делать случайный клик на одну из этих найденных картинок. На данный момент бот кликает именно по самой верхней найденной и все.

Нажмите для просмотра прикрепленного файла



= = = = = = = = = = = = = = = = 2 = = = = = = = = = = = = = = = =

2. Хочу написать графического бота, для игры MuOnline (Подобие Lineage), который будет отталкиваясь от координат (цифры в углу игры) персонажа - двигаться в заданные мной координаты.

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

Нажмите для просмотра прикрепленного файла

Наработки бота по координатам

Код
set #handleWin findwindow (main.exe)
set workwindow #handleWin
set $bmp .bmp

while 1 = 1

set $koma findimage (27, 31 635, 533 abs (D:\Работа\uopilot\MU\img\numbers\deva.bmp) %c33 2 100 1 abs)
if $koma > 0
    set #x %c33[1 1]
    set #y %c33[1 2]
   move #x #y abs
   msg
  end_if

//// end_script


/////KOMA


set $koma findimage (113, 32 150, 44 abs (D:\Работа\uopilot\MU\img\numbers\dot.bmp) %c33 2 100 1 abs)
if $koma > 0
    set #numx %c33[1 1]
    set #numy %c33[1 2]
   /// move #x #y abs
   /// set #x2 #x +22
   /// set #y2 #y -8
   ///  move #x2 #y2 abs
  ///  end_script
  end_if


/////1 ЦИФРА

for #num1 0 9

////Верх координат
set #x2 #numx -20
set #y2 #numy -10

//move #x2, #y2 abs
//wait 3s
////Низ координат
set #x3 #numx -13
set #y3 #numy +6

//move #x3, #y3 abs
//end_script
set $number1 findimage (#x2, #y2 #x3, #y3 abs (D:\Работа\uopilot\MU\img\numbers\s#num1$bmp) %c 2 100 1 abs)
if $number1 > 0

    set $a #num1
    ///msg $a
    ///end_script
  end_if




end_for


/////2 ЦИФРА

for #num2 0 9


////Верх координат
set #x4 #numx -15
set #y4 #numy -9

//move #x4, #y4 abs
//wait 3s

////Низ координат
set #x5 #numx -5
set #y5 #numy +6

//move #x5, #y5 abs
//end_script

set $number2 findimage (#x4, #y4 #x5, #y5 abs (D:\Работа\uopilot\MU\img\numbers\s#num2$bmp) %c 2 100 1 abs)
if $number2 > 0

    set $b #num2
   /// msg $b

  end_if

end_for

/////3 ЦИФРА

for #num3 0 9

////Верх координат
set #x6 #numx -11
set #y6 #numy -9

////Низ координат
set #x7 #numx -1
set #y7 #numy +6

///move #x6, #y6 abs
////wait 3s
///move #x7, #y7 abs
///end_script

set $number3 findimage (#x6, #y6 #x7, #y7 abs (D:\Работа\uopilot\MU\img\numbers\s#num3$bmp) %c 2 100 1 abs)
if $number3 > 0

    set $c #num3

  end_if
end_for

   /// msg $c
   //// end_script

/////////////////
/////4 ЦИФРА

for #num4 0 9

////Верх координат
set #x8 #numx +8
set #y8 #numy -8

//move #x8 #y8 abs
//wait 3s
////Низ координат
set #x9 #numx +16
set #y9 #numy +6
//move #x9 #y9 abs
//end_script


set $number4 findimage (#x8, #y8 #x9, #y9 abs (D:\Работа\uopilot\MU\img\numbers\s#num4$bmp) %c 2 100 1 abs)
if $number4 > 0

    set $d #num4

  end_if
end_for

///msg $d
///end_script

for #num5 0 9

////Верх координат
set #x10 #numx +15
set #y10 #numy -8

//move #x10, #y10 abs
//wait 1s


////Низ координат
set #x11 #numx +25
set #y11 #numy +5

//move #x11, #y11 abs
//end_script


set $number5 findimage (#x10, #y10 #x11, #y11 abs(D:\Работа\uopilot\MU\img\numbers\s#num5$bmp) %c 2 100 1 abs)
if $number5 > 0

   set $e #num5
  end_if
end_for


///msg $e
///end_script

for #num6 0 9

////Верх координат
set #x12 #numx +20
set #y12 #numy -9

///move #x12, #y12 abs
///wait 3s

////Низ координат
set #x13 #numx +31
set #y13 #numy +6

//move #x13, #y13 abs
///end_script

set $number6 findimage (#x12, #y12 #x13, #y13 abs (D:\Работа\uopilot\MU\img\numbers\s#num6$bmp) %c 2 100 1 abs)
if $number6 > 0
    set #x %c[1 1]
    set #y %c[1 2]
    set $f #num6

  end_if
end_for

//msg $a$b$c $d$e$f
//end_script

set #koorX $a$b$c
set #koorY $d$e$f

gosub check

end_while



:check

////    Идем в нужные координаты

while 1 = 1

set #StartX 138
set #StartY 131

set #StartPogrX #StartX
set #StartPogrY #StartY

set #StartPogrX2 #StartX
set #StartPogrY2 #StartY

if #koorX > #StartPogrX
    left 365, 221 abs
    return
end_if

//if #koorY < #StartPogrY
//   left 421, 262 abs
//   //msg #koorY
  //  return
//end_if

if #koorX2 < #StartPogrX2
    left 450, 293 abs
    return
end_if

//if #koorY2 > #StartPogrY2
//    left 390, 285 abs
  //  //msg #koorY
  //  return
//end_if



///msg #koorX




if #koorX = #StartX and #koorY = #StartY

    msg #koorX #koorY Закончили!
    end_script


end_if

end_while


Но не все так хорошо как хотелось бы:

1) Координаты Х У (Цифры в верхнем левом углу) - считываются на разных картах по-разному - так как некоторые пиксели, которые я ищу(по картинке) - меняют свою структуру и например цифра 8 - может считаться как 0 или 3, хотя на карте, которой я учил считывать координаты - проблем не было, а достаточно считывать их на другой локации - уже начинает немного не распознавать верно(пиксели немного сменены).

Как возможно решить данную проблему, что бы на всех картах считывать цифры одинаково нормально?

2) Даже на карте, на которой я все я это настраивал - начинаю движение в заданные координаты - возникает еще одна проблема - как обходить преграды? Так как клики в одну из сторон для движения - иногда подводят, так как один из кликов при ходьбе - может кликать на какое-то препятствие, после чего движение закончится... Как бы вы решили эту задачу, что бы научить ходить минуя препятствия?


3) Как лучше ориентироваться по финишной точке прибытия? Например я думал, отталкиваться от того - что находится в том районе - куда нужно дойти (например ориентир - дерево), но дело то в том, что при движении дерево меняет цвета и если я сохраню пиксели дерева в одних координатах, то став на шаг левее или правее - дерево будет иметь другие пиксели - возможно есть вариант, как обучить пилот распознавать дерево в разных ракурсах? Как выйти из данной ситуации?



= = = = = = = = = = = = = = = = 3 (Частично решено) = = = = = = = = = = = = = = = =

3. Вид при написании скрипта в UOPilot:

- При стандартном скачивании пилота - фон и весь код имеет черно-белую стандартную текстуру, но как-то давно, человек помогал мне и установил скрипт, который переделывал написания скрипта в более приятный стиль - цветной. Есть ли у вас готовые скрипты или плагины, которые можно поставить, для более приятной работы в Пилоте? Буду благодарен, если поделитесь своими заготовками!

= = = = = = = = = = = = = = = = 4 = = = = = = = = = = = = = = = =


4. UOPilot - лучший графический бот - по картинкам? Как-то год назад, на форуме вычитал, что UOPilot уже изжил себя и для написания ботов - например для MuOnline, Lineage - будет лучше перейти на другую программу(забыл ее название). Как вы считаете, есть ли для игровых ботов что-то более удобное, или на UOPilot можно решить все проблемы?



Заранее, очень благодарен за помощь!
Fors1k
Цитата(Чекист @ 7.3.2020, 14:31) *

1. Клик на случайную картинку
1. Есть скрипт:

Код
            
set $music2 findimage (205, 131 631, 1008 abs(D:\Работа\uopilot\AdobePremier\Images\music2.bmp) %c 2 100 -1 abs)
            if $music2  > 0

            
            log видим весь плейлист
                set #x %c[1 1]
                set #y %c[1 2]

                kleft #x, #y abs
                wait 300
            end_if


Код
set $music2 findimage (205, 131 631, 1008 abs(D:\Работа\uopilot\AdobePremier\Images\music2.bmp) %c 2 100 -1 abs)
if $music2  > 0
    log видим весь плейлист
    set #rnd 1 + random(size(%c))
    set #x %c[#rnd 1]
    set #y %c[#rnd 2]

    kleft #x, #y abs
    wait 300
end_if
end_script
Чекист
Спасибо, все вышло. Надеюсь на помощь в других вопросах со списка выше (2,3,4). smile.gif


Цитата(Fors1k @ 7.3.2020, 15:46) *

Код
set $music2 findimage (205, 131 631, 1008 abs(D:\Работа\uopilot\AdobePremier\Images\music2.bmp) %c 2 100 -1 abs)
if $music2  > 0
    log видим весь плейлист
    set #rnd 1 + random(size(%c))
    set #x %c[#rnd 1]
    set #y %c[#rnd 2]

    kleft #x, #y abs
    wait 300
end_if
end_script

Fors1k
Цитата(Чекист @ 7.3.2020, 14:31) *

3. Вид при написании скрипта в UOPilot:

- При стандартном скачивании пилота - фон и весь код имеет черно-белую стандартную текстуру, но как-то давно, человек помогал мне и установил скрипт, который переделывал написания скрипта в более приятный стиль - цветной. Есть ли у вас готовые скрипты или плагины, которые можно поставить, для более приятной работы в Пилоте? Буду благодарен, если поделитесь своими заготовками!

Автор темы DarkMaster.
вставить в uopilot.ini
[Highlighter]
Assembler=4473924,255,0
Character=4473924,43690,0
Comment=4473924,12303291,2
Float=4473924,11184810,0
Hexadecimal=4473924,11184742,0
Identifier=4473924,12303291,0
Number=4473924,11184810,0
Preprocessor=4473924,32768,2
Reserved Word=4473924,0,1
RW Array=4473924,14522777,1
RW CharParam=4473924,43690,0
RW ColorAndCord=4473924,43690,0
RW EndScript=4473924,7829469,1
RW For=4473924,43520,1
RW Function=4473924,14522777,1
RW Get=4473924,12303291,1
RW If=4473924,43520,0
RW Keyboard=4473924,12303291,1
RW LastObject=4473924,43690,0
RW Macros=4473924,12613568,1
RW Memory=4473924,14522777,1
RW Mouse=4473924,12303291,1
RW Msg=4473924,6710886,1
RW Other=4473924,14522777,1
RW Plugin=4473924,14522777,1
RW Proc=4473924,14522777,1
RW Script=4473924,7829469,1
RW Sub=4473924,12613568,1
RW Time=4473924,43690,0
RW Wait=4473924,12303291,1
RW Windows=4473924,14522777,1
Space=4473924,0,0
String=4473924,12303291,0
Symbol=4473924,8947848,0
RW Array List=
RW CharParam List=
RW ColorAndCord List=
RW EndScript List=
RW For List=
RW Function List=
RW Get List=
RW If List=
RW Keyboard List=
RW LastObject List=
RW Macros List=
RW Memory List=
RW Mouse List=
RW Msg List=
RW Other List=
RW Plugin List=
RW Proc List=
RW Script List=
RW Sub List=
RW Time List=
RW Wait List=
RW Windows List=
Чекист
Спасибо. А есть ли плагины для автовыравнивания скриптов под программный стиль(что бы не путаться в строчках)? Или Еще какие полезные скрипты - плагины?


Цитата(Fors1k @ 7.3.2020, 16:10) *

Автор темы DarkMaster.
вставить в uopilot.ini
[Highlighter]
Assembler=4473924,255,0
Character=4473924,43690,0
Comment=4473924,12303291,2
Float=4473924,11184810,0
Hexadecimal=4473924,11184742,0
Identifier=4473924,12303291,0
Number=4473924,11184810,0
Preprocessor=4473924,32768,2
Reserved Word=4473924,0,1
RW Array=4473924,14522777,1
RW CharParam=4473924,43690,0
RW ColorAndCord=4473924,43690,0
RW EndScript=4473924,7829469,1
RW For=4473924,43520,1
RW Function=4473924,14522777,1
RW Get=4473924,12303291,1
RW If=4473924,43520,0
RW Keyboard=4473924,12303291,1
RW LastObject=4473924,43690,0
RW Macros=4473924,12613568,1
RW Memory=4473924,14522777,1
RW Mouse=4473924,12303291,1
RW Msg=4473924,6710886,1
RW Other=4473924,14522777,1
RW Plugin=4473924,14522777,1
RW Proc=4473924,14522777,1
RW Script=4473924,7829469,1
RW Sub=4473924,12613568,1
RW Time=4473924,43690,0
RW Wait=4473924,12303291,1
RW Windows=4473924,14522777,1
Space=4473924,0,0
String=4473924,12303291,0
Symbol=4473924,8947848,0
RW Array List=
RW CharParam List=
RW ColorAndCord List=
RW EndScript List=
RW For List=
RW Function List=
RW Get List=
RW If List=
RW Keyboard List=
RW LastObject List=
RW Macros List=
RW Memory List=
RW Mouse List=
RW Msg List=
RW Other List=
RW Plugin List=
RW Proc List=
RW Script List=
RW Sub List=
RW Time List=
RW Wait List=
RW Windows List=


Fors1k
Цитата(Чекист @ 7.3.2020, 16:11) *

Спасибо. А есть ли плагины для автовыравнивания скриптов под программный стиль(что бы не путаться в строчках)? Или Еще какие полезные скрипты - плагины?

Скрипт -> Форматировать
Чекист
Премного буду благодарен, если кто-нибудь поможет решить вопрос под номером 2 и 4 в первую очередь.

Заранее, очень благодарен за ответы и помощь! smile.gif biggrin.gif
nykep
обхождение преград для общих случаев когда перс вперся во что-то что можно обойти с обеих сторон по направлению следования в му можно, например установив таймер который сбрасывается каждый раз когда сменяется любая координата и если таймер превышает определенное значение, то выполнить нужное действие, в му насколько я помню обойти такое препятствие можно просто кликнув чуть подальше за преграду и он сам ее обойдет. Если же на карте какие то лабиринты из стен, то все намного сложнее, я для му никогда не делал бота который просто бегает куда глаза глядят и впирается не пойми во что, после того как написал скрипт который определяет координаты на карте все действия можно запрограммировать тупо по координатам.
Цитата
Кода координаты меняются - он начинает двигаться в заданную мной сторону - если цифры координат уменьшаются при клике - а нам нужно увеличивать число, то клик происходит в ту сторону, где будет увеличение координат.

это по моему не самый разумный способ начинать движение с рандомного клика и смотреть увеличивается или уменьшается хотя я не знаю для чего именно нужен твой скрипт, все же можно просто вписать в скрипт координаты места назначения запустить и он побежит туда опираясь на координаты, установив нужное количество ключевых точек можно обойти все преграды. Например вот что делает твой скрипт - при запуске устанавливает координаты места назначения, определяет координаты персонажа, далее условие - если текущий Х меньше точки назначения и текущий Y больше то наводим мышку куда надо и клик(таких условий я делал 8 штук для всех направлений движения прямо по одной координате и по диагонали в нужную сторону) и так он бежит пока не достигнет точки назначения, дальше условие если достиг тогда меняем точку назначения на следующую и так далее.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.