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

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

 Страниц (24): В начало « 3 4 5 6 [7] 8 9 10 11 » В конец    

> Без описания
007wan
Отправлено: 30 Мая, 2019 - 10:14:17
Post Id



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


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




Zireael ,
 Zireael пишет:
В приведённом коде количество скобок {} не совпадает.
Извиняюсь, не заметил, что скобку забыл. Фактически она есть. Просто кусок кода брал и забыл туда скобку поставить. А в целом код правильный?
 
 Top
007wan
Отправлено: 30 Мая, 2019 - 17:06:36
Post Id



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


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




Почему после остановки бота, который работает в перекрытом окне, он дальше делает то, что нужно(выполняет функции по клику, перемещении итд). Либо таймер не выключается, либо это систему залагало. Скажу, что бот работал много времени и может там как-то что-то перегрузилось или как-то зациклилось
(Добавление)
Потому что при нажатии на кнопку "Остановить" выполняется функция Стоп_скрипт
CODE:
function Stop_Script(string Message)
{
GetWindowText(Object_Button1, address(#Text_Button1[0]), sizearray(Text_Button1));
GetWindowText(Object_Button2, address(#Text_Button2[0]), sizearray(Text_Button2));

if(format(#Text_Button1[0]) == "Остановить")
{
if (Message != "" || Message != "0")
{
Add_Log(Message, 1, 1);
}
SetWindowTextA(Object_Button1, "Запустить");
EnableWindow(Object_Button2, 0);
Setting_Game = 0;
transparency(100, Browser);

if(format(#Text_Button2[0]) == "Отключить визуальное окно")
{
SetWindowTextA(Object_Button2, "Получить изображение из игры");
disablevisualwindow(0);
resettextout(1);
}
}
disabletimer(2);
}
Как вы сами видите, ошибок нет. Таймер выключает нужный, но вопрос "работает ли это?"
 
 Top
007wan
Отправлено: 30 Мая, 2019 - 19:18:15
Post Id



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


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




как отключить таймер через disabletimer с return;, но что бы ретёрн функция отключала не в самом таймере, а как бы дистанционно вне таймера. а то я не знаю как реализовать: что бы таймер отключался там,где нужно.
 
 Top
Kibor
Отправлено: 30 Мая, 2019 - 19:24:32
Post Id



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


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




Прервать таймер из вне?
Какую то переменную завести - флаг.
Присвоить ей 0
Этой переменной в нужном месте кода присваивать 1.
В таймере при выполнение проверять или этот флаг равен 1 и если 1 то записывать в него 0 и отключать и прерывать таймер.
 
 Top
007wan
Отправлено: 30 Мая, 2019 - 19:56:53
Post Id



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


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




Kibor , и что мне проверять во всех,случачх во всех операциях и во всех действиях(перед,или после выполнения какойто функции), да их же много!
(Добавление)
это безумме. если у меня стоит много функций помска изображений и лепить туда пррверку,да еще в if даже else!?
 
 Top
Kibor
Отправлено: 30 Мая, 2019 - 20:36:12
Post Id



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


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




А что вообще в таймере делают много разных функций?
(Добавление)
И вообще что за странная задача?
Если команда на прерывание таймера поступила не в таймере, то достаточно его отключить и он туда не зайдет, а если в таймере, то отключение и ретурн потом.
По любому где то же эта команда воспроизводится? Так там и отключайте.
 
 Top
007wan
Отправлено: 30 Мая, 2019 - 20:58:19
Post Id



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


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




Kibor , так да. команда на отключение в Stop_Script(); но он всеравно заходит обратно в таймер, хотя вы сказали,что он и не зайдет. а ретурн в этой функции не реализовать. если можно, то пример, а лчшу несколько. пожвлуйста.
(Добавление)
Я может чего-то не понял, но я бы не стал мутить воду. и добавил бы в disabletimer новый флаг, который будет определять: 1-остановить таймер где сейчас находится disabletimer. Один нюанс: если в таймере стоит вызывающая функция, в которой есть disabletimer, то таймер остановится только тогда,когда выполнится эта функция и остановит таймер где вызыввется эта функция. что же делать когда в таймере 2 или более вызывающих? ну на ряду он остановит там где первая - в таймере+и так понятно).
(Добавление)
CREATE_TIMER(0, 500){
are();//сдесь остановит после завершения функции
acm(); // и тут так же, если are() за комментировать.}
function are(){disabletimer(0, 1);//флаг, остановить сейчас.}
function acm(){
sdy();
}
function sdy(){
disabletimer(0,1);
}

Я с иелефона. Сорри)
 
 Top
Kibor
Отправлено: 30 Мая, 2019 - 22:45:19
Post Id



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


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




Stop_Script() вызывается с таймера?
Естественно она возвращается в место вызова- таймер.
Я говорю если отключить вне таймера то не зайдет.

А если с таймера вызывается, то что мешает вернуть с функции что то. К примеру -1 и при возврате в таймер проверить что вернула и если -1, то сделать с таймера ретурн.
Или прямо с функции после отключения таймера сделать глобал ретурн.
Короче все можно сделать.
 
 Top
007wan
Отправлено: 31 Мая, 2019 - 10:38:45
Post Id



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


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




 Kibor пишет:
Stop_Script() вызывается с таймера?
И не только. Вызывается тогда, когда нужно, например, в таймере, если не найдено изображение или если я нажал F1(клавиатурная остановка скрипта или запуск) или если не найдено окно какое-то или еще чего. вообще во всех случаях, когда не лень.
 Kibor пишет:
А если с таймера вызывается, то что мешает вернуть с функции что то. К примеру -1 и при возврате в таймер проверить что вернула и если -1, то сделать с таймера ретурн.

Ничего не мешает. Только у меня этих Stop_Script() по горло уже сыт и ты хочешь сказать, что бы везде пихал что-то типа этого: if (переменная = 1){return;}//условно
Знаешь это как будет выглядить? безумно, потому что представим картину: если ищем изображение буду 2 условия: if и else если нашел изображение, то проверяем сделать ли ретурн, если не нашел изображение, то проверяем для начала ретурн, а уже потом делаем то, что нужно. Это будет много проверок!
 Kibor пишет:
Или прямо с функции после отключения таймера сделать глобал ретурн.
А вот тут по подробнее. Что за глобал ретурн и зачем. И да. Можно примеры. ПоЖалуйста. Мне волнует одно: Как избавится от массового сравнения if else во всех случаях проверки return; что бы не писать много этих проверок, потому что у меня много кода очень.
(Добавление)
Поэтому, что бы избавится от много проверок, что нужно использовать ретурн или нет, я предлагаю добавить в отключение таймера флаг, который позволит обрубать связь там, где нужно, что вообще тут сложно? Лишняя опция не повредит. Если вы мне дадите пример сокращенный, где одна проверка if else что бы отключать recturn; и можно много раз использовать, что бы не писать эту проверку, то я успокоюсь)
(Добавление)
Просто я не хочу после каждого Stop_Script писать условие, проверяющее делать ретурн или нет в таймере, т.к много условие будет и кода лишнего. А вне таймера тогда как это сделать?
 
 Top
Zireael
Отправлено: 31 Мая, 2019 - 11:14:57
Post Id



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


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




goto global
 
 Top
Страниц (24): В начало « 3 4 5 6 [7] 8 9 10 11 » В конец
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by