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

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

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

> Описание: массив
stasrus
Отправлено: 25 Октября, 2020 - 19:41:25
Post Id



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


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




Что не так с данным кодом? не хочет корректно работать. пытаюсь посчитать количество пикселей в области которая может быть разных цветов и присвоить переменной top количество пикселей
чтобы сравнить с другой переменной которую реализовываю таким же методом.
тоесть если в области нашло 10 пикселей 255 цвета то значит область равняется красной, если нашло 10 пикселей 0 цвета то черной
да понимаю что можно использовать другой метод findheapcolor, но интересно реализовать через массив именно этим методом, для самообучения

CODE:
int x[10],y[10],n=0,top,color[3];
color[0]=255;
color[1]=65532;
color[2]=4641792;
color[3]=0;

top=findcolor(10, #x[0],#y[0], 863, 354, 1054, 392, color[n], -1);
while (top<10)
{
top=findcolor(10, #x[0],#y[0], 863, 354, 1054, 392, color[n], -1);
n++;
sleep(100);
}


Чтото мой код не нравится программе(для просмотра ссылки Вам необходимо авторизоваться)
 
 Top
Zireael
Отправлено: 25 Октября, 2020 - 20:01:04
Post Id



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


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




 Цитата:
Чтото мой код не нравится программе

Массив color на 3 элемента, а записываете 4.
Размер массива color равен 3, значит переменная n не может быть больше 3. У вас же она постоянно увеличивается и нигде не обнуляется.
CODE:
int x[10],y[10],n=0,top,color[4];
color[0]=255;
color[1]=65280;
color[2]=4641792;
color[3]=0;

int size_color = sizearray(color);

top=0;
while (top<10)
{
top=findcolor(10, #x[0],#y[0], 863, 354, 1054, 392, color[n], -1);
n++;
if(n>size_color)n=0;
sleep(100);
}
messagebox(color[n-1]);
 
 Top
stasrus
Отправлено: 26 Октября, 2020 - 00:05:02
Post Id



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


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




Спасибо за пояснение, думал что массив с нулем будет 4

Но все равно не работает правильно, точнее вообще по сути не работает, messagebox возвращает какой-то непонятный бред
(для просмотра ссылки Вам необходимо авторизоваться)
Для самообучения делаю ботов для разных игр, на данный момент для вот этой

Игра

CODE:

int x[10],y[10],n=0,n2=0,top,bot,color[4],color2[4];
color[0]=255;
color[1]=65532;
color[2]=4641792;
color[3]=0;
color2[0]=255;
color2[1]=65532;
color2[2]=4641792;
color2[3]=0;

int size_color = sizearray(color);
int size_color2 = sizearray(color);
pusk:
top=findcolor(10, #x[0],#y[0], 863, 354, 1054, 392, color[n], -1);
while (top<10)
{
top=findcolor(10, #x[0],#y[0], 863, 354, 1054, 392, color[n], -1);
n++;
if(n>size_color)n=0;
sleep(100);
}
messagebox(color[n-1]);
bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, color2[n2], -1);

while (bot<10)
{
bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, color2[n2], -1);
n2++;
if(n2>size_color2)n2=0;
sleep(100);
}
messagebox(color2[n2-1]);

//bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 255, -1);
//if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 65532, -1);
//if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 4641792, -1);
//if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 0, -1);


//
attack ();
goto pusk;





function attack();
{
if (bot==top)
{
mousedown(LEFT, 959, 774);
mouseup(LEFT, 959, 704)
sleep (500);
}
else
{
mousedown(LEFT, 959, 774);
mouseup(LEFT, 909, 774)
sleep (500);
}
}



Ziriael как думаете у такого полета мысли был шанс сделать это?
CODE:
bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 255, -1);
if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 65532, -1);
if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 4641792, -1);
if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 0, -1);


получается если не нашли 10 пикселей 255 цвета идем по следующему условию

(Отредактировано автором: 26 Октября, 2020 - 00:20:15)

 
 Top
Zireael
Отправлено: 26 Октября, 2020 - 02:44:10
Post Id



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


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




code (Отобразить)
 
 Top
stasrus
Отправлено: 26 Октября, 2020 - 14:07:23
Post Id



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


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




Zireael , Красиво получилось

Ziriael как думаете у такого полета мысли был шанс сделать это в теории? по идее логика то рабочая должна быть, сразу присвоили переменной 255 цвет и смотрим равна ли она 10 если нет присваиваем ей следующий цвет. это как бы вариант без массивов. вторая переменная по верху была также но скрипт так и не заработал.

bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 255, -1);
if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 65532, -1);
if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 4641792, -1);
if (bot<10) bot=findcolor(10, #x[0],#y[0], 946, 1054, 956, 1064, 0, -1);

(Отредактировано автором: 26 Октября, 2020 - 14:10:17)

 
 Top
Zireael
Отправлено: 26 Октября, 2020 - 14:20:14
Post Id



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


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




У этой части кода нет смысла, после выполнения получим переменную bot равную 10 если какой-то цвет найдётся или 0 если не найдется. Только это ничего не дает, нигде же записывается какого цвета нашлось 10 пикселей.
 
 Top
stasrus
Отправлено: 26 Октября, 2020 - 16:45:31
Post Id



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


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




Zireael , Спасибо за объяснение

Возник такой вопрос
есть такая картинка(для просмотра ссылки Вам необходимо авторизоваться)
Реализовал пока так
CODE:

string number1,marks,number2;
loadsymbolbase ("C:\kibor_set (1)\test\game3.sib");
readtext (NUM, #number1, 8, 1, -1, -1, -1, -1, -1, 0, -1, 767, 209, 949, 341, -1); //первое число
readtext (NUM | MARK, #marks, 8, 1, -1, -1, -1, -1, -1, 0, -1, 928, 239, 989, 317, -1);// знаки
readtext (NUM | MARK, #number2, 8, 1, -1, -1, -1, -1, -1, 0, -1, 982, 227, 1066, 322, -1);// второе число


застрял на том что не пойму что делать с marks во что его преобразовывать и как добавлять его в переменную?

Если числа я могу перевести в int через formatsn то как добавить знаки не понятно.

Сама игра(для просмотра ссылки Вам необходимо авторизоваться)
Прошу только не писать готовый код)

(Отредактировано автором: 26 Октября, 2020 - 16:48:13)

 
 Top
Zireael
Отправлено: 27 Октября, 2020 - 01:08:00
Post Id



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


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




CODE:
string Text = "23 - 6 ="; // допустим это распознаный текст
string number[2], marks, temp;

regexreplace(-1, #Text, Text, "[^\d\+\-\*\/]", ""); // удалить из строки всё кроме чисел и знаков операции
if(regexsearch(1, #temp, Text, "\d+[\+\-\*\/]\d+")) // проверка что в строке есть 2 числа и знак операции
{
if(regexsearch(2, #number[0], Text, "\d+")) // поиск двух чисел
{
regexreplace(-1, #marks, Text, "\d", ""); // удалить из строки все числа, т. е. остаётся только знак операции

int result;
if(marks=="+")result = formatsn(number[0]) + formatsn(number[1]);
if(marks=="-")result = formatsn(number[0]) - formatsn(number[1]);
if(marks=="*")result = formatsn(number[0]) * formatsn(number[1]);
if(marks=="/")result = formatsn(number[0]) / formatsn(number[1]);
}
messagebox(Text+"="+format(result));
}
else messagebox("Строка не является примером");
 
 Top
stasrus
Отправлено: 27 Октября, 2020 - 01:16:52
Post Id



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


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




Zireael , Благодарю за ответ, все стало понятно)

Жаль что я сам до этого не додумался сделать через if
 Цитата:
if(marks=="+"Подмигиваниеresult = formatsn(number[0]) + formatsn(number[1]);
if(marks=="-"Подмигиваниеresult = formatsn(number[0]) - formatsn(number[1]);
if(marks=="*"Подмигиваниеresult = formatsn(number[0]) * formatsn(number[1]);
if(marks=="/"Подмигиваниеresult = formatsn(number[0]) / formatsn(number[1]);



У меня был план сделать както так
result = (formatsn(number1)+marks+formatsn(number2));
 
 Top
stasrus
Отправлено: 05 Ноября, 2020 - 13:21:08
Post Id



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


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




Продолжаю пытаться самосовершенствоваться , застрял на данной задаче
есть картинка (для просмотра ссылки Вам необходимо авторизоваться) как записать в файл массив вида

CODE:

122
211
121


не могу придумать саму логику как это должно работать
пытался при нахождении изображения добавлять 1 или 2, но это както тупо
CODE:

sleep(1000);
if (findimage(-1, #Image_1[0][0], 0, #PosX_0[0], #PosY_0[0], 0, 0, 1920, 1080, -1)=1)
{
fopen ("c:\5.txt", "a");
fwrite ("1");
fclose();
}
int PosX_01[512];int PosY_02[512];
if (findimage(-1, #Image_2[0][0], 0, #PosX_01[0], #PosY_02[0], 0, 0, 1920, 1080, -1)=1)
{
fopen ("c:\5.txt", "a");
fwrite ("2");
fclose();
}


у меня идет поиск с левого верха в нижний левый низ и как поднять перенос не совсем понятно

CODE:

Zireael ();
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 6 (гостей: 6, зарегистрированных: 0)
« Вопросы и решение проблем »


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




Powered by