Kostick |
Отправлено: 18 Января, 2022 - 16:21:54
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Допустим есть диалоговое окно, где предлагают ввести в поле число, после соответственно начать запуск. Нужно, чтобы это чисто записалось в переменную.
Например, я хочу ввести чисто 70, и нужно, чтобы стало по смыслу как int x=70;
Я хочу это сделать, чтобы менять область поиска изображения не останавливая бота, т.е. чтобы я вводил x и y, и область поиска менялась. Для удобства я хотел просто вывести значения переменных на экран через TextOut. Но и без него я пробовал, та же ошибка.
Я попытался это сделать, но выдает ошибку:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Алгоритм в визуальном редакторе:
[img](для просмотра ссылки Вам необходимо авторизоваться) /img]
Сам код:
CODE:int X_nach; // Начальные координаты области по X
int Y_nach; // Начальные координаты области по Y
int X_ogr; // Конечные координаты области по X
int Y_ogr; // Конечные координаты области по X
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
pos_size_button0[0][0]=121; pos_size_button0[0][1]=136; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Запуск бота";
//////////
int pos_size_edit0[4][4];
string text_edit0[4];
pos_size_edit0[0][0]=57; pos_size_edit0[0][1]=25; pos_size_edit0[0][2]=83; pos_size_edit0[0][3]=20;
pos_size_edit0[1][0]=57; pos_size_edit0[1][1]=51; pos_size_edit0[1][2]=82; pos_size_edit0[1][3]=20;
pos_size_edit0[2][0]=243; pos_size_edit0[2][1]=23; pos_size_edit0[2][2]=100; pos_size_edit0[2][3]=19;
pos_size_edit0[3][0]=244; pos_size_edit0[3][1]=49; pos_size_edit0[3][2]=100; pos_size_edit0[3][3]=20;
text_edit0[0]="470"; text_edit0[1]="70"; text_edit0[2]="1555"; text_edit0[3]="917";
//////////
int pos_size_static0[6][4];
string text_static0[6];
pos_size_static0[0][0]=8; pos_size_static0[0][1]=3; pos_size_static0[0][2]=168; pos_size_static0[0][3]=17;
pos_size_static0[1][0]=17; pos_size_static0[1][1]=27; pos_size_static0[1][2]=36; pos_size_static0[1][3]=19;
pos_size_static0[2][0]=16; pos_size_static0[2][1]=52; pos_size_static0[2][2]=37; pos_size_static0[2][3]=22;
pos_size_static0[3][0]=190; pos_size_static0[3][1]=4; pos_size_static0[3][2]=176; pos_size_static0[3][3]=17;
pos_size_static0[4][0]=193; pos_size_static0[4][1]=25; pos_size_static0[4][2]=46; pos_size_static0[4][3]=20;
pos_size_static0[5][0]=193; pos_size_static0[5][1]=51; pos_size_static0[5][2]=44; pos_size_static0[5][3]=20;
text_static0[0]="Введите Начальные координаты"; text_static0[1]="X_нач"; text_static0[2]="Y_нач"; text_static0[3]="Введите Конечные координаты"; text_static0[4]="X_конеч"; text_static0[5]="Y_конеч";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "
Диалог", 291, 347, 376, 210, 1, 1);
//////////
Запуск бота();
text_edit0[0]=X_nach;
text_edit0[1]=Y_nach;
text_edit0[2]=X_ogr;
text_edit0[3]=Y_ogr;
TextOut(0, X_nach, 0, 1500, 100, 0, 16777215);
TextOut(0, Y_nach, 0, 1500, 120, 0, 16777215);
TextOut(0, X_ogr, 0, 0, 0, 0, 16777215);
TextOut(0, Y_ogr, 0, 0, 0, 0, 16777215);
goto KIB_Exit;
KIB_Exit:;
function Запуск бота()
{
loop()
{
goto KIB_4;
KIB_7:;
return;
goto KIB_Exit;
KIB_5:;
sleep(10);
goto KIB_C3;
KIB_4: if(flag_button0[0]==1) goto KIB_7;
goto KIB_5;
KIB_C3:
}
goto KIB_Exit;
KIB_Exit:;
}
function TextOut(int n, string text, int o, int x, int y, int colt, int colf)
{
textbkcolor (colt,colf);
textout(n, x, y, text, o);
}
(Отредактировано автором: 18 Января, 2022 - 16:29:48) |
|
|
Zireael |
Отправлено: 19 Января, 2022 - 01:34:25
|
Эксперт
Покинул форум
Сообщений всего: 4469
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: TextOut(0, X_nach, 0, 1500, 100, 0, 16777215);
Чтобы вывести переменную int в textout:
Цитата: TextOut(0, format(X_nach), 0, 1500, 100, 0, 16777215); |
|
|
Kostick |
Отправлено: 19 Января, 2022 - 08:23:34
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Да, это помогло. Просто я пробовал formatsn и format по отдельности, а оказывается надо было вместе. Спасибо.
Но тут возник новый момент, не понятный для меня. Когда я запускаю код, появляется диалоговое окно. Когда я меняю значения и нажимаю "Запуск бота", то числа возвращаются к начальным в полях ввода. Что надо добавить, чтобы числа в поле ввода в диалоговом окне обновлялись соответственно тем значениям, что я ввел?
Просто после всех преобразований значений я не знаю, как преобразовать "X_nach" снова в string.
Я так понимаю, это надо делать, через sendcontrol, но все еще путаюсь с форматами.(Отредактировано автором: 19 Января, 2022 - 08:31:48) |
|
|
Kibor |
Отправлено: 19 Января, 2022 - 08:40:28
|
Эксперт
Покинул форум
Сообщений всего: 8227
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Ввести в X_nach 1000 в диалоговом окне
Скрипт имеет основной цикл работы, который не останавливается.
CODE:int X_nach; // Начальные координаты области по X
int Y_nach; // Начальные координаты области по Y
int X_ogr; // Конечные координаты области по X
int Y_ogr; // Конечные координаты области по X
int pos_size_button0[1][4];
string text_button0[1];
int flag_button0[1];
pos_size_button0[0][0]=121; pos_size_button0[0][1]=136; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Запуск бота";
//////////
int pos_size_edit0[4][4];
string text_edit0[4];
pos_size_edit0[0][0]=57; pos_size_edit0[0][1]=25; pos_size_edit0[0][2]=83; pos_size_edit0[0][3]=20;
pos_size_edit0[1][0]=57; pos_size_edit0[1][1]=51; pos_size_edit0[1][2]=82; pos_size_edit0[1][3]=20;
pos_size_edit0[2][0]=243; pos_size_edit0[2][1]=23; pos_size_edit0[2][2]=100; pos_size_edit0[2][3]=19;
pos_size_edit0[3][0]=244; pos_size_edit0[3][1]=49; pos_size_edit0[3][2]=100; pos_size_edit0[3][3]=20;
text_edit0[0]="470"; text_edit0[1]="70"; text_edit0[2]="1555"; text_edit0[3]="917";
//////////
int pos_size_static0[6][4];
string text_static0[6];
pos_size_static0[0][0]=8; pos_size_static0[0][1]=3; pos_size_static0[0][2]=168; pos_size_static0[0][3]=17;
pos_size_static0[1][0]=17; pos_size_static0[1][1]=27; pos_size_static0[1][2]=36; pos_size_static0[1][3]=19;
pos_size_static0[2][0]=16; pos_size_static0[2][1]=52; pos_size_static0[2][2]=37; pos_size_static0[2][3]=22;
pos_size_static0[3][0]=190; pos_size_static0[3][1]=4; pos_size_static0[3][2]=176; pos_size_static0[3][3]=17;
pos_size_static0[4][0]=193; pos_size_static0[4][1]=25; pos_size_static0[4][2]=46; pos_size_static0[4][3]=20;
pos_size_static0[5][0]=193; pos_size_static0[5][1]=51; pos_size_static0[5][2]=44; pos_size_static0[5][3]=20;
text_static0[0]="Введите Начальные координаты"; text_static0[1]="X_нач"; text_static0[2]="Y_нач"; text_static0[3]="Введите Конечные координаты"; text_static0[4]="X_конеч"; text_static0[5]="Y_конеч";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "Диалог", 291, 347, 376, 210, 1, 1);
enabletimer(0);
//////////
Read_Par();
//Основной цикл бота
loop()
{
if (X_nach==1000) messagebox ("X_nach = 1000");
beep(1000, 55);
sleep(100);
}
function TextOut(int n, string text, int o, int x, int y, int colt, int colf)
{
textbkcolor (colt,colf);
textout(n, x, y, text, o);
}
function Read_Par()
{
X_nach=formatsn(text_edit0[0]);
Y_nach=formatsn(text_edit0[1]);
X_ogr=formatsn(text_edit0[2]);
Y_ogr=formatsn(text_edit0[3]);
resettextout(1);
TextOut(0, format(X_nach), 0, 10, 10, 0, 16777215);
TextOut(1, format(Y_nach), 0, 10, 30, 0, 16777215);
TextOut(2, format(X_ogr), 0, 10, 50, 0, 16777215);
TextOut(3, format(Y_ogr), 0, 10, 70, 0, 16777215);
}
CREATE_TIMER(0, 100)//Номер таймера, выполнение таймера через мсек.
{
if(flag_button0[0]==1)
{
flag_button0[0]=0;
Read_Par();
}
}
|
|
|
Kostick |
Отправлено: 19 Января, 2022 - 12:24:15
|
Мастер
Покинул форум
Сообщений всего: 184
Дата рег-ции: Авг. 2020
Репутация: 1
|
Спасибо, это помогло.
А как можно реализовать паузу?
Допустим, есть код, который выполняет движения мышки, поэтому использовать диалоговое окно во время работы возможности нет, и нужно поставить код на паузу, например, при нажатии клавиши q.
Я попытался реализовать эту функцию. Добавил переменную "int n_pause=0;" и проверку, если int n_pause=0; делай код дальше, иначе спи 100 мс. Добавил таймер если наживается кнопка q, то меняй int n_pause=1; иначе ничего не делай. И добавил кнопку "Продолжить в диалоговом окне".
Но когда запускаю этот код, выдает ошибку:(для просмотра ссылки Вам необходимо авторизоваться) Сам алгоритм в визуальном редакторе:(для просмотра ссылки Вам необходимо авторизоваться) Может есть другой способ реализовать паузу?(Отредактировано автором: 19 Января, 2022 - 12:44:14) |
|
|
Kibor |
Отправлено: 19 Января, 2022 - 12:40:59
|
Эксперт
Покинул форум
Сообщений всего: 8227
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Kostick пишет: А еще не подскажете, как обычно реализовывается функция паузы в диалоговом окне?
CODE:int X_nach; // Начальные координаты области по X
int Y_nach; // Начальные координаты области по Y
int X_ogr; // Конечные координаты области по X
int Y_ogr; // Конечные координаты области по X
int pos_size_button0[2][4];
string text_button0[2];
int flag_button0[2];
pos_size_button0[0][0]=121; pos_size_button0[0][1]=136; pos_size_button0[0][2]=100; pos_size_button0[0][3]=20;
text_button0[0]="Запуск бота";
pos_size_button0[1][0]=10; pos_size_button0[1][1]=136; pos_size_button0[1][2]=100; pos_size_button0[1][3]=20;
text_button0[1]="Пауза";
//////////
int pos_size_edit0[4][4];
string text_edit0[4];
pos_size_edit0[0][0]=57; pos_size_edit0[0][1]=25; pos_size_edit0[0][2]=83; pos_size_edit0[0][3]=20;
pos_size_edit0[1][0]=57; pos_size_edit0[1][1]=51; pos_size_edit0[1][2]=82; pos_size_edit0[1][3]=20;
pos_size_edit0[2][0]=243; pos_size_edit0[2][1]=23; pos_size_edit0[2][2]=100; pos_size_edit0[2][3]=19;
pos_size_edit0[3][0]=244; pos_size_edit0[3][1]=49; pos_size_edit0[3][2]=100; pos_size_edit0[3][3]=20;
text_edit0[0]="470"; text_edit0[1]="70"; text_edit0[2]="1555"; text_edit0[3]="917";
//////////
int pos_size_static0[6][4];
string text_static0[6];
pos_size_static0[0][0]=8; pos_size_static0[0][1]=3; pos_size_static0[0][2]=168; pos_size_static0[0][3]=17;
pos_size_static0[1][0]=17; pos_size_static0[1][1]=27; pos_size_static0[1][2]=36; pos_size_static0[1][3]=19;
pos_size_static0[2][0]=16; pos_size_static0[2][1]=52; pos_size_static0[2][2]=37; pos_size_static0[2][3]=22;
pos_size_static0[3][0]=190; pos_size_static0[3][1]=4; pos_size_static0[3][2]=176; pos_size_static0[3][3]=17;
pos_size_static0[4][0]=193; pos_size_static0[4][1]=25; pos_size_static0[4][2]=46; pos_size_static0[4][3]=20;
pos_size_static0[5][0]=193; pos_size_static0[5][1]=51; pos_size_static0[5][2]=44; pos_size_static0[5][3]=20;
text_static0[0]="Введите Начальные координаты"; text_static0[1]="X_нач"; text_static0[2]="Y_нач"; text_static0[3]="Введите Конечные координаты"; text_static0[4]="X_конеч"; text_static0[5]="Y_конеч";
//////////
createdialog(0, BUTTON, #pos_size_button0[0][0], #text_button0[0], #flag_button0[0] |
EDIT, #pos_size_edit0[0][0], #text_edit0[0] |
STATIC, #pos_size_static0[0][0], #text_static0[0]);
//////////
showdialog(0, "Диалог", 291, 347, 376, 210, 1, 1);
enabletimer(0);
//////////
Read_Par();
//Основной цикл бота
loop()
{
if (X_nach==1000) messagebox ("X_nach = 1000");
beep(1000, 55);
sleep(100);
}
function TextOut(int n, string text, int o, int x, int y, int colt, int colf)
{
textbkcolor (colt,colf);
textout(n, x, y, text, o);
}
function Read_Par()
{
X_nach=formatsn(text_edit0[0]);
Y_nach=formatsn(text_edit0[1]);
X_ogr=formatsn(text_edit0[2]);
Y_ogr=formatsn(text_edit0[3]);
resettextout(1);
TextOut(0, format(X_nach), 0, 10, 10, 0, 16777215);
TextOut(1, format(Y_nach), 0, 10, 30, 0, 16777215);
TextOut(2, format(X_ogr), 0, 10, 50, 0, 16777215);
TextOut(3, format(Y_ogr), 0, 10, 70, 0, 16777215);
}
CREATE_TIMER(0, 100)//Номер таймера, выполнение таймера через мсек.
{
if(flag_button0[0]==1)
{
flag_button0[0]=0;
Read_Par();
}
//////////////
if(flag_button0[1]==1)
{
flag_button0[1]=0;
text_button0[1]="Продолжить";
while(flag_button0[1]==0)sleep(10);//Цико паузы пока опять не нажмем кнопку
flag_button0[1]=0;
text_button0[1]="Пауза";
}
/////////////
if (getkeystate(65))//Пауза с помощью нажатия кнопки A на клавиатуре
{
while(getkeystate(65))sleep(10);
text_button0[1]="Продолжить";
while(getkeystate(65)==0)sleep(10);
while(getkeystate(65))sleep(10);
text_button0[1]="Пауза";
}
} |
|
|
|