Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Работа с диалоговым окном

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

1. Kostick - 18 Января, 2022 - 08:21:54 - перейти к сообщению
Допустим есть диалоговое окно, где предлагают ввести в поле число, после соответственно начать запуск. Нужно, чтобы это чисто записалось в переменную.
Например, я хочу ввести чисто 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);
}



2. neba2101 - 18 Января, 2022 - 12:15:04 - перейти к сообщению
Не шарю в блоках, но вот этот код явно неверный:
CODE:
text_edit0[0]=X_nach;
text_edit0[1]=Y_nach;
text_edit0[2]=X_ogr;
text_edit0[3]=Y_ogr;


text_edit0[0] - СТРОКА, в которой храниться текст после надписи X_нач в меню.
X_nach - int

CODE:

X_nach=formatsn(text_edit0[0]);
3. ivantu - 18 Января, 2022 - 12:41:28 - перейти к сообщению
CODE:

Запуск бота();
X_nach=formatsn(text_edit0[0]);
Y_nach=formatsn(text_edit0[1]);
X_ogr=formatsn(text_edit0[2]);
Y_ogr=formatsn(text_edit0[3]);

//Выводим в сообщении полученные данные, можно удалить
messagebox("X_nach="+format(X_nach)+" Y_nach="+format(Y_nach)+" X_ogr="+format(X_ogr)+" Y_ogr="+format(Y_ogr));
4. Zireael - 18 Января, 2022 - 17:34:25 - перейти к сообщению
 Цитата:
TextOut(0, X_nach, 0, 1500, 100, 0, 16777215);

Чтобы вывести переменную int в textout:
 Цитата:
TextOut(0, format(X_nach), 0, 1500, 100, 0, 16777215);
5. Kostick - 19 Января, 2022 - 00:23:34 - перейти к сообщению
Да, это помогло. Просто я пробовал formatsn и format по отдельности, а оказывается надо было вместе. Спасибо.
Но тут возник новый момент, не понятный для меня. Когда я запускаю код, появляется диалоговое окно. Когда я меняю значения и нажимаю "Запуск бота", то числа возвращаются к начальным в полях ввода. Что надо добавить, чтобы числа в поле ввода в диалоговом окне обновлялись соответственно тем значениям, что я ввел?
Просто после всех преобразований значений я не знаю, как преобразовать "X_nach" снова в string.
Я так понимаю, это надо делать, через sendcontrol, но все еще путаюсь с форматами.
6. Kibor - 19 Января, 2022 - 00:40:28 - перейти к сообщению
Ввести в 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();
}
}
7. Kostick - 19 Января, 2022 - 04:24:15 - перейти к сообщению
Спасибо, это помогло.
А как можно реализовать паузу?
Допустим, есть код, который выполняет движения мышки, поэтому использовать диалоговое окно во время работы возможности нет, и нужно поставить код на паузу, например, при нажатии клавиши q.
Я попытался реализовать эту функцию. Добавил переменную "int n_pause=0;" и проверку, если int n_pause=0; делай код дальше, иначе спи 100 мс. Добавил таймер если наживается кнопка q, то меняй int n_pause=1; иначе ничего не делай. И добавил кнопку "Продолжить в диалоговом окне".
Но когда запускаю этот код, выдает ошибку:(для просмотра ссылки Вам необходимо авторизоваться) Сам алгоритм в визуальном редакторе:(для просмотра ссылки Вам необходимо авторизоваться) Может есть другой способ реализовать паузу?
8. Kibor - 19 Января, 2022 - 04:40:59 - перейти к сообщению
 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]="Пауза";
}

}
9. Kostick - 19 Января, 2022 - 04:47:08 - перейти к сообщению
Случайно отредактировал сообщение выше, оставив только вопрос о паузе. Пока писал заново, вы уже ответили. Сейчас попробую
(Добавление)
А, это если мышкой можно управлять. Тогда немного не то. Прошу прощения, можете показать, как реализовать паузу по нажатию клавиши?
10. Kibor - 19 Января, 2022 - 04:53:58 - перейти к сообщению
 Kostick пишет:
Прошу прощения, можете показать, как реализовать паузу по нажатию клавиши?

Отредактировал предыдущий скрипт.
Паузу можно ставить или нажав мышью на паузу кнопку или нажав A на клавиатуре.

Powered by ExBB FM 1.0 Final