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

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

1. Budni - 17 Мая, 2019 - 12:06:03 - перейти к сообщению
В общем я подумал что можно как то сократить код, как это сделать в данном случае?

CODE:

int x, y, x1, y1, x2, y2, x3, y3, x4, y4;
x=1;y=2;x1=23;y1=3;x2=1;y2=4;x3=23;y3=5;x4=1;y4=6;


Сделать что то типа
CODE:
int x[4]={1,23,1,23,1}; int y[4]={2,3,4,5,6};

Блин пока писал вопрос походу сам ответ написал >_<
Или всё же можно как то ещё более компактней сократить код?
2. Zireael - 17 Мая, 2019 - 18:15:21 - перейти к сообщению
 Цитата:
int x[4]={1,23,1,23,1};

Массив выделен на 4 элемента, а записывается 5. Это ошибка.
3. 007wan - 18 Мая, 2019 - 01:55:17 - перейти к сообщению
Как сократить? Прошу заметить, что текст галочек и расположение разное
Код (Отобразить)

(Добавление)
 007wan пишет:
Object_Group1
Заменить на gethwnd(0)
4. Zireael - 18 Мая, 2019 - 02:00:16 - перейти к сообщению
 Цитата:
Как сократить?

Использовать массивы и соответственно циклы.
CODE:
int Object_Checkbox1[5];
int Status_Checkbox1[5];
int Load_Checkbox1[5];
5. 007wan - 18 Мая, 2019 - 02:01:35 - перейти к сообщению
Я только знаю, что нужно создать массив:
CODE:
int Object_Checkbox[5];

Потом текст:
CODE:
Text_Checkbox[5] = {"Текст1", "Текст2"...}

Затем
CODE:
int Status_Checkbox[5];
char Load_Checkbox[5][255];
int Size_Checkbox[5] = {//цирфы через запятую}

А теперь:
Сделать через for, но не могу понять как сгруппировать координаты(размеры и расположение галочек)
(Добавление)
Тоесть не пойму как распределить заданные в переменной размеры и расположение через for. не прибавляя константу(постояяное число, например "+10")
(Добавление)
Пока вот, что вышло, но... не работает:
CODE:

int Object_Checkbox[5];
int Status_Checkbox[5];
string Text_Checkbox[5] =
{
"1",
"11",
"22",
"333",
"4444"
};
char Load_Checkbox[5][255];

int step = 0;
for (int a=0; a<sizearray(Text_Checkbox); a++)
{
Object_Checkbox[a] = CreateWindow(0, "BUTTON", Text_Checkbox[a], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50+step, 320, 20, Object_Group1, 0, 0, 0);


}

(Добавление)
Точнее вот:
но на последнюю галку текст не выводит
CODE:
for (int a=0; a<sizearray(Text_Checkbox); a++)
{
Object_Checkbox[a] = CreateWindow(0, "BUTTON", Text_Checkbox[a], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 50+step, 320, 20, Object_Group1, 0, 0, 0);
step = step+20;

}

(Добавление)
Не дает текст последней галочке (Отобразить)
6. 007wan - 18 Мая, 2019 - 04:51:46 - перейти к сообщению
Испрпавил и переделал всю программу, но так и не нашел ошибку, однако всё заработало как надо.
7. Budni - 21 Мая, 2019 - 09:51:07 - перейти к сообщению
Как можно сократить эту запись?
Собственно цвет объекта везде одинаковый, меняется лишь координаты поиска и место для клика.

CODE:
loop (10) {
if (klik1()==1) sleep(20);
if (klik2()==1) sleep(20);
if (klik3()==1) sleep(20);
if (klik4()==1) sleep(20);
if (klik5()==1) sleep(20);
}


function klik1() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 100, 100, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,146, 294);return 1;
return 0;
}

function klik2() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 200, 200, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,115, 405);return 1;
return 0;
}


function klik3() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 300, 300, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,93, 227);return 1;
return 0;
}


function klik4() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 400, 400, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,510, 748);return 1;
return 0;
}


function klik5() {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, 500, 500, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,67, 835);return 1;
return 0;
}
8. AdryV - 21 Мая, 2019 - 10:02:38 - перейти к сообщению
чет типа
CODE:
loop (10) {
if (klik1(100, 100, 146, 294)==1) sleep(20);
if (klik1(200, 200, 115, 405)==1) sleep(20);
if (klik1(300, 300, 93, 227)==1) sleep(20);
if (klik1(400, 400, 510, 748)==1) sleep(20);
if (klik1(500, 500, 67, 835)==1) sleep(20);
}


function klik1(int par, int par1, int xMouse, int yMouse) {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, par, par1, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,xMouse, yMouse);return 1;
return 0;
}
9. Zireael - 21 Мая, 2019 - 17:35:30 - перейти к сообщению
 Цитата:
if(ko>0) mouse(LEFT,xMouse, yMouse);return 1;
return 0;

 Цитата:
if(ko>0) {mouse(LEFT,xMouse, yMouse);return 1;}
return 0;

Иначе функция всегда будет возвращать 1, независимо от результата поиска.
10. Budni - 22 Мая, 2019 - 06:23:47 - перейти к сообщению
 AdryV пишет:
чет типа
CODE:
loop (10) {
if (klik1(100, 100, 146, 294)==1) sleep(20);
if (klik1(200, 200, 115, 405)==1) sleep(20);
if (klik1(300, 300, 93, 227)==1) sleep(20);
if (klik1(400, 400, 510, 748)==1) sleep(20);
if (klik1(500, 500, 67, 835)==1) sleep(20);
}


function klik1(int par, int par1, int xMouse, int yMouse) {
int r=10;int color[1]={1248302};int kol[1]={4}; int x, y; int min=1;
int ko=findheapcolor(1, #color[0], #kol[0], sizearray(color), min, #x, #y, 10, 10, 10, 10, 0, 0, par, par1, r, r, r, r, r, r, -1);
if(ko>0) mouse(LEFT,xMouse, yMouse);return 1;
return 0;
}



Так что если координаты не 0,0,100,100 / 0,0,200,200 и т.д. а 24,54,100,100 / 43,23,200,200 ???
(Добавление)
 Zireael пишет:
Цитата:if(ko>0) mouse(LEFT,xMouse, yMouse);return 1;
return 0;
Цитата:if(ko>0) {mouse(LEFT,xMouse, yMouse);return 1;}
return 0;
Иначе функция всегда будет возвращать 1, независимо от результата поиска.

Тут у меня почему-то и без этих скобок работает. Возвращает как надо.

Powered by ExBB FM 1.0 Final