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

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

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

> Описание: Сделать кнопку Пауза
Adomb
Отправлено: 10 Августа, 2020 - 14:09:01
Post Id



Пользователь
Мастер


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




У меня в скрипте пауза через функцию
CODE:
function Pst(double q)
{int p=q*1000; looptime(p){sleep(100);} return;
}


Есть кнопка, на неё повешана, так сказать, общая пауза, приостановка выполнения скрипта.
Скрипт исполняется, если нажать кнопку - исполняется Pst(7200); если опять нажать на кнопку - исполняется Pst(1); функция Pst отрабатывала и скрипт продолжал исполняться с места откуда был прерван кнопкой. Надеюсь понятно объяснил.
Всё работало. После последних обновлений Кибора - перестало работать. Кнопка срабатывает, обращается к функции, но скрипт продолжает работать.

Понять бы - баг или чего происходит )
 
 Top
Zireael
Отправлено: 10 Августа, 2020 - 14:25:25
Post Id



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


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




Нужен минимальный код, в котором можно повторить ошибку.
 
 Top
Adomb
Отправлено: 10 Августа, 2020 - 14:27:55
Post Id



Пользователь
Мастер


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




Сейчас выложу.
(Добавление)
код (Отобразить)

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

(Отредактировано автором: 10 Августа, 2020 - 14:43:09)

 
 Top
Kibor
Отправлено: 10 Августа, 2020 - 16:00:26
Post Id



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


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




А как вы хотите что бы это выполнялось?
Сделайте нормальный алгоритм паузы.
(Добавление)
CODE:
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll"); external(INT, "GetStdHandle", "GetStdHandle", "Kernel32.dll"); external(INT, "SetConsoleCP", "SetConsoleCP", "Kernel32.dll"); external(INT, "SetConsoleOutputCP", "SetConsoleOutputCP", "Kernel32.dll");
external(INT, "SetConsoleTextAttribute", "SetConsoleTextAttribute", "Kernel32.dll"); external(INT, "WriteConsole", "WriteConsoleA", "Kernel32.dll"); external(INT, "GetConsoleWindow", "GetConsoleWindow", "Kernel32.dll"); external(INT, "AllocConsole", "AllocConsole", "Kernel32.dll");
external(INT, "FreeConsole", "FreeConsole", "Kernel32.dll"); external(INT, "SetConsoleTitle", "SetConsoleTitleA", "Kernel32.dll"); external(INT, "SetCurrentConsoleFontEx", "SetCurrentConsoleFontEx", "Kernel32.dll"); external(INT, "MoveWindow", "MoveWindow", "User32.dll");
#define STD_OUTPUT_HANDLE -11 #define windows_1251 1251 #define BLUE 1 #define GREEN 2 #define RED 4 #define FOREGROUND_INTENSITY 8 #define CYAN 3 #define MAGENTA 5 #define YELLOW 6 #define WHITE 7 #define CP_ACP 0
int h_console=console_create(), unnp; console_setfont(13); console_pos(930, 350, 440, 380); console_setcolor(BLUE);
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll"); external(INT, "CreateWindow", "CreateWindowExA", "User32.dll"); external(INT, "SendMessage", "SendMessageA", "User32.dll");
////////////////////////////////////////////////////////////////////////////
int gx, gy, col; getdisplay(col, gx, gy);
int btn2d2, flbtn2d2=0;

Dialog25();

loop(){beep(400,400); c_w("Pst - Скрипт"); }

function getmessage(2, WM_COMMAND)
{
if(message.lparam==btn2d2)
{
if(flbtn2d2) flbtn2d2=0;
else flbtn2d2=1;

if(flbtn2d2==0)
{
SetWindowText(btn2d2, "Пауза"); c_w("2, WM_COMMAND Пауза");
return;
}

else
{
SetWindowText(btn2d2, "Отменить паузу"); c_w("2, WM_COMMAND Отменить паузу");
Pst();
}

}
}

