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

Страниц (5): « 1 2 3 [4] 5 »
 

31. sakr1dd - 06 Октября, 2013 - 14:43:09 - перейти к сообщению
Да да я понял,оно кликало на первую попавшуююся стрелочку(( Только мне еще надо сделать условие Либо начиная от зеленого окна либо от синего там 2 варианта возможны.... Вообще стим это платформа для игр,тобиш когда человек в игре окно зеленое,когда просто в стиме синее,когда оффлайн серое,оффлайн мне не надо,а вот когда в стиме или в игре нужно... как можно добавить к тому что есть чтобы выполнялось условие когда видит зеленое окно и нажимает на стрелку либо если нету зеленого чтобы искал синее окошко и нажимал на стрелку?
32. Kibor - 06 Октября, 2013 - 14:49:29 - перейти к сообщению
 Цитата:
int Image_0[100][100];
if (loadimage (#Image_0[0][0], "C:\Prog\A6.bmp")>0)messagebox("Image_1 Congr");//Зеленая рамка
else messagebox ("Image_1 nooo");

int Image_2[100][100];
if (loadimage (#Image_2[0][0], "C:\Prog\A8.bmp")>0)messagebox("Image_1 Congr");//Синяя рамка
else messagebox ("Image_1 nooo");


int Image_1[100][100];
if (loadimage (#Image_1[0][0], "C:\Prog\A7.bmp")>0)messagebox("Image_2 Congr");//Галка
else messagebox ("Image_2 nooo");

int PosX_K, PosY_K;
int PosX, PosY;

if (findimage(1, #Image_0[0][0],255, #PosX_K, #PosY_K, 0, 0, 1366, 768, -1)==1)
{
if (findimage(1, #Image_1[0][0], 0, #PosX, #PosY, PosX_K, PosY_K, 1366, 768, -1)==1)
{
mousemove(PosX+PosX_K, PosY+PosY_K);
mouse(LEFT);
sleep (2000);
}
}
else//нет рамки зел.
{
if (findimage(1, #Image_2[0][0],255, #PosX_K, #PosY_K, 0, 0, 1366, 768, -1)==1)//синюю ищем
{
if (findimage(1, #Image_1[0][0], 0, #PosX, #PosY, PosX_K, PosY_K, 1366, 768, -1)==1)
{
mousemove(PosX+PosX_K, PosY+PosY_K);
mouse(LEFT);
sleep (2000);
}
}
}

33. sakr1dd - 06 Октября, 2013 - 15:13:11 - перейти к сообщению
Работает не совсем так... получается если есть зеленый оно выбирает от синего,если зеленого нету вообще не выбирает
34. Kibor - 06 Октября, 2013 - 15:31:49 - перейти к сообщению
 sakr1dd пишет:
Работает не совсем так... получается если есть зеленый оно выбирает от синего,если зеленого нету вообще не выбирает


 Цитата:
int a=1;//типа есть зеленая
//int a=5;//типа есть синяя
if (a==1)
{
if (2==2)
{
messagebox("типа есть зеленая");
}
}
else//нет рамки зел.
{
if (a==5)//синюю ищем
{
if (6==6)
{
messagebox ("типа есть синяя");
}
}
}


Смысл тот же.
Читайте все ссылки что я дал и найдете ответ.
Особое внимание уделите параметрам findimage
Проверьте ищется просто синяя рамка..
Эксперементируйте с скриптом.
35. sakr1dd - 07 Октября, 2013 - 07:23:46 - перейти к сообщению
Можете подсказать из-за чего может такой быть,я запускаю программу она делает все что надо потом останавливается,запускаю еще пару раз еще пару раз выполняется,потом запускаю и она делает первые 3-4 действия и как не крути останавливается,нужно ли чистить память массивов какими то переменными и вообще из-за памяти это или нет?
36. Kibor - 07 Октября, 2013 - 08:25:59 - перейти к сообщению
При правильном использование памяти ничего не должно быть такого и чистить не надо ничего.
Посмотреть как выделяется в кибор память можно в диспечере задач.
Быстрее всего что то в коде.
37. sakr1dd - 07 Октября, 2013 - 08:40:09 - перейти к сообщению
Блин все так запутано,что не могу выяснить причину правильной и одновременной неправильной работы программы..
В общем,вот мой код,построил практически на одних картинках...
CODE:
//ПЕРЕМЕННЫЕ
int col,x,y;
//Массивы
int Image_0[16][16];//Кнопка стима внизу экрана,открыть стим
int Image_1[93][12];//Кнопка Список друзей,открыть список друзей
int Image_2[43][10];//Кнопка принять в друзья
int Image_3[300][300];//Кнопка Закрыть,после принятия в друзья.
int Image_4[100][100];
int Image_5[300][300];
//Переменные углов картинок
int PosX_0,PosY_0;
int PosX_1,PosY_1;
int PosX_2,PosY_2;
int PosX_3,PosY_3;
int PosX_4,PosY_4;
int PosX_5,PosY_5;
//Загрузка картинок в память с диска
loadimage (#Image_0[0][0],"C:\Prog\A1.bmp");//Картинка Стима
loadimage (#Image_1[0][0],"C:\Prog\A2.bmp");//Картинка Список друзей
loadimage (#Image_2[0][0],"C:\Prog\A3.bmp");//Картинка Принять в друзья
loadimage (#Image_3[0][0],"C:\Prog\A4.bmp");//Картинка Закрыть
loadimage (#Image_4[0][0],"C:\Prog\A5.bmp");//Картинка Стрелка
loadimage (#Image_5[0][0],"C:\Prog\A7.bmp");//Картинка Предложить

(Добавление)
CODE:
//Условия поиска
if(findimage(1,#Image_0[0][0],0,#PosX_0,#PosY_0,0,0,1366,768,-1)==1)//ПОИСК картинки Стима и двойной клик на нее
{
mousemove(PosX_0+8,PosY_0+8);
mousedbl(LEFT);
}
sleep(1000);

if(findimage(1,#Image_1[0][0],0,#PosX_1,#PosY_1,0,0,1366,728,-1)==1)//ПОИСК картинки список друзей и клик на нее
{
mousemove(PosX_1,PosY_1);
mouse(LEFT);
}
sleep(1000);

if(findimage(1,#Image_2[0][0],0,#PosX_2,#PosY_2,0,0,1366,728,-1)==1)//ПОИСК на экране картинки ПРИНЯТЬ и клик на нее
{
mousemove(PosX_2,PosY_2);
mouse(LEFT);
sleep(1000);
}

if(findimage(1,#Image_3[0][0],0,#PosX_3,#PosY_3,0,0,1366,728,-1)==1)//ПОИСК на экране закрыть и клик на нее
{
mousemove(PosX_3,PosY_3);
mouse(LEFT);
}
sleep(1000);

if(findimage(1,#Image_4[0][0],0,#PosX_4,#PosY_4,0,0,1366,728,-1)==1)//ПОИСК на экране закрыть и клик на нее
{
mousemove(PosX_4,PosY_4);
mouse(LEFT);
}
sleep(1000);

if(findimage(1,#Image_5[0][0],0,#PosX_5,#PosY_5,0,0,1366,728,-1)==1)//ПОИСК на экране закрыть и клик на нее
{
mousemove(PosX_5,PosY_5);
mouse(LEFT);
}
sleep(1000);

[/code]
(Добавление)
Вот 4 видео работы программы
В 1ом не выполняется 5-6 действия,почему не знаю.
1


Во 2ом аналогично
2


В 3-м появляется принимает человечка в игре(с зеленым окошком) не срабатывает,но после него вуаля... он делает все 6 действий
3


В 4-м так же выполняет все что нужно...
4


Чтобы было проще понять что не так,записал видео работы проги(т.к. у меня пока еще не получилось сделать чтобы находило стрелочку от левого угла зеленой/синей рамки,я сделал просто картинку стрелки на которую нужно нажимать(по идее если должна присутствовать хоть одна такая стрелка должно клацать,но этого нету))
(Добавление)
win wind ... );
и int col x,y; это было для теста,в основном коде его нету,так что из-за этого ошибок быть не может
38. Kibor - 07 Октября, 2013 - 08:48:51 - перейти к сообщению
Я не понял, это полный весь код?

А где зацикливание?
В конце кода goto a;
и в начале a:; (перед первым findimage)

В таком виде код до конца доходит и все...

Проектирование программы. Оптимальная структура
39. sakr1dd - 07 Октября, 2013 - 08:49:58 - перейти к сообщению
Да да я знаю,я просто пока для проверки делаю без цикла,позже думал добавить. Но в моем случае он иногда не доходит до конца
(Добавление)
Только что случилось следующее,сделал зацикливание он начал перепрыгивать через действия..
(Добавление)
5

40. Kibor - 07 Октября, 2013 - 09:09:25 - перейти к сообщению
Так может надо больше паузу во времени?

Ну и не мешает Получить указатель на игру
win w =.....

И сделать в начале скрипта
ativate(w);
sleep(1000);

Скрипт вроде верный... паузу увеличьте, по отключайте все проверки и проверяйте по одной.

Powered by ExBB FM 1.0 Final