Keeper |
Отправлено: 25 Августа, 2013 - 11:28:10
|
Наблюдатель
Покинул форум
Сообщений всего: 34
Дата рег-ции: Авг. 2013
Откуда: Россия, Иркутск
Репутация: 0
|
Kibor пишет: Что объяснить?
Мне нужен код при запуске которого выходит эта ошибка, так как я не знаю какой код считается рабочим....
Код должен быть полным без изменений с приложением используемых .bmp
int Box1[5][5],Box1X,Box1Y;
int Box2[5][5],Box2X,Box2Y;
int Box3[5][5],Box3X,Box3Y;
int RunLut,Wait;
..........................................
function Lut()
{
if (findimage(1,#Box1[0][0],0,#Box1X,#Box1Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box1X+2,Box1Y+2,w);mouse(LEFT);
sleep(rand(500,800));
}//if (findimage(1,#Box1[0][0],0,#Box1X,#Box1Y,0,0,w.widthclient,w.heightclient,w)==1)
else
{
if (findimage(1,#Box2[0][0],0,#Box2X,#Box2Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box2X+2,Box2Y+2,w);mouse(LEFT);
sleep(rand(500,800));
}//if (findimage(1,#Box2[0][0],0,#Box2X,#Box2Y,0,0,w.widthclient,w.heightclient,w)==1)
else
{
if (findimage(1,#Box3[0][0],0,#Box3X,#Box3Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box3X+2,Box3Y+2,w);mouse(LEFT);
sleep(rand(500,800));
}//if (findimage(1,#Box3[0][0],0,#Box3X,#Box3Y,0,0,w.widthclient,w.heightclient,w)==1)
else
{
RunLut=0;
}//else
}//else
}//else
}//function Lut()
..........................................
Файлы картинок
Этот код рабочий.
(Добавление)
Kibor пишет: Что объяснить?
Мне нужен код при запуске которого выходит эта ошибка, так как я не знаю какой код считается рабочим....
Код должен быть полным без изменений с приложением используемых .bmp
Добавляю функцию:
int RD=300,Att;
....................................
function Moving()
{
if (Att==0 && RunLut==0) Wait++;
if (Wait>=rand(3,5))
{
x0=300;
y0=10;
Ang=rand(10,170);
mX=x0+sin(Ang)*RD;
mY=y0+cos(Ang)*RD;
mousemove(mX,mY,w);
Wait=0;
}
}
И код приведённый в прошлом посте перестаёт работать. |
|
|
Kibor |
Отправлено: 25 Августа, 2013 - 11:38:52
|
Эксперт
Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Keeper пишет: int Box1[5][5],Box1X,Box1Y;
Keeper пишет: if (findimage(1,#Box1[0][0],0,#Box1X,#Box1Y
Ошибка. Допускается только одномерные массивы
int Box1[5][5],Box1X[1],Box1Y[1];
if (findimage(1,#Box1[0][0],0,#Box1X[0],#Box1Y[0],
mousemove(Box1X[0]+2,Box1Y[0]+2,w)
Сканирование экрана и поиск изображений
Ошибка работы с памятью. Так и есть из за ошибок в fingimage |
|
|
Keeper |
Отправлено: 25 Августа, 2013 - 11:49:46
|
Наблюдатель
Покинул форум
Сообщений всего: 34
Дата рег-ции: Авг. 2013
Откуда: Россия, Иркутск
Репутация: 0
|
Kibor пишет: Keeper пишет: int Box1[5][5],Box1X,Box1Y;
Keeper пишет: if (findimage(1,#Box1[0][0],0,#Box1X,#Box1Y
Ошибка. Допускается только одномерные массивы
int Box1[5][5],Box1X [1],Box1Y [1];
if (findimage(1,#Box1[0][0],0,#Box1X [0],#Box1Y [0],
mousemove(Box1X [0]+2,Box1Y [0]+2,w)
Сканирование экрана и поиск изображений
Да вот тут вы не правы!
Я нашёл ошибку, если её можно таковой назвать
Описываю:
После написания функции Moving() я объявил переменную int RD=300; после чего запустил код, спустя несколько секунд остановил его по нажатию Ctrl+Shift+Z, вместе с тем нажатие Ctrl+Z отменяет последнее действие в программе, уж не знаю каким образом это происходит, но переменная int RD=300; которую я объявил сразу перед запуском кода исчезла, вот и ошибка!
Объявил переменную заново, теперь выше приведённые мой функции работают! |
|
|
Keeper |
Отправлено: 25 Августа, 2013 - 12:43:05
|
Наблюдатель
Покинул форум
Сообщений всего: 34
Дата рег-ции: Авг. 2013
Откуда: Россия, Иркутск
Репутация: 0
|
Kibor пишет: Еп... Подзабыл устройство своей функции . Да, там нет ошибки.
Можно и так.
Да, есть такая проблема... Возникает при неоднократном нажатие на Ctrl+Shift+Z...
Надо поправить..
Да, было бы замечательно, а то вот столкнулся и понять не мог в чем дело
В любом случае, спасибо за помощь |
|
|
Kibor |
Отправлено: 25 Августа, 2013 - 17:51:41
|
Эксперт
Покинул форум
Сообщений всего: 8218
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Запретил сочетание Ctrl+Z... Теперь не отменится...
Приведенный код можно представить проще...
function Lut()
{
if (findimage(1,#Box1[0][0],0,#Box1X,#Box1Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box1X+2,Box1Y+2,w);mouse(LEFT);
sleep(rand(500,800));
return;
}//if (findimage(1,#Box1[0][0],0,#Box1X,#Box1Y,0,0,w.widthclient,w.heightclient,w)==1)
if (findimage(1,#Box2[0][0],0,#Box2X,#Box2Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box2X+2,Box2Y+2,w);mouse(LEFT);
sleep(rand(500,800));
return;
}//if (findimage(1,#Box2[0][0],0,#Box2X,#Box2Y,0,0,w.widthclient,w.heightclient,w)==1)
if (findimage(1,#Box3[0][0],0,#Box3X,#Box3Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box3X+2,Box3Y+2,w);mouse(LEFT);
sleep(rand(500,800));
return;
}//if (findimage(1,#Box3[0][0],0,#Box3X,#Box3Y,0,0,w.widthclient,w.heightclient,w)==1)
RunLut=0;
}//function Lut()
|
|
|
Keeper |
Отправлено: 25 Августа, 2013 - 18:12:50
|
Наблюдатель
Покинул форум
Сообщений всего: 34
Дата рег-ции: Авг. 2013
Откуда: Россия, Иркутск
Репутация: 0
|
Kibor пишет: Запретил сочетание Ctrl+Z... Теперь не отменится...
Приведенный код можно представить проще...
function Lut()
{
if (findimage(1,#Box1[0][0],0,#Box1X,#Box1Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box1X+2,Box1Y+2,w);mouse(LEFT);
sleep(rand(500,800));
return;
}//if (findimage(1,#Box1[0][0],0,#Box1X,#Box1Y,0,0,w.widthclient,w.heightclient,w)==1)
if (findimage(1,#Box2[0][0],0,#Box2X,#Box2Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box2X+2,Box2Y+2,w);mouse(LEFT);
sleep(rand(500,800));
return;
}//if (findimage(1,#Box2[0][0],0,#Box2X,#Box2Y,0,0,w.widthclient,w.heightclient,w)==1)
if (findimage(1,#Box3[0][0],0,#Box3X,#Box3Y,0,0,w.widthclient,w.heightclient,w)==1)
{
RunLut=1;Wait=0;
mousemove(Box3X+2,Box3Y+2,w);mouse(LEFT);
sleep(rand(500,800));
return;
}//if (findimage(1,#Box3[0][0],0,#Box3X,#Box3Y,0,0,w.widthclient,w.heightclient,w)==1)
RunLut=0;
}//function Lut()
За запрет сочетания Ctrl+Z спасибо
А насчёт кода, я так сделал изначально. но мне важна очерёдность, объясняю почему. Пока я не реализовал расчет расстояния и времени потраченного для прохождения до найденной цели, в этом упрощённом коде персонаж будет метаться между лутом как дурной.(sleep(статическое_значение) - не вариант) Так вот эта очерёдность сбора, с помощью if else, даёт относительную упорядоченность в сборе. Код я позже перепишу, когда реализую расчёт времени и расстояния. Да и переменной RunLut должно присваиваться значение 0 если не найден ни один ящик и значение 1 если найден хоть один(Надеюсь временная замена переменной типа boolean ) |
|
|
|