Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (3): [1] 2 3 »   

> Без описания
Ouroboros
Отправлено: 06 Января, 2014 - 02:14:48
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2014  
Репутация: 0




В общих словах, нужен был автокликер, который бы в игре за меня нажимал кнопочки в текстовом диалоге. Проблема вот в чем, первые семь шагов в диалоге(квест , суть которого - начал разговор, помешал карты в колоде, вскрыл карты по очереди с первой по пятую, нажал играть снова), так вот сама проблема в последнем пункте, первые 7 клавиш неизменны и вне зависимости от того, какая комбинация карт попадается и в каком порядке открываю карты, клавиши для них останутся на тех же местах, а вот самая последняя меняется в зависимости от того, какую комбинацию собрал игрок, и ее местоположение на экране постоянно меняется.Подумалось мне, что нужно попробовать через программу не автокликера, а непосредственно Кибора.(Думал можно так, первые 7 шагов по экранным координатам, перед этим загрузить изображение последней интерактивной клавиши,и на восьмом шаге сделать if(findimage....)<1)goto loop; но вот загвоздка вышла, как бы я ни старался, он не распознает это самое изображение, хотя делал все и перепроверял .Что могло пойти не так?Вот код который у меня вышел(промежуточный,паузы между кликами и прочее не редактировал)

win w=window ("Lineage II   ", "l2UnrealWWindowsViewportWindow", -1);
int Image_0[55][13];loadimage (#Image_0[0][0], "C:\Image_11.bmp"Подмигивание;
int PosX_0[512];int PosY_0[512];
if(w!=0){
activate(w);
if (attach(w,1)!=0){
loop:

pause(998);
mouse(LEFT, 1144, 299);
pause(1061);
mouse(LEFT, 1158, 399);
pause(874);
mouse(LEFT, 1161, 327);
pause(967);
mouse(LEFT, 1146, 352);
pause(749);
mouse(LEFT, 1154, 380);
pause(780);
mouse(LEFT, 1166, 414);
pause(1076);
mouse(LEFT, 1163, 436);
pause(1233);


if(findimage(-1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1444, 946, -1)<1) goto loop;
else{mouse(LEFT, PosX_0[0],Pos_Y_0[0]);}
goto loop;
}
первые 7 шагов выполняет как положено, на последнем не может "увидеть" изображение и возвращается к началу цикла. Помогите пожалуйста
 
 Top
Kibor
Отправлено: 06 Января, 2014 - 02:32:30
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8226
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Насколько я знаю в линейке все панели и кнопки имеют полупрозрачность, поэтому не находит. Посмотрите тему тут.
Там показано как это проверить и выбрать подходящие части изображения для поиска.
Еще можно воспользоваться расширенной findimage для поиска по неполному совпадению с колебаниями в цветах. Подробнее.
 
 Top
Ouroboros
Отправлено: 06 Января, 2014 - 12:54:33
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2014  
Репутация: 0




 Kibor пишет:
Насколько я знаю в линейке все панели и кнопки имеют полупрозрачность, поэтому не находит. Посмотрите тему тут.
Там показано как это проверить и выбрать подходящие части изображения для поиска.
Еще можно воспользоваться расширенной findimage для поиска по неполному совпадению с колебаниями в цветах. Подробнее.

Посмотрю, а так в общем, в коде нету никаких ошибок?Не синтаксических я имею ввиду)
 
 Top
Kibor
Отправлено: 06 Января, 2014 - 13:34:31
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8226
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Ouroboros пишет:
Посмотрю, а так в общем, в коде нету никаких ошибок?Не синтаксических я имею ввиду)


Есть синтаксическая:
 Ouroboros пишет:
else{mouse(LEFT, PosX_0[0],Pos_Y_0[0]);}


Разбор кода:
 Ouroboros пишет:
if (attach(w,1)!=0)

Зачем нужна функция attach? В коде будет проверка курсора? В случае если нет - привязка потока не нужна.

 Ouroboros пишет:
win w=window ("Lineage II ", "l2UnrealWWindowsViewportWindow", -1);

Зачем получается указатель на окно если потом не используется? Везде экранные координаты.

mouse(LEFT, 1144, 299); - экранные координаты.
С оконными так:
mouse(LEFT, x?, y?, 1, w); - x, y, оконные координаты игры относительно левого и верхнего угла окна.
Узнать их - навести на нужное место в окне игры мышку и нажать CTRL+SHIFT+S. Смотреть координаты в Кибор в (мышь в клиентской части окна)

Опять по поводу оконных координат в findimage. Последний параметр не -1 надо , а указатель на окно w.
Тогда надо будет клик по кнопке так: mouse(LEFT, PosX_0[0],PosY_0[0], 1, w);

