Кибор » Скрипты на заказ » Заказать скрипт » Бот для игры GTA V

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

11. Zireael - 20 Июля, 2019 - 02:37:37 - перейти к сообщению
 Цитата:
Все эти вычисления

Это не актуально пока не будет кода, который корректно распознает цифры.
 Цитата:
1.Запускается первая функция, она ищет красные цифры.
Затем она считает количество найденных цифр

Зачем считать, цифр найдётся 9 или 1. Если 9, то просто проверить какой не хватает.
CODE:
string s="0 1 2 3 4 5 6 8 9"; // допустим это распознанный текст
messagebox(f(s)); // покажет какого числа не хватает

function f(string ss)
{
string temp;
for(int i=0; i<10; i++)
{
if(regexsearch(1, #temp, ss, format(i))==0)return i;
}
return -1;
}
12. Kinoman - 20 Июля, 2019 - 10:57:39 - перейти к сообщению
 Kibor пишет:
Это к этому боту? Или там другая задача?
CODE:
string a="5";
string b="2";
int c=formatsn(a)+formatsn(b);
messagebox (c);

А как работать с базами по распознаванию текста через визуальный редактор?
Ну имеется ввиду, как там прописать действие чтоб после распознования цифр
считало их кол-во?
(Добавление)
 Zireael пишет:
 Цитата:
Все эти вычисления

Это не актуально пока не будет кода, который корректно распознает цифры.
 Цитата:
1.Запускается первая функция, она ищет красные цифры.
Затем она считает количество найденных цифр

Зачем считать, цифр найдётся 9 или 1. Если 9, то просто проверить какой не хватает.
CODE:
string s="0 1 2 3 4 5 6 8 9"; // допустим это распознанный текст
messagebox(f(s)); // покажет какого числа не хватает

function f(string ss)
{
string temp;
for(int i=0; i<10; i++)
{
if(regexsearch(1, #temp, ss, format(i))==0)return i;
}
return -1;
}

Окей, а как нажать то её потом? Может я чего-то не понял...
13. Kibor - 20 Июля, 2019 - 11:06:19 - перейти к сообщению
Это все в этом случае никак не применить. Тут нужен абсолютно другой подход. Попозже посморю по скринам с гугл диска.
14. Kibor - 20 Июля, 2019 - 13:20:09 - перейти к сообщению
Пример как решить вопрос.
Все расчеты стоит засунуть в DLL для скорости работы.


CODE:
char Text[1000];
int k, n, n1;
int x1=53, y1=337, x2=1260, y2=643;

int Ch[4][1000];
int PosX[4][1000];
int PosY[4][1000];

int Y[4][1000];
int X[4][1000];
int S[4][1000];
int I[4][1000];
int R[4];
int T[4];
double cor=0.5;

int Color_Text1[1]={9999507};//серый белый
int Color_Text2[1]={7654007};//зеленый фиолетовый
int Color_Text3[1]={7916785};//желтый зеленый
int Color_Text4[1]={4013255};//красный желтый



loadsymbolbase ("C:\gta\base.sib");


pause(1000);
for (n=0; n<4; n++)R[n]=0;

//серый белый
k=readtext (NUM, #Text[0], 8, 3, -1, 20, 30, #Color_Text1[0], 1, 70, -1, x1, y1, x2, y2, -1);
for (n=0; n<k; n++)
{
if (symbolcorrect(n)>cor)
{
Y[0][R[0]]=symbolypos(n);
X[0][R[0]]=symbolxpos(n);
S[0][R[0]]=symbolheight(n);
I[0][R[0]]=formatsn(Text[n]);
R[0]++;
}
}


//зеленый фиолетовый
k=readtext (NUM, #Text[0], 8, 3, -1, 20, 30, #Color_Text2[0], 1, 70, -1, x1, y1, x2, y2, -1);
for (n=0; n<k; n++)
{
if (symbolcorrect(n)>cor)
{
Y[1][R[1]]=symbolypos(n);
X[1][R[1]]=symbolxpos(n);
S[1][R[1]]=symbolheight(n);
I[1][R[1]]=formatsn(Text[n]);
R[1]++;
}
}


//желтый зеленый
k=readtext (NUM, #Text[0], 8, 3, -1, 20, 30, #Color_Text3[0], 1, 70, -1, x1, y1, x2, y2, -1);
for (n=0; n<k; n++)
{
if (symbolcorrect(n)>cor)
{
Y[2][R[2]]=symbolypos(n);
X[2][R[2]]=symbolxpos(n);
S[2][R[2]]=symbolheight(n);
I[2][R[2]]=formatsn(Text[n]);
R[2]++;
}
}


//красный желтый
k=readtext (NUM, #Text[0], 8, 3, -1, 20, 30, #Color_Text4[0], 1, 70, -1, x1, y1, x2, y2, -1);
for (n=0; n<k; n++)
{
if (symbolcorrect(n)>cor)
{
Y[3][R[3]]=symbolypos(n);
X[3][R[3]]=symbolxpos(n);
S[3][R[3]]=symbolheight(n);
I[3][R[3]]=formatsn(Text[n]);
R[3]++;
}
}

//0 1 2 3 4 5

for (n=0; n<4; n++)T[n]=0;

for (n=0; n<R[0]; n++)
{
for (n1=0; n1<R[0]; n1++)
{
if (n!=n1)
{
if (Y[0][n]-Y[0][n1]<5 && Y[0][n1]-Y[0][n]<5 && S[0][n]-S[0][n1]<5 && S[0][n1]-S[0][n]<5)
{
if (n>0){if (I[0][n]<=I[0][n-1]) goto q;}
Ch[0][T[0]]=I[0][n];
PosX[0][T[0]]=X[0][n];
PosY[0][T[0]]=Y[0][n];
T[0]++;
q:;
}
}
}
}

for (n=0; n<R[1]; n++)
{
for (n1=0; n1<R[1]; n1++)
{
if (n!=n1)
{
if (Y[1][n]-Y[1][n1]<5 && Y[1][n1]-Y[1][n]<5 && S[1][n]-S[1][n1]<5 && S[1][n1]-S[1][n]<5)
{
if (n>0){if (I[1][n]<=I[1][n-1]) goto q1;}
Ch[1][T[1]]=I[1][n];
PosX[1][T[1]]=X[1][n];
PosY[1][T[1]]=Y[1][n];
T[1]++;
q1:;
}
}
}
}

for (n=0; n<R[2]; n++)
{
for (n1=0; n1<R[2]; n1++)
{
if (n!=n1)
{
if (Y[2][n]-Y[2][n1]<5 && Y[2][n1]-Y[2][n]<5 && S[2][n]-S[2][n1]<5 && S[2][n1]-S[2][n]<5)
{
if (n>0){if (I[2][n]<=I[2][n-1]) goto q2;}
Ch[2][T[2]]=I[2][n];
PosX[2][T[2]]=X[2][n];
PosY[2][T[2]]=Y[2][n];
T[2]++;
q2:;
}
}
}
}

for (n=0; n<R[3]; n++)
{
for (n1=0; n1<R[3]; n1++)
{
if (n!=n1)
{
if (Y[3][n]-Y[3][n1]<5 && Y[3][n1]-Y[3][n]<5 && S[3][n]-S[3][n1]<5 && S[3][n1]-S[3][n]<5)
{
if (n>0){if (I[3][n]<=I[3][n-1]) goto q3;}
Ch[3][T[3]]=I[3][n];
PosX[3][T[3]]=X[3][n];
PosY[3][T[3]]=Y[3][n];
T[3]++;
q3:;
}
}
}
}


resettextout(1);
if (T[0]==0 && T[1]==0 && T[2]==0 && T[3]==0)messagebox ("не определен");
else
{
if (T[0]>=T[1] && T[0]>=T[2] && T[0]>=T[3])
{
for (n=0; n<R[0]; n++)
{
textout(n, x1+PosX[0][n], y1+PosY[0][n], format(Ch[0][n]), 0);
}
messagebox ("серый белый");
}
if (T[1]>=T[0] && T[1]>=T[2] && T[1]>=T[3])
{
for (n=0; n<R[1]; n++)
{
textout(n, x1+PosX[1][n], y1+PosY[1][n], format(Ch[1][n]), 0);
}
messagebox ("зеленый фиолетовый");
}
if (T[2]>=T[0] && T[2]>=T[1] && T[2]>=T[3])
{
for (n=0; n<R[2]; n++)
{
textout(n, x1+PosX[2][n], y1+PosY[2][n], format(Ch[2][n]), 0);
}
messagebox ("желтый зеленый");
}
if (T[3]>=T[0] && T[3]>=T[2] && T[3]>=T[1])
{
for (n=0; n<R[3]; n++)
{
textout(n, x1+PosX[3][n], y1+PosY[3][n], format(Ch[3][n]), 0);
}
messagebox ("красный желтый");
}
}


15. Kinoman - 20 Июля, 2019 - 17:10:50 - перейти к сообщению
Спасибо!
(Добавление)
А ещё такой вопрос, может я просто не внимательно пересмотрел 2 раз.
Он же выводит сообщение в котором определён цвет, а он может выводить именно
цифру другого цвета?
16. Kibor - 20 Июля, 2019 - 19:33:57 - перейти к сообщению
Может.
Когда вы рассчитаете позицию каждого символа исходя из полученной информации и с помощью к примеру findcolor определите в какой позиции (какой номер) находится цифра цветом который надо нажать.
17. Kinoman - 20 Июля, 2019 - 21:55:20 - перейти к сообщению
Прошу прощения за свою неграмотность, можно пример этого findcolor? Я только начал свой путь на программировании и пока не очень соображаю что и к чему...
18. Zireael - 20 Июля, 2019 - 22:18:48 - перейти к сообщению
Камеру в игре можно повернуть так чтобы ничего лишнего не попадало? Например, зелёные и фиолетовые цифры совпадают с цветом лодки, что мягко говоря мешает.
19. Kinoman - 21 Июля, 2019 - 02:24:15 - перейти к сообщению
 Zireael пишет:
Камеру в игре можно повернуть так чтобы ничего лишнего не попадало? Например, зелёные и фиолетовые цифры совпадают с цветом лодки, что мягко говоря мешает.

Да, и лодка у меня уже другая совершенно. Камера крутится обычно от бездействия, это фиксится банальными рывками мышки ... ну если раз в 10 секунд двинул ничего шевелиться не будет.
20. Zireael - 21 Июля, 2019 - 09:26:08 - перейти к сообщению
Алгоритм стырил с форума другого кликера.
Например, для красных и жёлтых цифр:
1. Ищем все красные и жёлтые пиксели.
2. Сравниваем минимальную координату по X, если красный меньше значит желтая цифра 0.
3. Сравниваем максимальную координату по X, если красный меньше значит желтая цифра 9.
4. Если пункты 2 и 3 не подошли, т. е. жёлтая цифра не 0 и не 9, то считаем среднее расстояние между цифрами.
Из минимальной координаты по X жёлтого цвета вычитаем минимальную координату по X красного и делим на среднее расстояние между цифрами. Получим позицию жёлтой цифры.

CODE:
int num;
int coord[4]={574, 380, 1813, 875} // координаты поиска, левый верхний угол и правый нижний
pause(1000);


//////////////
num=find(3882184, 6081000, 40, 35); // красный, жёлтый, разбежность для красного, разбежность для жёлтого
messagebox(num);
// тоже самое для других цветов, подобрать нужную разбежность


function find(int color1, int color2, int r1, int r2)
{
int x1[9999], y1[9999], x2[9999], y2[9999];
int count1=findcolor(sizearray(x1), #x1[0],#y1[0], coord[0], coord[1], coord[2], coord[3], color1, r1,r1,r1,r1,r1,r1, -1);
int count2=findcolor(sizearray(x2), #x2[0],#y2[0], coord[0], coord[1], coord[2], coord[3], color2, r2,r2,r2,r2,r2,r2, -1);
//messagebox(format(count1)+" "+format(count2)); // сколько найдено цветов
if(count1 && count2) // если найдены
{
if(x1[0]>x2[0])return 0;
if(x1[count1-1]<x2[count2-1])return 9;
int mid=(x1[count1-1]-x1[0]) / 9.5; // среднее расстояние между цифрами
return (x2[count2-1] - x1[0]) / mid;
}
return -1; // вернёт -1 если цвета не найдены
}

Powered by ExBB FM 1.0 Final