Здравствуйте.
пытаюсь создать в визуальном редакторе скрипт движения персонажа по локации, по заранее заданным координатам, вызываю меню карты активизирую окно для задания координаты но прописать туда координату из массива не получается. К сожалению я не программист и мои познания очень скудны если нетрудно подскажите решение вопроса.
в вести переменную в активное поле пытаюсь вот этой командой:
key_(0, 1, b[j], 50, 0, 0);
весь скрипт:
int size_key_char_KIB=-1;
int color_KIB_5[1], sum_color_KIB_5[1];
color_KIB_5[0]=131822;
sum_color_KIB_5[0]=3;
int int a[5];
a[0]=467; a[1]=457; a[2]=443; a[3]=440; a[4]=428;
int b[5];
b[0]=362; b[1]=354; b[2]=346; b[3]=327; b[4]=305;
int i=0; int j=0;;
win w_KIB;
int ex_KIB, ey_KIB, sum_KIB, x_KIB, y_KIB;
int sx_KIB, sy_KIB;
start_();
m_KIB1: if (findheapcolor_(42, 16, 113, 161, 200, 0, 0, 1, 0, 0, -1, 0, 0, 0, -1, -1, 30, 1, 81, 90, 1634, 753, 1, 2, #sum_KIB, #x_KIB, #y_KIB, #color_KIB_5[0], #sum_color_KIB_5[0])>0) goto m_KIB2;
else goto m_KIB5;
m_KIB2: key_(49, 1, "", 0, 50, 50);
key_(32, 1, "", 0, 0, 10); goto m_KIB1;
m_KIB4: key_(80, 1, "", 0, 0, 500); goto m_KIB1;
m_KIB5: key_(80, 1, "", 0, 0, 200);
mouse_(100, 1, 673, 741, 500);
if (i<=4);
{
key_(0, 1, a[i], 50, 0, 0);
i++;
}
else
{
i=0;
}
mouse_(0, 1, 795, 741, 500);
if (j<=4);
{
key_(0, 1, b[j], 50, 0, 0);
j++;
}
else
{
j=0;
}
mouse_(200, 1, 877, 738, 500); goto m_KIB4;
function start_()
{
pause(1000);
int x, y;
getmouse(x, y);
w_KIB=getwindow(0, x, y);
ex_KIB=w_KIB.widthclient; ey_KIB=w_KIB.heightclient;
sx_KIB=w_KIB.leftclient; sy_KIB=w_KIB.topclient;
}
function key_(int k, int m, string text, int pc, int p1, int p2)
{
pause(p1);
if (m==-1)
{
if (size_key_char_KIB==-1)
{
size_key_char_KIB=100;
new char key_char_KIB[size_key_char_KIB+1];
}
int size_key=size(text);
if (size_key_char_KIB<size_key)
{
delete key_char_KIB;
size_key_char_KIB=size_key;
new char key_char_KIB[size_key_char_KIB+1];
}
strcpy(#key_char_KIB[0], text);
for (int n=0; n<size_key; n++){key(key_char_KIB[n]); sleep(pc);}
}
else
{
if (m==1) key(k);
if (m==2) keydown(k);
if (m==3) keyup(k);
}
pause(p2);
}
function mouse_(int p1, int m, int xm, int ym, int p2)
{
xm=xm+sx_KIB; ym=ym+sy_KIB;
pause(p1);
if (m==1) mouse(LEFT, xm, ym);
if (m==2) mouse(MIDDLE, xm, ym);
if (m==3) mouse(RIGHT, xm, ym);
if (m==4) mousedown(LEFT, xm, ym);
if (m==5) mousedown(MIDDLE, xm, ym);
if (m==6) mousedown(RIGHT, xm, ym);
if (m==7) mouseup(LEFT, xm, ym);
if (m==8) mouseup(MIDDLE, xm, ym);
if (m==9) mouseup(RIGHT, xm, ym);
if (m==10) mousedbl(LEFT, xm, ym);
if (m==11) mousedbl(MIDDLE, xm, ym);
if (m==12) mousedbl(RIGHT, xm, ym);
if (m==13) mousemove(xm, ym);
pause(p2);
}
function findheapcolor_(int onx, int ony, int oox, int ooy, int t, int p1, int p2, int m, int xm, int ym, int mov_m, int mov_x, int mov_y, int p3, int wait, int cycle, int r, int k, int xs, int ys, int xf, int yf, int all_col, int min_col, int#sum, int#x, int#y, int#color, int#sum_color)
{
xs=xs+sx_KIB; ys=ys+sy_KIB; xf=xf+sx_KIB; yf=yf+sy_KIB;
int timKIB, sumKIB, xKIB, yKIB, tx, ty, tcycle=0;
sty: pause(p1);
sumKIB=0;
if (t!=0) timKIB=gettime();
a: if (r!=0){sum=findheapcolor(k, #color[0], #sum_color[0], all_col, min_col, #x[0], #y[0], onx, ony, oox, ooy, xs, ys, xf, yf, r, r, r, r, r, r, -1); if (sum>0) goto e;};
else {sum=findheapcolor(k, #color[0], #sum_color[0], all_col, min_col, #x[0], #y[0], onx, ony, oox, ooy, xs, ys, xf, yf, -1); if (sum>0) goto e;};
if (t==0) return 0;
if (gettime()-timKIB<t){sleep(20); goto a;}
return 0;
e: sumKIB=sum; xKIB=x[0]; yKIB=y[0];
pause(p2);
if (m==1){mouse(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==2){mouse(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==3){mouse(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==4){mousedown(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==5){mousedown(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==6){mousedown(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==7){mouseup(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==8){mouseup(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==9){mouseup(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==10){mousedbl(LEFT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==11){mousedbl(MIDDLE, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==12){mousedbl(RIGHT, xs+xKIB+xm, ys+yKIB+ym); goto hy;}
if (m==13)mousemove(xs+xKIB+xm, ys+yKIB+ym);
hy: if (mov_m==1)mousemove(mov_x, mov_y);
if (m>0 && m<14)pause(p3);
if (wait!=-1)
{
for (int ttim=gettime(); gettime()-ttim<wait; sleep(20))
{
if (r!=0){if (findheapcolor(1, #color[0], #sum_color[0], all_col, min_col, #tx, #ty, onx, ony, oox, ooy, xs, ys, xf, yf, r, r, r, r, r, r, -1)==0)return sumKIB;}
else {if (findheapcolor(1, #color[0], #sum_color[0], all_col, min_col, #tx, #ty, onx, ony, oox, ooy, xs, ys, xf, yf, -1)==0)return sumKIB;}
}
if (tcycle<cycle){tcycle++; goto sty;}
return 0;
}
return sumKIB;
}
1. Karkun - 15 Марта, 2019 - 09:19:35 - перейти к сообщению
2. Kibor - 15 Марта, 2019 - 09:58:02 - перейти к сообщению
key_(0, -1, format(b[j]), 50, 0, 0);
или
key(format(b[j]));
или
key(format(b[j]));
3. Karkun - 15 Марта, 2019 - 14:14:33 - перейти к сообщению
Kibor пишет:
key_(0, -1, format(b[j]), 50, 0, 0);
или
key(format(b[j]));
или
key(format(b[j]));
Спасибо. Скажите а можно как то оформить чтобы считывание массива было из текстового файла или киньте ссылку где есть описание подобного процесса если возможно
4. Zireael - 15 Марта, 2019 - 17:55:32 - перейти к сообщению
Цитата:
считывание массива было из текстового файла
CODE:
string s[999]; // массив
string path_to_file="C:\file.txt"; // путь к файлу
if(fopen(path_to_file, "r")) // если файл открылся
{
for(int i=0; i<sizearray(s) && freadline(s[i]); i++){} // читаем файл в массив
fclose();
messagebox(s[0]); // первая строка
//messagebox(s[1]); // вторая
}
else messagebox("Файл не найден или не открылся");
string path_to_file="C:\file.txt"; // путь к файлу
if(fopen(path_to_file, "r")) // если файл открылся
{
for(int i=0; i<sizearray(s) && freadline(s[i]); i++){} // читаем файл в массив
fclose();
messagebox(s[0]); // первая строка
//messagebox(s[1]); // вторая
}
else messagebox("Файл не найден или не открылся");