Относительно поиска кнопки...
Кнопка должна 1 быть? Зачем тогда массив для приема координат? int PosX_0[512];int PosY_0[512];
Достаточно так int PosX_0, PosY_0;
и в findimage искать 1 изображение. Указать в первом параметре не -1, а 1.
if(findimage(1, #Image_0[0][0], 0, #PosX_0, #PosY_0, 0, 0, 1444, 946, w)<1)
Клик так:
mouse(LEFT, PosX_0,PosY_0, 1, w);

Так же если используем оконные координаты надо искать не по разрешению экрана, а по окну. Поэтому надо
if(findimage(1, #Image_0[0][0], 0, #PosX_0, #PosY_0, 0, 0, w.widthclient, w.heightclient, w)<1)

/////////////////////////////////////

Можно и экранные координаты использовать как у Вас, но тогда при сдвиге окна координаты записанные в
CODE:
......
mouse(LEFT, 1161, 327);
pause(967);
mouse(LEFT, 1146, 352);
.......

будут не верные.
Это можно решить вставив такой код после получения указателя:
 Цитата:
win w=window ("Lineage II ", "l2UnrealWWindowsViewportWindow", -1);
w.widthclient=ширина окна
w.heightclient=высота окна
w.leftclient=левый угол по x
w.topclient=левый угол по y
//Узнаются с помощью CTRL+SHIFT+S ПЕРЕД записью координат
moveclient(w);

Этот скрипт после запуска восстановит позицию и размеры окна как была при записи. Тогда можно использовать экранные координаты.

/////////////////////////////

Сумбурно? Я не могу так просто объяснить все нюансы. Предлагаю почитать
Функции для идентификации окон и контролов.
Переименование, сдвиг и изменение размеров окон.
Сканирование экрана и поиск изображений
 
 Top
Ouroboros
Отправлено: 06 Января, 2014 - 13:38:50
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2014  
Репутация: 0




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

 
 Top
Kibor
Отправлено: 06 Января, 2014 - 13:45:27
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8226
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Так я не смогу помочь. Надо смотреть самому как там конкретно надо. Возможно через доступ посмотрю позже.
 
 Top
Ouroboros
Отправлено: 06 Января, 2014 - 14:01:06
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2014  
Репутация: 0




 Kibor пишет:
Так я не смогу помочь. Надо смотреть самому как там конкретно надо. Возможно через доступ посмотрю позже.

Все равно спасибо за ответ!
(Добавление)
Кажется мне, что я ввел вас в заблуждение, да и сам не по той дороге пошел.Я написал вам, что нужно нажимать одну кнопку, хотя на самом деле это не является кнопкой,гиперссылка чтоли? Вобщем от всего остального текста в квесте эти гиперссылки выделяются слабо-синим цветом, и буквы,ясно дело, в этих гиперссылках непрозрачные.Первые 7 шагов по координатам окна проходим, а можно ли сделать на последнем шаге так, чтобы искался цвет пикселя?и если цвет найден, то нажатие мыши и цикл по-новой?Возможно возникнет совпадение цветов на экране вокруг персонажа с тем же цветом, что и у ссылки, но это мало вероятно, темболее можно зумом приблизить так, чтобы виднелись совершенно другие оттенки, такое реализовать чисто теоретически можно?
 
 Top
Ouroboros
Отправлено: 06 Января, 2014 - 16:18:35
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2014  
Репутация: 0




Проблему решил, вместо картинки целого предложения, максимально приблизил и выделил пиксель из слова и его искал как картинку. Большое спасибо за помощь) Последний вопрос, можно ли это как-то оформить в фоновый режим, как в автокликере?
 
 Top
Kibor
Отправлено: 06 Января, 2014 - 18:31:37
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8226
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




 Ouroboros пишет:
Проблему решил, вместо картинки целого предложения, максимально приблизил и выделил пиксель из слова и его искал как картинку.

Теоретически и так можно... Но я бы оставил этот способ для других подобных программ Хм

Постарался подробнее описать конкретно на Вашем примере как это надо делать в Кибор.

Подготовка изображений для поиска в Кибор

 Ouroboros пишет:
можно ли это как-то оформить в фоновый режим

Оформить можно, но в линейке не будет кликать в фоновом режиме. Только клавиатура.
 
 Top
Ouroboros
Отправлено: 06 Января, 2014 - 18:50:04
Post Id



Пользователь
Прохожий


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2014  
Репутация: 0




Cпасибо за разъяснение! И не жалко вам своего времени,добрый вы человек)
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by