Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
В этом разделе можно выкладывать свои шаблоны для Визуального редактора.
Визуальный редактор кода.
Шаблоны можно выкладывать в виде текста.
Описание разделов шаблона
Форум форматирует текст убирая пробелы перед строкой.
Поэтому при создание кода Python надо указать пробелы так:
Цитата: __python_sync
import difflib
def similarity(s1, s2):
(4 пробела)normalized1 = s1.lower()
(4 пробела)normalized2 = s2.lower()
(4 пробела)matcher = difflib.SequenceMatcher(None, normalized1, normalized2)
(4 пробела)return matcher.ratio()
__end_python
Или выложить ссылку на файл.
Пример:
Название:
FindImage
Описание:
Блок поиска фрагментов изображения на экране.
Возвращаемое значение:
Количество найденных объектов.
Переходы Истина и Ложь.
Код шаблона (Отобразить)CODE:[ESCAPE_CHAR]
^
[END]
[APPEARANCE]
COLOR = 5, 120, 140;
SIZE_X = 10;
SIZE_Y =6;
[END]
[INTERFACE]
DIALOG, "Поиск изображения", 704, 425;
STATIC, "Поиск в", 4, 4, 44, 20;
COMBO, "Активный по Экрану""Активный по Указателю""Фоновый по Указателю""Активный по Скриншоту""Фоновый по Скриншоту", 52, 4, 160, 100, int EW;
STATIC, "Указатель на окно", 220, 4, 100, 20;
EDIT, 324, 4, 140, 20, win W;
STATIC, "Указатель на скрин", 480, 4, 104, 20;
EDIT, 592, 4, 100, 20, int Screen;
STATIC, "Пауза до:", 4, 28, 52, 20;
EDIT, 60, 28, 100, 20, int P1;
STATIC, "Время ожидания", 4, 52, 92, 20;
EDIT, 100, 52, 100, 20, int T;
STATIC, "Путь к файлу", 4, 76, 72, 20;
EDIT, 80, 76, 516, 20, string Path;
BUTTON_FILE, "Путь к файлу", 600, 76, 92, 20, Path;
STATIC, "Зона поиска старт", 4, 100, 100, 20;
EDIT, 104, 100, 116, 20, int eX1;
EDIT, 224, 100, 116, 20, int eY1;
STATIC, "Зона поиска финиш", 352, 100, 100, 20;
EDIT, 456, 100, 116, 20, int eX2;
EDIT, 576, 100, 116, 20, int eY2;
CHECK, "Игнорировать зоны (построчно через запятую)", 4, 124, 264, 20, int Ignor;
EDIT_MULTILINE, 272, 124, 420, 72, string Mas_Ignor;
STATIC, "Цвет фона. Или -1", 4, 200, 100, 20;
EDIT, 108, 200, 56, 20, int CF;
STATIC, "Разбежность оттенков", 176, 200, 120, 20;
EDIT, 300, 200, 64, 20, int R;
STATIC, "Процент совпадения", 376, 200, 112, 20;
EDIT, 488, 200, 64, 20, int Proc;
CHECK, "Быстрый поиск", 564, 200, 100, 20, int G1;
STATIC, "Сколько искать. Или -1", 4, 224, 120, 20;
EDIT, 128, 224, 52, 20, int Kol;
CHECK, "Сортировать по удаленности от X", 204, 224, 200, 20, int Sort;
EDIT, 408, 224, 76, 20, int SortX;
STATIC, "Y", 500, 224, 12, 20;
EDIT, 516, 224, 76, 20, int SortY;
STATIC, "Переменные: Количество", 4, 248, 140, 20;
EDIT, 148, 248, 72, 20, int K;
STATIC, "Массив X", 224, 248, 56, 20;
EDIT, 280, 248, 72, 20, int X;
STATIC, "Массив Y", 360, 248, 52, 20;
EDIT, 416, 248, 72, 20, int Y;
STATIC, "Заполнять массив с индекса", 492, 248, 152, 20;
EDIT, 648, 248, 44, 20, int I;
STATIC, "Пауза после нахождения", 4, 272, 132, 20;
EDIT, 140, 272, 100, 20, int P2;
STATIC, "Действие если нашли", 4, 296, 120, 20;
COMBO, "Левую клик""Среднюю клик""Правую клик""Левую нажать""Среднюю нажать""Правую нажать""Левую отпустить""Среднюю отпустить""Правую отпустить""Левая двойной клик""Средняя двойной клик""Правая двойной клик""Переместить""Бездействие", 128, 296, 224, 116, string M;
STATIC, "Смещение клика X", 404, 296, 100, 20;
EDIT, 508, 296, 76, 20, int SmX;
STATIC, "Y", 600, 296, 12, 20;
EDIT, 616, 296, 76, 20, int SmY;
STATIC, "Пауза после действия, если было", 4, 320, 176, 20;
EDIT, 184, 320, 100, 20, int P3;
STATIC, "Комментарий", 4, 344, 76, 20;
EDIT, 84, 344, 608, 20, unknown Comment;
BUTTON_OK, "Принять", 480, 372, 100, 20;
BUTTON_CANCEL, "Закрыть", 592, 372, 100, 20;
[END]
[INFO]
[ENDL]>>~GET(regexsearch(~Path~, "(?<=\\)(.*?)(?=\.)", 16))~>>[ENDL]>>M>>[ENDL]>>Comment
[END]
[ASSOC_NUMBER]
Path
[END]
[ASSOC_VAR]
EW=0;
W=W_Kib;
Screen=Screen;
P1=0;
T=0;
Path="C:\Image_0.bmp";
CF=-1;
R=0;
Proc=100;
Sort=0;
SortX=0;
SortY=0;
G1=0;
P2=0;
M="Бездействие";
SmX=0;
SmY=0;
P3=0;
I=0;
Ignor=0;
Mas_Ignor="0, 0, 0, 0";
Kol = 1;
eX1=0;
eY1=0;
eX2=eX_Kib;
eY2=eY_Kib;
X = X_Kib;
Y = Y_Kib;
K = K_Kib;
X_V = #~X~[~I~];
Y_V = #~Y~[~I~];
K_V = #~K~;
W_V = #~W~;
V_X=~W~.leftclient;
V_Y=~W~.topclient;
Image = #Image~*~;
File=~GET(regexsearch(~Path~, "(?<=\\)(.*?)", 16))~;
V_Screen=#~Screen~;
Comment=;
[END]
[GLOBAL_VAR]
win ~W~;
int ~Screen~[3000][3000];
int ~K~, ~X~[1000], ~Y~[1000];
int Image~*~[~GET(imagewidth(~Path~))~][~GET(imageheight(~Path~))~];
[END]
[GLOBAL_REPEAT_CODE]
load_images();
[END]
[GLOBAL_SINGLE_CODE_BOTTOM]
function load_images()
{
}
[END]
[REGEXPLACE_CODE]
"function load_images\(\)"~%13~~%10~"\{"~%13~~%10~ = "function load_images()"~%13~~%10~"{"~%13~~%10~"loadimage (#Image"~*~"[0][0], "~Path~");"~%13~~%10~;
[END]
[EVENT]
IF (I_MODE_BIND_WINDOW!=0)SENDBUTTON(GETID(EW), S_MODE_BIND_WINDOW);
IF (I_MODE_BIND_WINDOW!=0)SENDEDIT(GETID(W), W_Kib);
IF (I_MODE_BIND_WINDOW!=0)ENABLE(GETID(EW), 0);
IF (I_MODE_BIND_WINDOW!=0)ENABLE(GETID(W), 0);
IF (I_MODE_BIND_WINDOW!=0)ENABLE(GETID(Screen), 0);
[END]
[FUNCTION_BODY]
function(int ew, int #Scr, win #w, int v_x, int v_y, int #image, int kol, int Sort, int sortx, int sorty, int #mK, int #mX, int #mY, int ex1, int ey1, int ex2, int ey2, int p1, int t, int cf, int r, int proc, int g1, int ignor, string mas_ignor, int p2, string m, int smx, int smy, int p3)
{
pause (p1);
if (t==0)t=1;
looptime(t)
{
if (ew==0)mK=findimage(SWIFT*g1, kol, #image[0][0], cf, #mX[0], #mY[0], ex1, ey1, ex2, ey2, r, r, r, r, r, r, proc, 1, -1);
if (ew==1)mK=findimage(SWIFT*g1, kol, #image[0][0], cf, #mX[0], #mY[0], v_x+ex1, v_y+ey1, v_x+ex2, v_y+ey2, r, r, r, r, r, r, proc, 1, -1);
if (ew==2)mK=findimage(SWIFT*g1, kol, #image[0][0], cf, #mX[0], #mY[0], ex1, ey1, ex2, ey2, r, r, r, r, r, r, proc, 1, w);
if (ew==3 || ew==4)mK=findimage(SWIFT*g1, kol, #image[0][0], cf, #mX[0], #mY[0], ex1, ey1, ex2, ey2, r, r, r, r, r, r, proc, 1, #Scr[0][0]);
if (mK>0) break;
sleep(5);
}
if (mK<1) return mK;
if (ew==3 || ew==4){ex1=ex1+screenstartx(); ey1=ey1+screenstarty();}
for (int n=0; n<mK; n++)
{
mX[n]=mX[n]+ex1;
mY[n]=mY[n]+ey1;
}
if (ignor)
{
mas_ignor=mas_ignor+"^r^n";
string P[4];
int x1, y1, x2, y2;
if (regexsearch(4, #P[0], mas_ignor, "[0-9]+(?=,|\r\n)")==4)
{
x1=formatsn(P[0]); y1=formatsn(P[1]); x2=formatsn(P[2]); y2=formatsn(P[3]);
for (n=0; n<mK; n++)
{
if (mX[n]>x1 && mX[n]<x2 && mY[n]>y1 && mY[n]<y2)
{
mK--;
for (int n1=n; n1<mK; n1++)
{
mX[n1]=mX[n1+1]; mY[n1]=mY[n1+1];
}
if (mK<1) return mK;
n--;
}
}
while (regexsearch(4, #P[0])==4)
{
x1=formatsn(P[0]); y1=formatsn(P[1]); x2=formatsn(P[2]); y2=formatsn(P[3]);
for (n=0; n<mK; n++)
{
if (mX[n]>x1 && mX[n]<x2 && mY[n]>y1 && mY[n]<y2)
{
mK--;
for (n1=n; n1<mK; n1++)
{
mX[n1]=mX[n1+1]; mY[n1]=mY[n1+1];
}
if (mK<1) return mK;
n--;
}
}
}
}
}
if (Sort) sort(sortx, sorty, #mX[0], #mY[0], mK);
pause (p2);
if (ew==0 || ew==3)
{
if (m=="Левую клик"){mouse(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю клик"){mouse(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую клик"){mouse(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левую нажать"){mousedown(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю нажать"){mousedown(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую нажать"){mousedown(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левую отпустить"){mouseup(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Среднюю отпустить"){mouseup(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правую отпустить"){mouseup(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Левая двойной клик"){mousedbl(LEFT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Средняя двойной клик"){mousedbl(MIDDLE, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Правая двойной клик"){mousedbl(RIGHT, smx+mX[0], smy+mY[0]); goto hy;}
if (m=="Переместить"){mousemove(smx+mX[0], smy+mY[0]); goto hy;}
}
if (ew==1)
{
if (m=="Левую клик"){mouse(LEFT, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Среднюю клик"){mouse(MIDDLE, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Правую клик"){mouse(RIGHT, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Левую нажать"){mousedown(LEFT, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Среднюю нажать"){mousedown(MIDDLE, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Правую нажать"){mousedown(RIGHT, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Левую отпустить"){mouseup(LEFT, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Среднюю отпустить"){mouseup(MIDDLE, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Правую отпустить"){mouseup(RIGHT, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Левая двойной клик"){mousedbl(LEFT, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Средняя двойной клик"){mousedbl(MIDDLE, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Правая двойной клик"){mousedbl(RIGHT, v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
if (m=="Переместить"){mousemove(v_x+smx+mX[0], v_y+smy+mY[0]); goto hy;}
}
if (ew==2 || ew==4)
{
if (m=="Левую клик"){sendmouse(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю клик"){sendmouse(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую клик"){sendmouse(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левую нажать"){sendmousedown(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю нажать"){sendmousedown(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую нажать"){sendmousedown(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левую отпустить"){sendmouseup(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Среднюю отпустить"){sendmouseup(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правую отпустить"){sendmouseup(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Левая двойной клик"){sendmousedbl(LEFT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Средняя двойной клик"){sendmousedbl(MIDDLE, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Правая двойной клик"){sendmousedbl(RIGHT, smx+mX[0], smy+mY[0], w); goto hy;}
if (m=="Переместить")sendmousemove(smx+mX[0], smy+mY[0], w);
}
hy: if (m!="Бездействие")pause (p3);
return mK;
}
[END]
[CALL]
(EW, V_Screen[0][0], W_V, V_X, V_Y, Image[0][0], Kol, Sort, SortX, SortY, K_V, X_V, Y_V, eX1, eY1, eX2, eY2, P1, T, CF, R, Proc, G1, Ignor, Mas_Ignor, P2, M, SmX, SmY, P3)
[END]
[FUNCTION_LOGIC]
>0
[END]
|