function getmessage(2, WM_CREATE)
{string b="Пауза";
btn2d2=CreateWindow(2,"BUTTON",b,1342177280, 18,20,160,25,gethwnd(2),0,0,0);
}

function Dialog25()
{createdialog(2); showdialog(2,"test",gx/2,gy/2,200,100,2,0);
}


function Pst()
{
loop()
{
c_w("Pst - Пауза ");
if (flbtn2d2==0) return;
sleep(100);
}
return;
}




function console_create()
{FreeConsole(); AllocConsole(); SetConsoleTitle("log"); SetConsoleCP(windows_1251); SetConsoleOutputCP(windows_1251); return GetStdHandle(STD_OUTPUT_HANDLE);
}

function console_pos(int X,int Y,int nWidth,int nHeight)
{MoveWindow(GetConsoleWindow(), X, Y, nWidth, nHeight, 1);
}

function c_w(string text)
{char buffer[99999]; int written; strcpy(#buffer[0], text+"^r^n"); WriteConsole(h_console, address(#buffer[0]), size(#buffer[0]), address(#written), 0);
}

function console_close()
{FreeConsole();
}

function console_setcolor(int text_color)
{SetConsoleTextAttribute(h_console, text_color + FOREGROUND_INTENSITY);
}

function console_setfont(int height_font)
{string font_name = "Lucida Console"; int width_font = height_font/1.5; char console_font_info[84];
initialarray(#console_font_info[0], 0); writeaddress(84, address(#console_font_info[0])); writeaddress(0, address(#console_font_info[4])); writeaddress(width_font, address(#console_font_info[8]));
writeaddress(height_font, address(#console_font_info[10])); MultiByteToWideChar(CP_ACP, 0, font_name, size(font_name), address(#console_font_info[20]), 64);
SetCurrentConsoleFontEx(h_console, 0, address(#console_font_info[0]));
}

exit:
 
 Top
Adomb
Отправлено: 10 Августа, 2020 - 16:14:30
Post Id



Пользователь
Мастер


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




Kibor , ну раньше же выполнялось. При нажатии кнопки исполнялась функция, в неё посылалось 7200 "тиканий". Функция исполнялась - соответственно остальной скрипт останавливался - два действия параллельно кибор же исполнять не может? Ещё раз кнопку нажимали - в эту же функцию посылалось меньшее значение, функция начинала работать заново с меньшим значением и отработав - прерывалась - выполнение скрипта продолжалось с места где его остановили. И полтора года так работало. Сейчас основной скрипт идёт, когда нажимаю кнопку - кибор не хочет исполнять то что написано в скрипте после срабатывания кнопки - то есть не вызывает функцию Pst(7200);
Как-то я в растерянности - из скрипта что я выложил видно же, что он не работает.
И как сделать постановку скрипта на паузу теперь? Чтобы после снятия с него он возвращался к тому же месту откуда его остановили?
(Добавление)
Сейчас посмотрю скрипт. Пока писал не видел

(Отредактировано автором: 10 Августа, 2020 - 16:19:17)

 
 Top
Kibor
Отправлено: 10 Августа, 2020 - 16:21:57
Post Id



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


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




 Adomb пишет:
И полтора года так работало

И вылетало.
 Adomb пишет:
И как сделать постановку скрипта на паузу теперь? Чтобы после снятия с него он возвращался к тому же месту откуда его остановили?


Так как я написал выше.
Вот код с проверкой где остановился и где продолжил.
Если остановить после низкого сигнала - продолжит с высокого. Если остановить после высокого - продолжит с низкого. Короче продолжит дальше.

CODE:
external(INT, "MultiByteToWideChar", "MultiByteToWideChar", "Kernel32.dll"); external(INT, "GetStdHandle", "GetStdHandle", "Kernel32.dll"); external(INT, "SetConsoleCP", "SetConsoleCP", "Kernel32.dll"); external(INT, "SetConsoleOutputCP", "SetConsoleOutputCP", "Kernel32.dll");
external(INT, "SetConsoleTextAttribute", "SetConsoleTextAttribute", "Kernel32.dll"); external(INT, "WriteConsole", "WriteConsoleA", "Kernel32.dll"); external(INT, "GetConsoleWindow", "GetConsoleWindow", "Kernel32.dll"); external(INT, "AllocConsole", "AllocConsole", "Kernel32.dll");
external(INT, "FreeConsole", "FreeConsole", "Kernel32.dll"); external(INT, "SetConsoleTitle", "SetConsoleTitleA", "Kernel32.dll"); external(INT, "SetCurrentConsoleFontEx", "SetCurrentConsoleFontEx", "Kernel32.dll"); external(INT, "MoveWindow", "MoveWindow", "User32.dll");
#define STD_OUTPUT_HANDLE -11 #define windows_1251 1251 #define BLUE 1 #define GREEN 2 #define RED 4 #define FOREGROUND_INTENSITY 8 #define CYAN 3 #define MAGENTA 5 #define YELLOW 6 #define WHITE 7 #define CP_ACP 0
int h_console=console_create(), unnp; console_setfont(13); console_pos(930, 350, 440, 380); console_setcolor(BLUE);
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll"); external(INT, "CreateWindow", "CreateWindowExA", "User32.dll"); external(INT, "SendMessage", "SendMessageA", "User32.dll");
////////////////////////////////////////////////////////////////////////////
int gx, gy, col; getdisplay(col, gx, gy);
int btn2d2, flbtn2d2=0;

Dialog25();

loop(){beep(400,700); beep(1400,700); c_w("Pst - Скрипт");}

function getmessage(2, WM_COMMAND)
{
if(message.lparam==btn2d2)
{
if(flbtn2d2) flbtn2d2=0;
else flbtn2d2=1;

if(flbtn2d2==0)
{
SetWindowText(btn2d2, "Пауза"); c_w("2, WM_COMMAND Пауза");
return;
}

else
{
SetWindowText(btn2d2, "Отменить паузу"); c_w("2, WM_COMMAND Отменить паузу");
Pst();
}

}
}

function getmessage(2, WM_CREATE)
{string b="Пауза";
btn2d2=CreateWindow(2,"BUTTON",b,1342177280, 18,20,160,25,gethwnd(2),0,0,0);
}

function Dialog25()
{createdialog(2); showdialog(2,"test",gx/2,gy/2,200,100,2,0);
}


function Pst()
{
loop()
{
c_w("Pst - Пауза ");
if (flbtn2d2==0) return;
sleep(100);
}
return;
}




function console_create()
{FreeConsole(); AllocConsole(); SetConsoleTitle("log"); SetConsoleCP(windows_1251); SetConsoleOutputCP(windows_1251); return GetStdHandle(STD_OUTPUT_HANDLE);
}

function console_pos(int X,int Y,int nWidth,int nHeight)
{MoveWindow(GetConsoleWindow(), X, Y, nWidth, nHeight, 1);
}

function c_w(string text)
{char buffer[99999]; int written; strcpy(#buffer[0], text+"^r^n"); WriteConsole(h_console, address(#buffer[0]), size(#buffer[0]), address(#written), 0);
}

function console_close()
{FreeConsole();
}

function console_setcolor(int text_color)
{SetConsoleTextAttribute(h_console, text_color + FOREGROUND_INTENSITY);
}

function console_setfont(int height_font)
{string font_name = "Lucida Console"; int width_font = height_font/1.5; char console_font_info[84];
initialarray(#console_font_info[0], 0); writeaddress(84, address(#console_font_info[0])); writeaddress(0, address(#console_font_info[4])); writeaddress(width_font, address(#console_font_info[8]));
writeaddress(height_font, address(#console_font_info[10])); MultiByteToWideChar(CP_ACP, 0, font_name, size(font_name), address(#console_font_info[20]), 64);
SetCurrentConsoleFontEx(h_console, 0, address(#console_font_info[0]));
}

exit:
 
 Top
Adomb
Отправлено: 10 Августа, 2020 - 16:25:54
Post Id



Пользователь
Мастер


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




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


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




Powered by