Almighty |
Отправлено: 18 Февраля, 2019 - 20:15:28
|
Участник
Покинул форум
Сообщений всего: 64
Дата рег-ции: Июнь 2018
Откуда: Kyiv
Репутация: 2
|
Dantes3000 пишет: Ну совсем недавно же точно такая тема была:
В случае "(пользователь в игре делает свои правки)" нужно после нажатия кнопки "продолжить" заново считать данные из контролов,галок и тд
Понял, искал не нашел, извиняюсь. Спасибо за ответ. |
|
|
Zireael |
Отправлено: 19 Февраля, 2019 - 02:47:15
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Как добавить кнопку "Пауза" с выводом на экран - чтобы пользователь мог переместить ее в удобную для него зону на экране.
Кнопка (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "WindowFromPoint", "WindowFromPoint", "User32.dll" );
external(INT, "SetWindowPos", "SetWindowPos", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
external(INT, "GetWindowRect", "GetWindowRect", "User32.dll" );
int b0, mouse_x, mouse_y, delta_x, delta_y, flag=0, rect[4];
createdialog(2);
showdialog(2, "Диалог",500, 300, 100, 40, 1, 1);
SetWindowLong(gethwnd(2), -16, WS_VISIBLE);
enabletimer(0);
int a=0;
loop()
{
// тут скрипт
// например:
textbkcolor(255, 65280);
textout(0, 300, 300, format(a), 0);
a++;
sleep(1);
}
function getmessage(2, WM_CREATE)
{
b0=CreateWindow(0, "BUTTON", "Пауза", WS_CHILD | WS_VISIBLE, -3, -3, 100, 40, gethwnd(2), 0, 0, 0); // создать кнопку
}
function getmessage(2, WM_COMMAND)
{
if(message.lparam==b0)
{
if(flag) // если переменная flag не равна 0
{
SetWindowText(b0, "Пауза"); flag=0; // меняем имя кнопки и ставим флаг 0
}
else // иначе
{
SetWindowText(b0, "Продолжить"); flag=1; // меняем имя кнопки и ставим флаг 1
}
}
}
CREATE_TIMER(0, 50)
{
while(flag || getkeystate(2)) // пока flag не равно 0 или нажата правая кнопка
{
getmouse(mouse_x, mouse_y); // получить координаты курсора
if(WindowFromPoint(mouse_x, mouse_y)==b0) // получить хендл окна под курсором, если он равен с хендлу кнопки
{
if(GetWindowRect(b0, address(#rect[0]))) // получить позицию кнопки
{
delta_x=mouse_x-rect[0]; delta_y=mouse_y-rect[1]; // разница координат курсора и координат кнопки
while(getkeystate(2)) // пока нажата правая кнопка мыши
{
getmouse(mouse_x, mouse_y); // получить координаты курсора
SetWindowPos(gethwnd(2), 0, mouse_x-delta_x, mouse_y-delta_y, -1, -1, 1); // переместить кнопку
sleep(10);
}
}
}
else
{
if(flag==0)break; // если хендл под курсором не равен хендлу кнопку и flag равно 0
}
}
}
Клик левой кнопкой мыши переименует кнопку в 'Продолжить' и приостановит скрипт.
Повторный клик левой кнопкой мыши переименует кнопку в 'Пауза' и запустит скрипт.
Зажав правую кнопку мыши можно переместить кнопку. |
|
|
CKA3KA |
Отправлено: 22 Марта, 2019 - 07:56:19
|
Участник
Покинул форум
Сообщений всего: 66
Дата рег-ции: Февр. 2019
Репутация: 1
|
Zireael пишет: Цитата: Как добавить кнопку "Пауза" с выводом на экран - чтобы пользователь мог переместить ее в удобную для него зону на экране.
Кнопка (Отобразить)CODE:#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll" );
external(INT, "SetWindowLong", "SetWindowLongA", "User32.dll" );
external(INT, "WindowFromPoint", "WindowFromPoint", "User32.dll" );
external(INT, "SetWindowPos", "SetWindowPos", "User32.dll" );
external(INT, "SetWindowText", "SetWindowTextA", "User32.dll" );
external(INT, "GetWindowRect", "GetWindowRect", "User32.dll" );
int b0, mouse_x, mouse_y, delta_x, delta_y, flag=0, rect[4];
createdialog(2);
showdialog(2, "Диалог",500, 300, 100, 40, 1, 1);
SetWindowLong(gethwnd(2), -16, WS_VISIBLE);
enabletimer(0);
int a=0;
loop()
{
// тут скрипт
// например:
textbkcolor(255, 65280);
textout(0, 300, 300, format(a), 0);
a++;
sleep(1);
}
function getmessage(2, WM_CREATE)
{
b0=CreateWindow(0, "BUTTON", "Пауза", WS_CHILD | WS_VISIBLE, -3, -3, 100, 40, gethwnd(2), 0, 0, 0); // создать кнопку
}
function getmessage(2, WM_COMMAND)
{
if(message.lparam==b0)
{
if(flag) // если переменная flag не равна 0
{
SetWindowText(b0, "Пауза"); flag=0; // меняем имя кнопки и ставим флаг 0
}
else // иначе
{
SetWindowText(b0, "Продолжить"); flag=1; // меняем имя кнопки и ставим флаг 1
}
}
}
CREATE_TIMER(0, 50)
{
while(flag || getkeystate(2)) // пока flag не равно 0 или нажата правая кнопка
{
getmouse(mouse_x, mouse_y); // получить координаты курсора
if(WindowFromPoint(mouse_x, mouse_y)==b0) // получить хендл окна под курсором, если он равен с хендлу кнопки
{
if(GetWindowRect(b0, address(#rect[0]))) // получить позицию кнопки
{
delta_x=mouse_x-rect[0]; delta_y=mouse_y-rect[1]; // разница координат курсора и координат кнопки
while(getkeystate(2)) // пока нажата правая кнопка мыши
{
getmouse(mouse_x, mouse_y); // получить координаты курсора
SetWindowPos(gethwnd(2), 0, mouse_x-delta_x, mouse_y-delta_y, -1, -1, 1); // переместить кнопку
sleep(10);
}
}
}
else
{
if(flag==0)break; // если хендл под курсором не равен хендлу кнопку и flag равно 0
}
}
}
Клик левой кнопкой мыши переименует кнопку в 'Продолжить' и приостановит скрипт.
Повторный клик левой кнопкой мыши переименует кнопку в 'Пауза' и запустит скрипт.
Зажав правую кнопку мыши можно переместить кнопку.
Попроповал - а оно процессор за 50% грузит,
чета не то,
у меня мой бот в худшем случае до 3% а в среднем 2%
|
|
|
Zireael |
Отправлено: 22 Марта, 2019 - 09:51:59
|
Эксперт
Покинул форум
Сообщений всего: 4466
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Попроповал - а оно процессор за 50% грузит
Добавить sleep() в цикл в таймере.
Цитата: CREATE_TIMER(0, 50)
{
while(flag || getkeystate(2)) // пока flag не равно 0 или нажата правая кнопка
{
getmouse(mouse_x, mouse_y); // получить координаты курсора
if(WindowFromPoint(mouse_x, mouse_y)==b0) // получить хендл окна под курсором, если он равен с хендлу кнопки
{
if(GetWindowRect(b0, address(#rect[0]))) // получить позицию кнопки
{
delta_x=mouse_x-rect[0]; delta_y=mouse_y-rect[1]; // разница координат курсора и координат кнопки
while(getkeystate(2)) // пока нажата правая кнопка мыши
{
getmouse(mouse_x, mouse_y); // получить координаты курсора
SetWindowPos(gethwnd(2), 0, mouse_x-delta_x, mouse_y-delta_y, -1, -1, 1); // переместить кнопку
sleep(10);
}
}
}
else
{
if(flag==0)break; // если хендл под курсором не равен хендлу кнопку и flag равно 0
}
sleep(1); // добавить
}
} |
|
|
|