Здравствуйте!
Можете ли Вы подсказать мне как реализовать окно ввода текста/числа для дальнейшего применения его в коде?
перед стартом скрипта я бы хотел иметь возможность набрать текст в поле для ввода (EDIT_1), а после использовать это например в блоке KEY вместо заранее введённого текста.
Я так подозреваю нужно обьявить какие-то переменные.. умничать не буду, прошу помощи.
в этом примере скрипт делает клик в нужном поле (активирует его, в игре)
а после вводит текст в это окно
вот на всякий случай ссылка на этот образец в визуальном редакторе, если удобно:(для просмотра ссылки Вам необходимо авторизоваться) Ниже код. Спасибо за уделённое время!
win W_Kib;
int Size_Key_Char_Kib = -1;
INITDIALOG
{
sendcontrol(EDIT_0, individualcode());
}
CREATE_INTERFACE
{
DIALOG "ROBO-BJORN" 237 180
BUTTONSCRIPT "Запустить" 125 121 100 25
STATIC_0 "Ключ" 10 10 90 18
STATIC_1 "Остановить: CTRL+SHIFT+Z" 124 84 100 30
STATIC_2 "сюда ввести" 10 60 90 18
EDIT_0 "" 105 8 120 18
EDIT_1 "" 90 60 50 20
}
Mouse(0, #W_Kib, W_Kib.leftclient, W_Kib.topclient, 1000, 900, 100, "Левую клик", 1000);
Key(0, W_Kib, 0, 0, "здесь получить", "Ввод текста", 0);
function Key(int ew, win w, int p1, int c, string text, string k, int p2)
{
pause(p1);
if (ew==0)
{
if (k=="Клик"){key(c); goto hy;}
if (k=="Нажать"){keydown(c); goto hy;}
if (k=="Отпустить"){keyup(c); goto hy;}
if (k=="Ввод текста"){key(text, 0, 1, getwindow()); goto hy;}
}
if (ew==1)
{
if (k=="Клик"){if ((c>191 && c<256) || c==168 || c==184) sendlanguage("00000419", formatiw(gethwnd())); sendmessage(WM_CHAR, c, 1, w); goto hy;}
if (k=="Нажать"){sendkeydown(c, w); goto hy;}
if (k=="Отпустить"){sendkeyup(c, w); goto hy;}
if (k=="Ввод текста")
{
if (Size_Key_Char_Kib==-1)
{
Size_Key_Char_Kib=100;
new char Key_CHAR[Size_Key_Char_Kib+1];
}
int size_key=size(text);
if (Size_Key_Char_Kib<size_key)
{
delete Key_CHAR;
Size_Key_Char_Kib=size_key;
new char Key_CHAR[Size_Key_Char_Kib+1];
}
strcpy(#Key_CHAR[0], text);
for (int n=0; n<size_key; n++)
{
if ((Key_CHAR[n]>191 && Key_CHAR[n]<256) || Key_CHAR[n]==168 || Key_CHAR[n]==184) sendlanguage("00000419", formatiw(gethwnd()));
sendmessage(WM_CHAR, Key_CHAR[n], 1, w);
sleep(20);
}
}
}
hy: pause (p2);
}
function Mouse(int ew, win #w, int v_x, int v_y, int p1, int x, int y, string m, int p2)
{
pause(p1);
if (ew==0 || ew==1)
{
if (ew==1){x=v_x+x; y=v_y+y;}
if (m=="Левую клик"){mouse(LEFT, x, y); goto hy;}
if (m=="Среднюю клик"){mouse(MIDDLE, x, y); goto hy;}
if (m=="Правую клик"){mouse(RIGHT, x, y); goto hy;}
if (m=="Левую нажать"){mousedown(LEFT, x, y); goto hy;}
if (m=="Среднюю нажать"){mousedown(MIDDLE, x, y); goto hy;}
if (m=="Правую нажать"){mousedown(RIGHT, x, y); goto hy;}
if (m=="Левую отпустить"){mouseup(LEFT, x, y); goto hy;}
if (m=="Среднюю отпустить"){mouseup(MIDDLE, x, y); goto hy;}
if (m=="Правую отпустить"){mouseup(RIGHT, x, y); goto hy;}
if (m=="Левая двойной клик"){mousedbl(LEFT, x, y); goto hy;}
if (m=="Средняя двойной клик"){mousedbl(MIDDLE, x, y); goto hy;}
if (m=="Правая двойной клик"){mousedbl(RIGHT, x, y); goto hy;}
if (m=="Переместить"){mousemove(x, y); goto hy;}
}
if (ew==2)
{
if (m=="Левую клик"){sendmouse(LEFT, x, y, w); goto hy;}
if (m=="Среднюю клик"){sendmouse(MIDDLE, x, y, w); goto hy;}
if (m=="Правую клик"){sendmouse(RIGHT, x, y, w); goto hy;}
if (m=="Левую нажать"){sendmousedown(LEFT, x, y, w); goto hy;}
if (m=="Среднюю нажать"){sendmousedown(MIDDLE, x, y, w); goto hy;}
if (m=="Правую нажать"){sendmousedown(RIGHT, x, y, w); goto hy;}
if (m=="Левую отпустить"){sendmouseup(LEFT, x, y, w); goto hy;}
if (m=="Среднюю отпустить"){sendmouseup(MIDDLE, x, y, w); goto hy;}
if (m=="Правую отпустить"){sendmouseup(RIGHT, x, y, w); goto hy;}
if (m=="Левая двойной клик"){sendmousedbl(LEFT, x, y, w); goto hy;}
if (m=="Средняя двойной клик"){sendmousedbl(MIDDLE, x, y, w); goto hy;}
if (m=="Правая двойной клик"){sendmousedbl(RIGHT, x, y, w); goto hy;}
if (m=="Переместить")sendmousemove(x, y, w);
}
hy: if (m!="Бездействие")pause (p2);
}
1. bj0rn.bj0rnson - 22 Мая, 2024 - 09:11:17 - перейти к сообщению
2. bj0rn.bj0rnson - 22 Мая, 2024 - 21:21:45 - перейти к сообщению
Разобрался сам (спасибо бессоннице и, видимо, везению)
дописал в блоке старт всего одну строку:
string textin=getcontrol(EDIT_1);
я так понимаю этой строкой я объявил переменную textin и приравнял ее к данным из поля EDIT_1
а в блоке KEY визуального редактора вместо текста в кавычках указал имя той самой переменной (textin) и ВУАЛЯ! ОНО ЖИВОЕ! я в шоках. всем спасибо за внимание
PS до этого я пытался в наглую в блоке KEY писать EDIT_1. Ничего не работало. а EDIT этот получается может быть и int, и string, и чем-то еще
дописал в блоке старт всего одну строку:
string textin=getcontrol(EDIT_1);
я так понимаю этой строкой я объявил переменную textin и приравнял ее к данным из поля EDIT_1
а в блоке KEY визуального редактора вместо текста в кавычках указал имя той самой переменной (textin) и ВУАЛЯ! ОНО ЖИВОЕ! я в шоках. всем спасибо за внимание
PS до этого я пытался в наглую в блоке KEY писать EDIT_1. Ничего не работало. а EDIT этот получается может быть и int, и string, и чем-то еще
3. Zireael - 23 Мая, 2024 - 02:58:35 - перейти к сообщению
В блоке KEY можно написать getcontrol(EDIT_1).
4. bj0rn.bj0rnson - 23 Мая, 2024 - 04:57:12 - перейти к сообщению
Zireael пишет:
В блоке KEY можно написать getcontrol(EDIT_1).
добавлю в свой блокнотик. спасибо)))
а как реализовать такое:
-вместо вручную введённых данных мне нужен выбор из нескольких предложенных вариантов (выбираю COMBO вместо EDIT) и часть интерфейса готова (код ниже)
Но как правильней сделать блоксхему? что применять?
Задача бота отправлять отряды собирать ресурсы. различия и COMBO логически меняет только два блока (первый это нахождение кнопки ресурса, второй указание на найденную на карте плитку этого же ресурса.
подразумеваю четыре отдельных цикла под каждый тип ресурса, для удобства заключу каждый в свою функцию, но что дальше? что есть такое в визуальном редакторе для выполнения нужной функции в зависимости от 4 вариантов в поле COMBO
и правильно ли я понял что у комбо будет 4 состояния (0, 1, 2, 3)
INITDIALOG
{
sendcontrol(EDIT_0, individualcode());
}
CREATE_INTERFACE
{
DIALOG "BJORN-APP" 237 180
BUTTONSCRIPT "Запустить" 125 121 100 25
STATIC_0 "Ключ" 12 10 90 18
STATIC_1 "Остановить: CTRL+SHIFT+Z" 15 119 100 30
STATIC_2 "__DLS FARMER PRO BOT__" 46 92 150 18
STATIC_3 "telegram: @bjorn_automation" 12 30 160 18
STATIC_4 "выберите ресурс" 12 64 120 18
EDIT_0 "" 105 8 120 18
COMBO_0 0 "еда" | "дерево" | "сталь" | "нефть" 105 60 120 100
}
5. Zireael - 23 Мая, 2024 - 05:17:22 - перейти к сообщению
Цитата:
что есть такое в визуальном редакторе для выполнения нужной функции в зависимости от 4 вариантов в поле COMBO
Блок if.
Цитата:
и правильно ли я понял что у комбо будет 4 состояния (0, 1, 2, 3)
В описании CREATE_INTERFACE есть пример использования, в том числе комбо.