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

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

 Страниц (16): В начало « 8 9 10 11 12 13 [14] 15 16 »   

> Описание: Продолжение
Kibor
Отправлено: 19 Марта, 2021 - 21:28:41
Post Id



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


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




Paskuda ,
А сейчас с буфером как?
Проверяйте значение переменной и что функция возвращает.
 
 Top
Paskuda
Отправлено: 19 Марта, 2021 - 21:55:01
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021  
Репутация: 0




 andre пишет:
В блокноте работает.

Да, в блокноте работает нормально. Удалось выяснить что конкретно в игре иногда не срабатывают keydown(CONTROL) и keydown(SHIFT), играю с ноута.

 Zireael пишет:
В каком коде?
В приведённом коде не объявлены некоторые переменные.

 Kibor пишет:
А сейчас с буфером как?
Проверяйте значение переменной и что функция возвращает.


Все осталось по прежнему, разве что функция стала фиолетовой. Чтение с буфера срабатывает только после messagebox(); Вот конкретно проблемный участок кода оформил в виде отдельного скрипта
CODE:

int N,n;
win win_game=window ("MGCloud", "PlaykeyContainerClass", -1);
string
Name[10],
Patch="C:\Soft\kibor_set\Sorti\";

if(fopen (Patch+"6_Список.txt", "r")!=0) //В блокноте 6 наименований
{
N=freadlineall(#Name[0], 20);fclose();
}

activate(win_game);pause(1000);
sendlanguage("00000419",win_game);
//-----------------------------------
int x=30;
loop(10)
{
mousemove(x, 305);pause(500);
keydown(SHIFT);pause(500);
mouse(LEFT);pause(500);
keyup(SHIFT);pause(500);

mousemove(1025, 250);pause(500);
mousedbl(LEFT);pause(500);
keydown(CONTROL);pause(500);
key(67);pause(500);
keyup(CONTROL);pause(500);
key(ESCAPE);pause(500);

string name;
int r;

r=readclipboard(name);
//messagebox(r); //Так работает
//messagebox(name);
pause(2000);

for(n=0; n<N; n++)
{
if(Name[n]==name)
{
x=x+80;
break;
}
}
if(n==N)
{
x=x+40;
}
}
 
 Top
Kibor
Отправлено: 19 Марта, 2021 - 22:01:10
Post Id



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


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




Это вызывает ошибку?

Скопировать строку ниже
то что в буфере

CODE:
string name="";
int r;

r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(name!="то что в буфере")messagebox("ошибка переменной");
 
 Top
Zireael
Отправлено: 19 Марта, 2021 - 22:13:55
Post Id



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


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




 Цитата:
messagebox(r); //Так работает
//messagebox(name);

Тогда что не работает?
 Цитата:
Name[10]
freadlineall(#Name[0], 20);

Выделен массив на 10 строк, а читаете 20, если в файле будет больше 10 строк, то будет крит.
 
 Top
Paskuda
Отправлено: 19 Марта, 2021 - 23:07:51
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021  
Репутация: 0




 Zireael пишет:
Выделен массив на 10 строк, а читаете 20, если в файле будет больше 10 строк, то будет крит.
В файле 6 строк, я там в коменте написал

 Zireael пишет:
Тогда что не работает?

 Kibor пишет:
Скопировать строку ниже
то что в буфере


Итак, у меня цикл шифтует в чат названия, затем копирует их из чата в буфер из буфера в переменную и сравнивает со списком. Если после readclipboard() не вставить любое сообщение messagebox() то текст из буфера не копируется в переменную, я не знаю почему так, может баг, вот еще раз мой код, ошибка возникает уже на 2 цикле если не вставлять messagebox("Бла бла"Подмигивание
CODE:

int N,n;
win win_game=window ("MGCloud", "PlaykeyContainerClass", -1);
string
Name[10],
Patch="C:\Soft\kibor_set\Sorti\";

if(fopen (Patch+"6_Список.txt", "r")!=0) //В блокноте 6 наименований
{
N=freadlineall(#Name[0], 20);fclose();
}

activate(win_game);pause(1000);
sendlanguage("00000419",win_game);
//-----------------------------------
int x=30;
for(int i=0; i<10; i++)
{
mousemove(x, 305);pause(500);
keydown(SHIFT);pause(1000);
mouse(LEFT);pause(500);
keyup(SHIFT);pause(500);

mousemove(1025, 250);pause(500);
mousedbl(LEFT);pause(500);
keydown(CONTROL);pause(1000);
key(67);pause(500);
keyup(CONTROL);pause(500);
key(ESCAPE);pause(500);

string name="";
int r;

r=readclipboard(name);
if(r==-1)
messagebox("ошибка r");

//messagebox("Бла бла"); //Любое сообщение
//pause(2000);

if(i==0 && name!="Имя 1")
{
messagebox("ошибка переменной");
}
if(i==1 && name!="Имя 2")
{
messagebox("ошибка переменной");
}

for(n=0; n<N; n++)
{
if(Name[n]==name)
{
x=x+80;
break;
}
}
if(n==N)
{
x=x+40;
}
}


Надеюсь понятно объяснил
 
 Top
Kibor
Отправлено: 19 Марта, 2021 - 23:16:30
Post Id



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


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




 Paskuda пишет:
Итак, у меня цикл шифтует в чат названия, затем копирует их из чата в буфер из буфера в переменную и сравнивает со списком. Если после readclipboard() не вставить любое сообщение messagebox() то текст из буфера не копируется в переменную, я не знаю почему так, может баг, вот еще раз мой код, ошибка возникает уже на 2 цикле если не вставлять messagebox("Бла бла"

Я задал простой вопрос.
Выложенный мной код работает?
 
 Top
Zireael
Отправлено: 19 Марта, 2021 - 23:17:40
Post Id



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


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




 Цитата:
текст из буфера не копируется в переменную

С чего сделано такое утверждение?
Запустите отладчик, поставьте галку сканировать значения переменных и запустите код. Что будет в переменной name?
 
 Top
Paskuda
Отправлено: 19 Марта, 2021 - 23:53:30
Post Id



Пользователь
Участник


Покинул форум
Сообщений всего: 61
Дата рег-ции: Янв. 2021  
Репутация: 0




 Kibor пишет:
Я задал простой вопрос.
Выложенный мной код работает?

У меня там значения в буфере меняются, да код работает, вызывается ошибка переменной
CODE:

string name="";
int r;

r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(i==0 && name!="Имя 1")messagebox("ошибка переменной");
if(i==1 && name!="Имя 2")messagebox("ошибка переменной");


 Zireael пишет:
С чего сделано такое утверждение?
Запустите отладчик, поставьте галку сканировать значения переменных и запустите код. Что будет в переменной name?

Фрагмент 1 варианта отладки:
for ( int i = 0 ; i'-842150451' < 10 ; i'-842150451' ++ )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
if ( i'0' == 0 && name'Имя 1' != " Имя 1 " )
if ( i'0' == 1 && name'Имя 1' != " Имя 2 " )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
if ( i'1' == 0 && name'Имя 1' != " Имя 1 " )
if ( i'1' == 1 && name'Имя 1' != " Имя 2 " )
messagebox ( " ошибка переменной " )

2 вариант:
for ( int i = 0 ; i'-842150451' < 10 ; i'-842150451' ++ )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
messagebox ( " Бла бла " )
pause ( 2000 )
if ( i'0' == 0 && name'Имя 1' != " Имя 1 " )
if ( i'0' == 1 && name'Имя 1' != " Имя 2 " )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
messagebox ( " Бла бла " )
pause ( 2000 )
if ( i'1' == 0 && name'Имя 2' != " Имя 1 " )
if ( i'1' == 1 && name'Имя 2' != " Имя 2 " )
...
string name = " "
r = readclipboard ( name'' )
if ( r'1' == - 1 )
messagebox ( " Бла бла " )
pause ( 2000 )
if ( i'2' == 0 && name'Имя 3' != " Имя 1 " )
if ( i'2' == 1 && name'Имя 3' != " Имя 2 " )
...

(Отредактировано автором: 20 Марта, 2021 - 00:01:42)

 
 Top
Zireael
Отправлено: 20 Марта, 2021 - 00:21:44
Post Id



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


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




Может не срабатывает Ctrl+C и readclipboard вообще не причём. Это же легко проверить.
CODE:
string name="";

writeclipboard("Имя 1");
readclipboard(name);
textout(0, 0, 0, name, 1);
pause(2000);

writeclipboard("Имя 2");
readclipboard(name);
textout(0, 0, 0, name, 1);
pause(2000);

writeclipboard("Имя 3");
readclipboard(name);
textout(0, 0, 0, name, 1);
pause(2000);
 
 Top
Kibor
Отправлено: 20 Марта, 2021 - 08:08:25
Post Id



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


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




 Paskuda пишет:
У меня там значения в буфере меняются, да код работает, вызывается ошибка переменной

Я не спрашиваю что где меняется. Я спрашиваю исключительно по этому коду и действиям: Для его теста надо перезапустить компьютер. НИЧЕГО не запускать своего. Выполнить этот код скопировав в буфер сначала текст приведенный. И четко описать что получается.


Скопировать строку ниже
то что в буфере

CODE:
string name="";
int r;

r=readclipboard(name);
if(r==-1)messagebox("ошибка r");
if(name!="то что в буфере")messagebox("ошибка переменной");



============

Никто не знает что и как еще юзает ваш буфер обмена.
Поэтому делайте такой тест.
 
 Top
Страниц (16): В начало « 8 9 10 11 12 13 [14] 15 16 »
Сейчас эту тему просматривают: 5 (гостей: 5, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by