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

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

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

> Без описания
007wan
Отправлено: 06 Сентября, 2019 - 14:55:16
Post Id



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


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




 Zireael пишет:
 Цитата:
while(WindowFromPoint(Mouse_x, Mouse_y) == Object_Checkbox[i] || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button1 || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button2)

Не нужно 3 раза вызывать функцию WindowFromPoint. Присвоить результат переменной и сравнивать.
 Цитата:
int handle=WindowFromPoint(Mouse_x, Mouse_y);
while(handle == Object_Checkbox[i] || handle == ...)

 Цитата:
while(WindowFromPoint(Mouse_x, Mouse_y) == Object_Checkbox[i] || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button1 || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button2)
{
SetCursor(Object_Cursor1);
sleep(10);
getmouse(Mouse_x, Mouse_y);
break;
}

И зачем нужен while, если он постоянно прерывается через break без всяких условий?
 Цитата:
Load_Settings();

Можно добавить в таймер 0, только дописать условие через gettime чтобы срабатывало каждые 500 мсек.
Так как лучше, я без понятия. Капец, удмал сегодня вспомню что имелось ввиду, а так и храню теперь и не пойму. Пишем ошибка.
 
 Top
007wan
Отправлено: 13 Сентября, 2019 - 15:37:37
Post Id



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


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




 Zireael пишет:

Не нужно 3 раза вызывать функцию WindowFromPoint. Присвоить результат переменной и сравнивать.
Не совсем понял ну при свою я и что, а Куда другой for девать?
CODE:
CREATE_TIMER(3, 10)
{
getmouse(Mouse_x, Mouse_y);

for (int i=0; i<sizearray(Object_Checkbox); i++)
{
while(WindowFromPoint(Mouse_x, Mouse_y) == Object_Checkbox[i] || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button1 || WindowFromPoint(Mouse_x, Mouse_y) == Object_Button2)
{
SetCursor(Object_Cursor1);
sleep(10);
getmouse(Mouse_x, Mouse_y);
break;
}
}
}

(Добавление)
 007wan пишет:
И зачем нужен while, если он постоянно прерывается через break без всяких условий?
Без Break у меня раньше сильно лагало, что жуть какая, а сейчас он выходит из цикла на передышку и даже быстрее скрипт стал работать из-за такой мелочи.
(Добавление)
Не работает.
CODE:
for (int i=0; i<sizearray(Object_Checkbox); i++)
{
int Handle_Controls = WindowFromPoint(Mouse_x, Mouse_y);
while(Handle_Controls == Object_Checkbox[i])
{
SetCursor(Object_Cursor1);
sleep(10);
getmouse(Mouse_x, Mouse_y);
}
}

Какой смысл получать хэндл, если он может не найти нужный наведенный контрол и ему придется снова цикл делать?
(Добавление)
Так лучше и правильнее?
Код (Отобразить)

(Добавление)
Точнее.
ДО (Отобразить)
ПОСЛЕ (Отобразить)
 
 Top
Zireael
Отправлено: 14 Сентября, 2019 - 01:44:57
Post Id



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


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




 Цитата:
Так лучше и правильнее?

Неправильно. Подумайте над этим:
CODE:
int a=0;
while(a<100)
{
a++;
}
messagebox(a);

CODE:
int a=0;
while(a<100)
{
a++;
break; // сразу выход, тогда зачем нужен цикл?
}
messagebox(a);
 
 Top
007wan
Отправлено: 14 Сентября, 2019 - 09:11:06
Post Id



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


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




 Zireael пишет:
 Цитата:
Так лучше и правильнее?

Неправильно. Подумайте над этим:
CODE:
int a=0;
while(a<100)
{
a++;
}
messagebox(a);

CODE:
int a=0;
while(a<100)
{
a++;
break; // сразу выход, тогда зачем нужен цикл?
}
messagebox(a);
Не хочу писать, но ты не прав на счет break; Я же код запустил и вижу, что ты не прав.
Этот код (Отобразить)
Код выше. Без break курсор сменится на одном контроле и больше не сможет возвратится в исходное состояние, а break прерывает цикл и он возвращает обычный курсор, когда не наведен на контрол. Другими словами: без break(Навели на контрол - поменялась рука, убрали наведение с контрола - рука не меняется на стандартную, а с break когда убрали мышь с контрола - то всё норм, рука вернулась обычная
(Добавление)
Может я чего-то не понимаю, не так создал код, так как правильнее? for и while не мешаются.
(Добавление)
Ты понимаешь, что суть SetCursor(Object_Cursor1); менять курсор, а при перемещении мыши - возвращать стандартный(стрелку). А while и for удерживают его, когда наведешь на кнопку или наведешь и переместишь мышь в зоне кнопки, а потом если не в зоне кнопки, то АВТОМАТИЧЕСКИ возвращает стрелку курсора, до тех пор пока не дана команда SetCursor(Object_Cursor1);, а если она дана, то меняет курсор и тд
(Добавление)
Если есть лучше код, то я слушаю. Потому что я знаю как это работает и считаю, что break тут нужен, есть лучше идея? Давай проверим...

(Отредактировано автором: 14 Сентября, 2019 - 09:20:56)

 
 Top
Zireael
Отправлено: 14 Сентября, 2019 - 10:47:09
Post Id



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


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




Заменить while на if, убрать getmouse, тот что в цикле.
 
 Top
007wan
Отправлено: 14 Сентября, 2019 - 10:51:44
Post Id



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


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




 Zireael пишет:
Заменить while на if, убрать getmouse, тот что в цикле.

ПОСЛЕ2 (Отобразить)
А реально теперь break; не нужен. Но не могу пока точно сказать как это скажется, когда запустится другой таймер и бот в целом, когда будет искать изображения итд, до этого с while, break сильно лагало, а сейчас не знаю. Скоро проверю, когда сделаю сокращение кода и упрощения.
(Добавление)
Я кстати, убрал таймер с загрузкой настроек в реальном времени, лучше тогда придется остановить бот, запустить и он загрузит их снова 1 раз или же по таймеру, который будет запущен для поиска изображений
 
 Top
Zireael
Отправлено: 14 Сентября, 2019 - 11:02:44
Post Id



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


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




 Цитата:
А реально теперь break; не нужен

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


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




Powered by