Свип с проверкой на хп вставить в cikl1, перед сменой таргета, т.е. он сначала свипнет труп, потом уже будет искать следующего.
Спойл можно вставить в bit.
51. yo1 - 10 Марта, 2015 - 07:55:02 - перейти к сообщению
52. dembel312 - 10 Марта, 2015 - 08:29:33 - перейти к сообщению
или как тогда еще проверить что моб умер? Сохранить картинку с пустой полоской хп, загрузить ее и искать периодически?
на данный момент сделано так
(Добавление)
да и cikl1 запускается, если нет моба в таргете.
на данный момент сделано так
Цитата:
int PrivyazkaXY[14][14];
int P_X[1], P_Y[1];
cikl: malo_xp();//Проверить или хп мало и банки пить
key(F4); //Ближенего моба в таргет взять
pause(rand(500, 1000)); //Пауза которую выдержать (раном от пол секунды до сек)
if (getcolor(X_pix, Y_pix)!=col_pix) //Если нет моба в таргете
{
cikl1: key(mob[k_mob]);//Нажать на макрос выбора моба по нику
k_mob++;//Увеличить номер макроса в котором /target ник-моба находится
if (k_mob==3)k_mob=0;//Если это третий номер макроса ника моба - перейти к первому
pause(rand(1000, 2000)); //Пауза которую выдержать (раном от секунды до двух)
}
if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
malo_xp();//Проверить или хп мало и банки пить
bit1: k_error_tim=gettime();//Записать время текущее
bit: if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
if (gettime()-k_error_tim>error_tim)//Если превысил время (застрял или долгий бой)
{
if (getcolor(X_pix1, Y_pix1)==col_pix1)//Усли моб целый (красный конец хп) значит застрял
{
key(ESCAPE);//Нажать Es (таргет снять)
pause(rand(200, 500));
goto cikl1;// топать на cikl1 (на этой метке строка которая берет другого моба - с другим ником)
}
}
malo_xp();//Проверить или хп мало и банки пить
key(F1); // атака моба
pause(rand(500, 1500));
key(F2); // атака моба скилом 1
pause(rand(20000, 30000));
if findimage(1, #PrivyazkaXY[0][0], 0, #P_X[0], #P_Y[0], 0, 0, xe, ye, w);//ищем картинку с пустым ХП моба
key(F3);//используем свип
goto bit; //Идти на проверку или хп моба есть еще
}
pause(rand(100, 300));
malo_xp();//Проверить или хп мало и банки пить
if (getcolor(X_pix, Y_pix)==col_pix) goto bit1;//Если моб в таргете (он напал) - бить а не собирать лут
key(ESCAPE);//Нажать Es
pause(rand(100, 300));
keydown(F5);// собирать лут когда моб слит
pause(rand(2000, 3500));
keyup(F5);
N++;//Увеличить счетчик мобов
textout(0, X_pix, Y_pix+20, "Мобов слито "+format (N), 0);//Изменить счетчик мобов которые слились
}
goto cikl;//Цикл змкнем. идти на начало
int P_X[1], P_Y[1];
cikl: malo_xp();//Проверить или хп мало и банки пить
key(F4); //Ближенего моба в таргет взять
pause(rand(500, 1000)); //Пауза которую выдержать (раном от пол секунды до сек)
if (getcolor(X_pix, Y_pix)!=col_pix) //Если нет моба в таргете
{
cikl1: key(mob[k_mob]);//Нажать на макрос выбора моба по нику
k_mob++;//Увеличить номер макроса в котором /target ник-моба находится
if (k_mob==3)k_mob=0;//Если это третий номер макроса ника моба - перейти к первому
pause(rand(1000, 2000)); //Пауза которую выдержать (раном от секунды до двух)
}
if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
malo_xp();//Проверить или хп мало и банки пить
bit1: k_error_tim=gettime();//Записать время текущее
bit: if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
if (gettime()-k_error_tim>error_tim)//Если превысил время (застрял или долгий бой)
{
if (getcolor(X_pix1, Y_pix1)==col_pix1)//Усли моб целый (красный конец хп) значит застрял
{
key(ESCAPE);//Нажать Es (таргет снять)
pause(rand(200, 500));
goto cikl1;// топать на cikl1 (на этой метке строка которая берет другого моба - с другим ником)
}
}
malo_xp();//Проверить или хп мало и банки пить
key(F1); // атака моба
pause(rand(500, 1500));
key(F2); // атака моба скилом 1
pause(rand(20000, 30000));
if findimage(1, #PrivyazkaXY[0][0], 0, #P_X[0], #P_Y[0], 0, 0, xe, ye, w);//ищем картинку с пустым ХП моба
key(F3);//используем свип
goto bit; //Идти на проверку или хп моба есть еще
}
pause(rand(100, 300));
malo_xp();//Проверить или хп мало и банки пить
if (getcolor(X_pix, Y_pix)==col_pix) goto bit1;//Если моб в таргете (он напал) - бить а не собирать лут
key(ESCAPE);//Нажать Es
pause(rand(100, 300));
keydown(F5);// собирать лут когда моб слит
pause(rand(2000, 3500));
keyup(F5);
N++;//Увеличить счетчик мобов
textout(0, X_pix, Y_pix+20, "Мобов слито "+format (N), 0);//Изменить счетчик мобов которые слились
}
goto cikl;//Цикл змкнем. идти на начало
(Добавление)
да и cikl1 запускается, если нет моба в таргете.
53. yo1 - 10 Марта, 2015 - 08:37:36 - перейти к сообщению
Не кидайте целиком скрипт, да и подсвечивайте места, которые были изменены.
Из изменений - удалено треть текста?
Из изменений - удалено треть текста?
54. dembel312 - 10 Марта, 2015 - 08:38:13 - перейти к сообщению
может сделать так
Цитата:
//Бот для LIneage 2. Сделан в Кибор Обязательно смотреть прилагаемое видео настроек
int mob[3];//фки макросов
mob[0]=118; mob[1]=119; mob[2]=120;//фки макросов
int col_pix, X_pix, Y_pix;//Координаты и цвет первого пикселя в хп моба
int col_pix1, X_pix1, Y_pix1;//Координаты и цвет последнего пикселя в хп моба
int col_pix2, X_pix2, Y_pix2;//Координаты и цвет своего хп в месте если его будет мало
int k_mob=0, k_baf=0; //Счетчик
int N=0;//Счетчит мобов которые слили.
int error_tim=5000;//Это время давать на то что бы ударил по мобу от взятия в таргет - превысил - застрял (снять таргет)
int k_error_tim;//Это счетчик времени если перс за определенное время не добежал и не ударил (застрял)
int col, xek, yek;//цвет экрана и разрешение
int PrivyazkaXY[14][14];
int P_X[1], P_Y[1];
nastroit();//Настройки определения точки пикселя начала хп моба
malo_xp();
//////////////////////////////////////////////////////////////////////////////
loadimage (#PrivyazkaXY[0][0], "E:\bot\image\HP.bmp"
cikl: malo_xp();//Проверить или хп мало и банки пить
key(F4); //Ближенего моба в таргет взять
pause(rand(500, 1000)); //Пауза которую выдержать (раном от пол секунды до сек)
if (getcolor(X_pix, Y_pix)!=col_pix) //Если нет моба в таргете
{
cikl1: key(mob[k_mob]);//Нажать на макрос выбора моба по нику
k_mob++;//Увеличить номер макроса в котором /target ник-моба находится
if (k_mob==3)k_mob=0;//Если это третий номер макроса ника моба - перейти к первому
pause(rand(1000, 2000)); //Пауза которую выдержать (раном от секунды до двух)
}
if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
malo_xp();//Проверить или хп мало и банки пить
bit1: k_error_tim=gettime();//Записать время текущее
bit: if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
if (gettime()-k_error_tim>error_tim)//Если превысил время (застрял или долгий бой)
{
if (getcolor(X_pix1, Y_pix1)==col_pix1)//Усли моб целый (красный конец хп) значит застрял
{
key(ESCAPE);//Нажать Es (таргет снять)
pause(rand(200, 500));
goto cikl1;// топать на cikl1 (на этой метке строка которая берет другого моба - с другим ником)
}
}
malo_xp();//Проверить или хп мало и банки пить
key(F1); // атака моба
pause(rand(500, 1500));
key(F2); // атака моба скилом 1
pause(rand(20000, 30000));
if findimage(1, #PrivyazkaXY[0][0], 0, #P_X[0], #P_Y[0], 0, 0, xe, ye, w);
key(F3);
goto bit; //Идти на проверку или хп моба есть еще
}
pause(rand(100, 300));
malo_xp();//Проверить или хп мало и банки пить
if (getcolor(X_pix, Y_pix)==col_pix) goto bit1;//Если моб в таргете (он напал) - бить а не собирать лут
key(ESCAPE);//Нажать Es
pause(rand(100, 300));
keydown(F5);// собирать лут когда моб слит
pause(rand(2000, 3500));
keyup(F5);
N++;//Увеличить счетчик мобов
textout(0, X_pix, Y_pix+20, "Мобов слито "+format (N), 0);//Изменить счетчик мобов которые слились
}
goto cikl;//Цикл змкнем. идти на начало
int mob[3];//фки макросов
mob[0]=118; mob[1]=119; mob[2]=120;//фки макросов
int col_pix, X_pix, Y_pix;//Координаты и цвет первого пикселя в хп моба
int col_pix1, X_pix1, Y_pix1;//Координаты и цвет последнего пикселя в хп моба
int col_pix2, X_pix2, Y_pix2;//Координаты и цвет своего хп в месте если его будет мало
int k_mob=0, k_baf=0; //Счетчик
int N=0;//Счетчит мобов которые слили.
int error_tim=5000;//Это время давать на то что бы ударил по мобу от взятия в таргет - превысил - застрял (снять таргет)
int k_error_tim;//Это счетчик времени если перс за определенное время не добежал и не ударил (застрял)
int col, xek, yek;//цвет экрана и разрешение
int PrivyazkaXY[14][14];
int P_X[1], P_Y[1];
nastroit();//Настройки определения точки пикселя начала хп моба
malo_xp();
//////////////////////////////////////////////////////////////////////////////
loadimage (#PrivyazkaXY[0][0], "E:\bot\image\HP.bmp"
cikl: malo_xp();//Проверить или хп мало и банки пить
key(F4); //Ближенего моба в таргет взять
pause(rand(500, 1000)); //Пауза которую выдержать (раном от пол секунды до сек)
if (getcolor(X_pix, Y_pix)!=col_pix) //Если нет моба в таргете
{
cikl1: key(mob[k_mob]);//Нажать на макрос выбора моба по нику
k_mob++;//Увеличить номер макроса в котором /target ник-моба находится
if (k_mob==3)k_mob=0;//Если это третий номер макроса ника моба - перейти к первому
pause(rand(1000, 2000)); //Пауза которую выдержать (раном от секунды до двух)
}
if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
malo_xp();//Проверить или хп мало и банки пить
bit1: k_error_tim=gettime();//Записать время текущее
bit: if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
if (gettime()-k_error_tim>error_tim)//Если превысил время (застрял или долгий бой)
{
if (getcolor(X_pix1, Y_pix1)==col_pix1)//Усли моб целый (красный конец хп) значит застрял
{
key(ESCAPE);//Нажать Es (таргет снять)
pause(rand(200, 500));
goto cikl1;// топать на cikl1 (на этой метке строка которая берет другого моба - с другим ником)
}
}
malo_xp();//Проверить или хп мало и банки пить
key(F1); // атака моба
pause(rand(500, 1500));
key(F2); // атака моба скилом 1
pause(rand(20000, 30000));
if findimage(1, #PrivyazkaXY[0][0], 0, #P_X[0], #P_Y[0], 0, 0, xe, ye, w);
key(F3);
goto bit; //Идти на проверку или хп моба есть еще
}
pause(rand(100, 300));
malo_xp();//Проверить или хп мало и банки пить
if (getcolor(X_pix, Y_pix)==col_pix) goto bit1;//Если моб в таргете (он напал) - бить а не собирать лут
key(ESCAPE);//Нажать Es
pause(rand(100, 300));
keydown(F5);// собирать лут когда моб слит
pause(rand(2000, 3500));
keyup(F5);
N++;//Увеличить счетчик мобов
textout(0, X_pix, Y_pix+20, "Мобов слито "+format (N), 0);//Изменить счетчик мобов которые слились
}
goto cikl;//Цикл змкнем. идти на начало
55. yo1 - 10 Марта, 2015 - 08:41:30 - перейти к сообщению
dembel312 пишет:
if findimage(1, #PrivyazkaXY[0][0], 0, #P_X[0], #P_Y[0], 0, 0, xe, ye, w);//ищем картинку с пустым ХП моба
key(F3);//используем свип
key(F3);//используем свип
Произвольно взятый кусок кода? Хотя бы адаптируйте, если будете использовать.
Тем более странно искать пустую строку хп в коде, условием которого является наличие хп.
56. dembel312 - 10 Марта, 2015 - 08:43:39 - перейти к сообщению
Хорошо, поставлю вопрос по другому Как тогда в этом скрипте опрделять, жив моб или нет?
57. yo1 - 10 Марта, 2015 - 08:46:43 - перейти к сообщению
dembel312 пишет:
Как тогда в этом скрипте опрделять, жив моб или нет?
В вашем коде это указано комментариями:
CODE:
if (getcolor(X_pix, Y_pix)!=col_pix) //Если нет моба в таргете (т.е. он может быть мертвым)
{
}
{
}
CODE:
if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете (т.е. он жив)
{
}
{
}
58. dembel312 - 10 Марта, 2015 - 09:05:54 - перейти к сообщению
не работает
Цитата:
cikl: malo_xp();//Проверить или хп мало и банки пить
key(F4); //Ближенего моба в таргет взять
pause(rand(500, 1000)); //Пауза которую выдержать (раном от пол секунды до сек)
if (getcolor(X_pix, Y_pix)!=col_pix) //Если нет моба в таргете
{
key(F3);
cikl1: key(mob[k_mob]);//Нажать на макрос выбора моба по нику
k_mob++;//Увеличить номер макроса в котором /target ник-моба находится
if (k_mob==3)k_mob=0;//Если это третий номер макроса ника моба - перейти к первому
pause(rand(1000, 2000)); //Пауза которую выдержать (раном от секунды до двух)
}
if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
malo_xp();//Проверить или хп мало и банки пить
bit1: k_error_tim=gettime();//Записать время текущее
bit: if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
if (gettime()-k_error_tim>error_tim)//Если превысил время (застрял или долгий бой)
{
if (getcolor(X_pix1, Y_pix1)==col_pix1)//Усли моб целый (красный конец хп) значит застрял
{
key(ESCAPE);//Нажать Es (таргет снять)
pause(rand(200, 500));
goto cikl1;// топать на cikl1 (на этой метке строка которая берет другого моба - с другим ником)
}
}
malo_xp();//Проверить или хп мало и банки пить
key(F1); // атака моба
pause(rand(500, 1500));
key(F2); // атака моба скилом 1
pause(rand(20000, 30000));
goto bit; //Идти на проверку или хп моба есть еще
}
pause(rand(100, 300));
malo_xp();//Проверить или хп мало и банки пить
if (getcolor(X_pix, Y_pix)==col_pix) goto bit1;//Если моб в таргете (он напал) - бить а не собирать лут
key(ESCAPE);//Нажать Es
pause(rand(100, 300));
keydown(F5);// собирать лут когда моб слит
pause(rand(2000, 3500));
keyup(F5);
N++;//Увеличить счетчик мобов
textout(0, X_pix, Y_pix+20, "Мобов слито "+format (N), 0);//Изменить счетчик мобов которые слились
}
goto cikl;//Цикл змкнем. идти на начало
key(F4); //Ближенего моба в таргет взять
pause(rand(500, 1000)); //Пауза которую выдержать (раном от пол секунды до сек)
if (getcolor(X_pix, Y_pix)!=col_pix) //Если нет моба в таргете
{
key(F3);
cikl1: key(mob[k_mob]);//Нажать на макрос выбора моба по нику
k_mob++;//Увеличить номер макроса в котором /target ник-моба находится
if (k_mob==3)k_mob=0;//Если это третий номер макроса ника моба - перейти к первому
pause(rand(1000, 2000)); //Пауза которую выдержать (раном от секунды до двух)
}
if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
malo_xp();//Проверить или хп мало и банки пить
bit1: k_error_tim=gettime();//Записать время текущее
bit: if (getcolor(X_pix, Y_pix)==col_pix) //Если моб в таргете
{
if (gettime()-k_error_tim>error_tim)//Если превысил время (застрял или долгий бой)
{
if (getcolor(X_pix1, Y_pix1)==col_pix1)//Усли моб целый (красный конец хп) значит застрял
{
key(ESCAPE);//Нажать Es (таргет снять)
pause(rand(200, 500));
goto cikl1;// топать на cikl1 (на этой метке строка которая берет другого моба - с другим ником)
}
}
malo_xp();//Проверить или хп мало и банки пить
key(F1); // атака моба
pause(rand(500, 1500));
key(F2); // атака моба скилом 1
pause(rand(20000, 30000));
goto bit; //Идти на проверку или хп моба есть еще
}
pause(rand(100, 300));
malo_xp();//Проверить или хп мало и банки пить
if (getcolor(X_pix, Y_pix)==col_pix) goto bit1;//Если моб в таргете (он напал) - бить а не собирать лут
key(ESCAPE);//Нажать Es
pause(rand(100, 300));
keydown(F5);// собирать лут когда моб слит
pause(rand(2000, 3500));
keyup(F5);
N++;//Увеличить счетчик мобов
textout(0, X_pix, Y_pix+20, "Мобов слито "+format (N), 0);//Изменить счетчик мобов которые слились
}
goto cikl;//Цикл змкнем. идти на начало
59. yo1 - 10 Марта, 2015 - 09:08:38 - перейти к сообщению
А так?
dembel312 пишет:
if (getcolor(X_pix, Y_pix)!=col_pix) //Если нет моба в таргете
{
cikl1: key(F3);
key(mob[k_mob]);//Нажать на макрос выбора моба по нику
k_mob++;//Увеличить номер макроса в котором /target ник-моба находится
if (k_mob==3)k_mob=0;//Если это третий номер макроса ника моба - перейти к первому
pause(rand(1000, 2000)); //Пауза которую выдержать (раном от секунды до двух)
}
{
cikl1: key(F3);
key(mob[k_mob]);//Нажать на макрос выбора моба по нику
k_mob++;//Увеличить номер макроса в котором /target ник-моба находится
if (k_mob==3)k_mob=0;//Если это третий номер макроса ника моба - перейти к первому
pause(rand(1000, 2000)); //Пауза которую выдержать (раном от секунды до двух)
}
60. VladosS - 11 Марта, 2015 - 10:52:50 - перейти к сообщению
int f,g;
sleep(10);
int xe, ye, color, n, m;
sleep(10);
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
if (wind==0){messagebox ("error. çàïóñêàòü íàä ñòðàíèöåé"goto er;}
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(17)==1)Poisk();
goto loop;
er:;
function Poisk()
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, n-20, m-20, n+20, m+20, wind);
sleep(120);
finddynamic(1, #f, #g, 1.5, 1.5, 70, 70, n-35, m-35, n+35, m+35, wind);
sleep(10);
mousemove(n-35+f, m-35+g, wind);
};
пишет запускать над страницей
(Добавление)
окно полноэранное
sleep(10);
int xe, ye, color, n, m;
sleep(10);
sleep(10);
win wind=window ("StarConflict 1.0.13.64275", "game_main_window", -1);
sleep(10);
if (wind==0){messagebox ("error. çàïóñêàòü íàä ñòðàíèöåé"goto er;}
getdisplay(color, xe, ye);
sleep(10);
loop:;
sleep(50);
if (getkeystate(17)==1)Poisk();
goto loop;
er:;
function Poisk()
{
getmouse(n, m, wind);
sleep(10);
finddynamic(0, #f, #g, 0, 0, 0, 0, n-20, m-20, n+20, m+20, wind);
sleep(120);
finddynamic(1, #f, #g, 1.5, 1.5, 70, 70, n-35, m-35, n+35, m+35, wind);
sleep(10);
mousemove(n-35+f, m-35+g, wind);
};
пишет запускать над страницей
(Добавление)
окно полноэранное