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

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

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

> Без описания
007wan
Отправлено: 29 Апреля, 2019 - 16:31:47
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Я никогда не умел сокращать код и поэтому я создал отдельную тему, что бы узнат ькак это можно сделать.
Вот такой хитрый код у меня и я не знаю как его сжать. Объясню в коде через //
Код (Отобразить)

(Добавление)
Грубо говоря ЭТОТ
код 1 из таймера (Отобразить)

Повторяется что и в этом же таймере, но случаи разные
кода 2 из таймера (Отобразить)
Из-за
CODE:
Log(format(#Time[0])+"Ошибка в работе. Окно игры не найдено.");
и
CODE:
Log(format(#Time[0])+"Не удается найти Image_0.bmp");
коды разные, но часть из них все-таки слишком одинакова если не считать вверхние строчки, но случаи абсолютно разные.
(Добавление)
Конечно я могу запилить это в функцию и вызывать ее, но в функции никак не поменять эти строчки и не понятно как их вызывать в каких случаях. А про метки вообщзе молчу. то, что выше выполнятся не будет, а это нужно

(Отредактировано автором: 29 Апреля, 2019 - 16:36:11)

 
 Top
Dantes3000
Отправлено: 29 Апреля, 2019 - 16:45:41
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1458
Дата рег-ции: Июнь 2016  
Репутация: 58




CODE:
fu("Ошибка в работе. Окно игры не найдено.");


function fu(string str)
{

Log(format(#Time[0])+str);

//тоже самое, что и повторябщиеся

}
 
 Top
007wan
Отправлено: 29 Апреля, 2019 - 16:52:46
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Dantes3000 , Спасибо.
Я тут подумал. Можно и такое запилить. Как раз недавно об этом писал.
CODE:

StopScript("1");//пишем номер ошибки или команды, что бы вызвать нужную строку сообщения
function StopScript(int error)
{
string Errors[2] = {"Бот остановлен пользователем", "Бот остановлен. Причина: не найдено игровое окно."};

//дальше я не буду описывать, но суть в том, что какую цифру примем, то такой текст и возьмем
}

(Добавление)
А как бороться с этим?
 Цитата:
if(findimage(1, #Image_0[0][0], -1, #Image_x[0], #Image_y[0], 0, 0, Game.widthclient, Game.heightclient, Game) > 0)
{
//messagebox("Найдено");

if(format(#Load_Checkbox2[0]) == "1")
{
sendmouse(LEFT, Image_x[0], Image_y[0], Game);
sendmouse(LEFT, Image_x[0], Image_y[0], Game);
sendmouse(LEFT, Image_x[0], Image_y[0], Game);
}
else
{
mouse(LEFT, Image_x[0], Image_y[0], Game);
mouse(LEFT, Image_x[0], Image_y[0], Game);
mouse(LEFT, Image_x[0], Image_y[0], Game);
}
Повторяется. Дело в том, что у меня поиск изображений будет очень много и каждый раз писать это не очень. Потому что sendmouse нажимает только в неактивном окне, поэтому приходится использовать mouse
(Добавление)
+} забыл.
(Добавление)
sendmouse и mouse может быть неограниченно.
 
 Top
Dantes3000
Отправлено: 29 Апреля, 2019 - 18:52:01
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1458
Дата рег-ции: Июнь 2016  
Репутация: 58




loop(3) mouse(LEFT, Image_x[0], Image_y[0], Game);
 
 Top
007wan
Отправлено: 29 Апреля, 2019 - 18:55:20
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Dantes3000 , Да не, дело не в этом, что и сколько повторять, а в том, что приходится сравнивать галочку если выбрана и имеет значение 1, то использовать sendmouse, а если 0, то mouse
CODE:
if(format(#Load_Checkbox2[0]) == "1")//узнаем состояние галочки
{//если 1
sendmouse(LEFT, Image_x[0], Image_y[0], Game);//клик вне окна
}
else
{
mouse(LEFT, Image_x[0], Image_y[0], Game);//использовать клик в окне
}

(Добавление)
Причем если таких поиска изображений много, то приходится постоянно сравнивать то, что выше
(Добавление)
Грубо говоря вот что выйдет:
CODE:
if(findimage(1, #Image_0[0][0], -1, #Image_x[0], #Image_y[0], 0, 0, Game.widthclient, Game.heightclient, Game) > 0)
{

if(format(#Load_Checkbox2[0]) == "1")
{
sendmouse(LEFT, Image_x[0], Image_y[0], Game);
}
else
{
mouse(LEFT, Image_x[0], Image_y[0], Game);
}
}

if(findimage(1, #Image_1[0][0], -1, #Image_x[0], #Image_y[0], 0, 0, Game.widthclient, Game.heightclient, Game) > 0)
{

if(format(#Load_Checkbox2[0]) == "1")//снова сравниваем, как избавится?
{//если кликов может быть не один.
sendmouse(LEFT, Image_x[0], Image_y[0], Game);
}
else
{
mouse(LEFT, Image_x[0], Image_y[0], Game);
}
}







(Отредактировано автором: 29 Апреля, 2019 - 18:56:39)

 
 Top
Dantes3000
Отправлено: 29 Апреля, 2019 - 21:08:08
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1458
Дата рег-ции: Июнь 2016  
Репутация: 58




Можешь моей функцией пользоваться

CODE:
function WaitPic(int #arr, int r, string click)
{
int x,y;

looptime(50000)
{
if(findimage(1, #arr[0][0], 0, #x, #y, 0, 0, xe, ye,r,r,r,r,r,r,100,1, w)>0)
{
if(click=="1") mouse(LFFT, x, y, w);
else sendmouse(LEFT, x, y, w);
log("Найдено");
return 1;
}
sleep(10);
}
log("Не найдено!");
return 0;
}



WaitPic(#Image_0, 100, format(#Load_Checkbox2[0]));
 
 Top
Zireael
Отправлено: 30 Апреля, 2019 - 07:43:48
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
WaitPic(#Image_0, 100, format(#Load_Checkbox2[0]));

 Цитата:
WaitPic(#Image_0[0][0], 100, format(#Load_Checkbox2[0]));

007wan, в визуальном редакторе коде создайте несколько поисков изображения и посмотрите полученный код. Функция для поиска изображений одна, но может выполнять разные действия.
В любом случае сначала нужно разобраться с передачей параметров и указателей в функцию.
 
 Top
007wan
Отправлено: 30 Апреля, 2019 - 13:10:58
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




 Zireael пишет:
WaitPic(#Image_0[0][0], 100, format(#Load_Checkbox2[0]), 5);//последний параметр - количество кликов. А в функции добавить loop()//количество кликов

(Добавление)
 007wan пишет:
А в функции добавить loop()//количество кликов
не стану расписывать и так понятно.
 
 Top
007wan
Отправлено: 02 Мая, 2019 - 11:42:52
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1838
Дата рег-ции: Март 2017  
Репутация: -2




Это можно как-нибудь сократить?
Код (Отобразить)
 
 Top
Zireael
Отправлено: 02 Мая, 2019 - 11:55:02
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4384
Дата рег-ции: Нояб. 2017  
Репутация: 580




 Цитата:
Это можно как-нибудь сократить?

Это будет иметь смысл только если пунктов меню много.
 
 Top
Страниц (5): [1] 2 3 4 5 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by