marco_s |
Отправлено: 08 Июня, 2016 - 18:22:15
|
Прохожий
Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2016
Репутация: 1
|
Помогите с написанием скрипта,собственно захотелось сделать бота для игрушки в которую давно играл.Там есть сбор ресурсов,вот его и хочу автоматизировать,фишка в чем:на экране разбросаны ресурсы,если они не заняты то их можно добыть,если они заняты(слева от изображения ресурса появляется цифра сколько людей их добывает) то их тоже можно добыть но шанс мал т.к начали добывать не первыми и нам по сути это не нужно и как раз нужно реализовать в боте.Подскажите как можно реализовать проверку ресурса на занятость?Поиск самого ресурса реализовал через findheapcolor но он так видит и занятые и свободные...Ниже приведу рисунки ресурсов в игре чтоб было понятней.
- ресурс не занят
- ресурс занят(цифра занятости не постоянна тоесть сколько добывает,такая и цифра)
Я так понимаю нужно реализовать сравнение картинок самого ресурса и некого шаблона на занятость но как...если цифра занятости может быть любой(обычно от 1 до 7) вообще ничего в голову не лезет как это реализовать(
код поиска самого ресурса (Отобразить)int r=10;
int color[10], kol[10];
color[0]=2120246;
color[1]=1343036;
color[2]=7360222;
color[3]=2243635;
color[4]=7058567;
color[5]=9942434;
color[6]=7120775;
color[7]=11328715;
color[8]=7198873;
color[9]=5163651;
kol[0]=2;
kol[1]=1;
kol[2]=1;
kol[3]=1;
kol[4]=1;
kol[5]=1;
kol[6]=1;
kol[7]=1;
kol[8]=1;
kol[9]=1;
int x[50], y[50];
int main()
{
if (findheapcolor(1, #color[0], #kol[0], 10, 7, #x[0], #y[0], 10, 10, 0, 0, 0, 0, 1680, 1050, r, r, r, r, r, r, -1)>0)
тут дальнейшие действия с ресурсом,если он обнаружен
} |
|
|
marco_s |
Отправлено: 09 Июня, 2016 - 01:55:28
|
Прохожий
Покинул форум
Сообщений всего: 9
Дата рег-ции: Июнь 2016
Репутация: 1
|
код (Отобразить)int r=10;
int color[10], kol[10];
int zanyt[7][7];
loadimage (#zanyt[0][0], "C:\image\zanyt.bmp" ;
color[0]=2120246;
color[1]=1343036;
color[2]=7360222;
color[3]=2243635;
color[4]=7058567;
color[5]=9942434;
color[6]=7120775;
color[7]=11328715;
color[8]=7198873;
color[9]=5163651;
kol[0]=2;
kol[1]=2;
kol[2]=2;
kol[3]=1;
kol[4]=1;
kol[5]=1;
kol[6]=1;
kol[7]=1;
kol[8]=1;
kol[9]=1;
int x[15], y[15];
int x1[15], y1[15];
findheapcolor(5, #color[0], #kol[0], 10, 6, #x[0], #y[0], 8, 8, 15, 15, 0, 0, 1680, 1050, r, r, r, r, r, r, -1);
int k=findimage(5, #zanyt[0][0], -1, #x1[0], #y1[0], x[0]-10, y[0]+10, x[0]+10, y[0]-10, -1);
textbkcolor (8454143,255);
int n=0;
s:if (n<k)
{
textout(n, x1[n], y1[n] , format(n), 0);
mousemove(x1[n], y1[n]);
sleep(500);
n++;
goto s;
}
messagebox (format(k)+" объектов нашли" ;
вот как то так должно быть...смысл в том чтобы сначала наловить искомых картинок с их координатами,затем искать фильтрующую картинку в заданной области отталкиваясь от координат полученных вначале.
Но в итоге выскакивает ошибка out of memory, подскажите что не так? |
|
|
Kibor |
Отправлено: 09 Июня, 2016 - 05:33:50
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
int k=findimage(5, #zanyt[0][0], -1, #x1[0], #y1[0], x[0]-10, y[0]+10, x[0]+10, y[0]-10, -1);
так над...
int k=findimage(5, #zanyt[0][0], -1, #x1[0], #y1[0], x[0]-10, y[0]-10, x[0]+10, y[0]+10, -1); |
|
|
|