Приветствую, подскажите адекватное решение, в котором с высокой степенью вероятности скрипт остановиться.
Задача остановить скрипт в результате появления на экране вот такой ауры
скрин, но иконка оружия может быть любая.
Желательно с двумя проверками, но при этом не сильно затянутые.
(Добавление)
сложность в том, что это динамическая аура, пример
Нажмите для увеличения
1. l2mrakg - 17 Мая, 2019 - 08:01:46 - перейти к сообщению
2. Budni - 17 Мая, 2019 - 12:54:29 - перейти к сообщению
Если она появляется в определенном месте то достаточно найти пару цветов от ауры (findheapcolor) в том самом месте ну и выставить разбежность. Тестируй тут двойная проверка не к чему.
Я бы так сделал) Ток код не рабочий, не заданы значения, но остановить скрипт можно командой break; закрыть скрипт (выключить Кибор) командой close;
Я бы так сделал) Ток код не рабочий, не заданы значения, но остановить скрипт можно командой break; закрыть скрипт (выключить Кибор) командой close;
CODE:
loop () {
if finde()=1) break;
}
function finde () {
int // твои значения для переменных чтобы заработал))
int k=findheapcolor(20, #color[0], #kol[0], 3, min_col, #x[0], #y[0], 15, 15, 50, 50, 0, 0, xw, yw, r, r, r, r, r, r, -1);
if(k>0) return 1;
return 0;
}
loop () {
if finde()=1) break;
}
function finde () {
int // твои значения для переменных чтобы заработал))
int k=findheapcolor(20, #color[0], #kol[0], 3, min_col, #x[0], #y[0], 15, 15, 50, 50, 0, 0, xw, yw, r, r, r, r, r, r, -1);
if(k>0) return 1;
return 0;
}
3. Zireael - 17 Мая, 2019 - 18:53:16 - перейти к сообщению
Цитата:
if finde()=1
Нет открывающей скобки. ==, а не =.
Цитата:
Задача остановить скрипт в результате появления на экране вот такой ауры
findcolor вполне подойдёт. Для примера, скрипт ожидает появления указанного цвета с учётом разбежности:
CODE:
int color=16739508; // цвет для поиска (можно подобрать во вкладке графика)
int coord[4]={1256, 676, 1327, 740} // область поиска
int r=40; // разбежность
int x[999], y[999];
// пока не найдено хотя бы 10 пикселей указанного цвета
while(findcolor(sizearray(x), #x[0], #y[0], coord[0], coord[1], coord[2], coord[3], color, r,r,r,r,r,r, -1) < 10)sleep(10);
int coord[4]={1256, 676, 1327, 740} // область поиска
int r=40; // разбежность
int x[999], y[999];
// пока не найдено хотя бы 10 пикселей указанного цвета
while(findcolor(sizearray(x), #x[0], #y[0], coord[0], coord[1], coord[2], coord[3], color, r,r,r,r,r,r, -1) < 10)sleep(10);
4. l2mrakg - 18 Мая, 2019 - 04:17:32 - перейти к сообщению
не могу заставить его остановиться....
Проблема в том, что данные настройки заставляют практически все делать в слепую...
Было бы неплохо, если бы при включенной отладке выделялись рамкой области в которых задан поиск цвета, ибо иногда встречаются баги со смещением координат в окне и помогает перезапуск скрипта.
Простоя я не уверен, что я делаю поиск именно в нужном мне месте, тут же есть ограниченное количество времени появления этой ауры, происходит ли момент поиска вовремя тоже вопрос.
Очень проблематично такое реализовать можно так сказать вслепую....
Проблема в том, что данные настройки заставляют практически все делать в слепую...
Было бы неплохо, если бы при включенной отладке выделялись рамкой области в которых задан поиск цвета, ибо иногда встречаются баги со смещением координат в окне и помогает перезапуск скрипта.
Простоя я не уверен, что я делаю поиск именно в нужном мне месте, тут же есть ограниченное количество времени появления этой ауры, происходит ли момент поиска вовремя тоже вопрос.
Очень проблематично такое реализовать можно так сказать вслепую....
5. Kibor - 18 Мая, 2019 - 04:20:19 - перейти к сообщению
Смотрите по значениям переменных в логе.
6. l2mrakg - 18 Мая, 2019 - 04:51:33 - перейти к сообщению
Kibor пишет:
Смотрите по значениям переменных в логе.
Спасибо с помощью переменных в логе смог понять, когда начинается поиск непосредственно и настроил как надо, но вот точно определить где именно кибор визуально создает участок поиска не удается.
7. Kibor - 18 Мая, 2019 - 04:54:40 - перейти к сообщению
l2mrakg пишет:
где именно кибор визуально создает участок поиска не удается.
? Включите галку сканировать переменные.
И смотрите какие зоны в функциях. А вообще не понятно. Вы какую там логику зон указали что не можете знать где ищет? Рандомную?
8. l2mrakg - 18 Мая, 2019 - 05:02:55 - перейти к сообщению
Kibor пишет:
l2mrakg пишет:
где именно кибор визуально создает участок поиска не удается.
? Включите галку сканировать переменные.
И смотрите какие зоны в функциях. А вообще не понятно. Вы какую там логику зон указали что не можете знать где ищет? Рандомную?
Вы меня не поняли, координаты я знаю, но все же когда реально видна зона поиска визуально, очень бы упростило процесс.
Мне вообще процесс поиска по цветами очень тяжело воспринимается.
9. Kibor - 18 Мая, 2019 - 05:50:12 - перейти к сообщению
l2mrakg пишет:
Вы меня не поняли, координаты я знаю, но все же когда реально видна зона поиска визуально, очень бы упростило процесс.
нарисуйте себе сами
CODE:
#define PS_SOLID 0
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreatePen", "CreatePen", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "MoveToEx", "MoveToEx", "Gdi32.dll" );
external(INT, "LineTo", "LineTo", "Gdi32.dll" );
int hdc_dialog=GetDC(0); // дескриптор контекста
int pen=CreatePen(PS_SOLID, 2, 1376392); // часовая стрелка
SelectObject(hdc_dialog, pen);
int x1=10, y1=20, x2=150, y2=200;
loop()
{
////////
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], x1, y1, x2, y2, -1);
RES(x1, y1, x2, y2);
/////////
sleep(10);
}
function RES(int x1, int y1, int x2, int y2)
{
MoveToEx(hdc_dialog, x1, y1, 0); // из центра круга
LineTo(hdc_dialog, x2, y1); // рисуем линию
LineTo(hdc_dialog, x2, y2); // рисуем линию
LineTo(hdc_dialog, x1, y2); // рисуем линию
LineTo(hdc_dialog, x1, y1); // рисуем линию
}
external(INT, "GetDC", "GetDC", "User32.dll" );
external(INT, "CreatePen", "CreatePen", "Gdi32.dll" );
external(INT, "SelectObject", "SelectObject", "Gdi32.dll" );
external(INT, "MoveToEx", "MoveToEx", "Gdi32.dll" );
external(INT, "LineTo", "LineTo", "Gdi32.dll" );
int hdc_dialog=GetDC(0); // дескриптор контекста
int pen=CreatePen(PS_SOLID, 2, 1376392); // часовая стрелка
SelectObject(hdc_dialog, pen);
int x1=10, y1=20, x2=150, y2=200;
loop()
{
////////
findimage(1, #Image_0[0][0], 0, #PosX_0[0], #PosY_0[0], x1, y1, x2, y2, -1);
RES(x1, y1, x2, y2);
/////////
sleep(10);
}
function RES(int x1, int y1, int x2, int y2)
{
MoveToEx(hdc_dialog, x1, y1, 0); // из центра круга
LineTo(hdc_dialog, x2, y1); // рисуем линию
LineTo(hdc_dialog, x2, y2); // рисуем линию
LineTo(hdc_dialog, x1, y2); // рисуем линию
LineTo(hdc_dialog, x1, y1); // рисуем линию
}
10. l2mrakg - 18 Мая, 2019 - 05:56:28 - перейти к сообщению
вроде как получилось задуманное на тестах с обычным цветом, но вот уверенности с другим цветом нет, который изредка появляется.
Реализация хромает конечно....
Суть такова, взял прямоугольник как зона поиска 200х100.
Выбрал 1 цвет при поиске, погрешность 10.
Зона поиска 10 px.
Реализация хромает конечно....
Суть такова, взял прямоугольник как зона поиска 200х100.
Выбрал 1 цвет при поиске, погрешность 10.
Зона поиска 10 px.