Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Ну что сказать...
В данной игре очень тяжело работать с изображением, так как:
1) Не выключается анимация. По экрану постоянно летают листья, льет дождь разные пузырьки и т.д. Все это создает очень много визуального шума. Практически все элементы на экране имеют полу прозрачность. Даже полоска XP, в связи с чем отсутствуют надежные ориентиры к которым можно привязать действия бота.
2) Отсутствие автоматического поднятия лута. Ориентирование на Control надписи лута так же невозможно из за полу прозрачности этих надписей.
3) Моб не фиксируется в таргете. Необходимо для каждого удара его находить заново.
4) Отсутствие радара по которому можно ориентироваться.
5) Частая нехватка Концетрации для атаки (возможно тут виновато мое незнание игрового процесса). Атака у меня стоит на щелчке правой кнопки мыши и простой ближний удар на щелчке левой.
6) Частая атака перса мобами которые остаются за пределами видимости экрана. В связи с этим бот их не видит.
Ну и еще несколько моментов.
Набросал простой скрипт который хоть как то работает в этой игре, но для Ваших целей он не годится. Игра в окне. В настройках все выключено, хотя кроме теней нечего выключать...
В данной игре практически невозможна работа с графикой с приемлимыми результатами из за вышеперечисленных пунктов.
CODE:
int sX=2, sY=39, fX=881, fY=473;
int x[71], y[71];
int k, n;
int c_X, c_Y;
int rX, rY;
win w=window ("Drakensang Online: браузерная онлайн-игра в стиле фэнтези", "QWidget", -1);
sleep(1000);
w.widthclient = 890;
w.heightclient = 570;
w.leftclient = 50;
w.topclient = 50;
moveclient(w);
sleep(1000);
activate(w);
c_X=w.widthclient/2;
c_Y=w.heightclient/2;
nazad: finddynamic(0, #x[0], #y[0], 0, 0, 0, 0, sX, sY, fX, fY, w);
sleep(500);
k=finddynamic(71, #x[0], #y[0], 10, 10, 15, 15, sX, sY, fX, fY, w);
if (k>70)goto nazad;
sort();
if (k>0)
{
n=0;
r: if (n<k)
{
mousemove(x[n]+sX, y[n]+sY, w);
sleep(200);
if (getcolor(358, 74,w)==66047)
{
mouse(RIGHT);
rX=x[n]-c_X;
rY=y[n]-c_Y;
if (rX<0)rX=-rX;
if (rY<0)rY=-rY;
if (rX<100 && rY<100)mouse(LEFT);
goto nazad;
}
n++;
goto r;
}
}
goto nazad;
function sort()//Сортировка по растоянию Моб-Персонаж (пузырьковая сортировка)
{
int rast, rast1, rsX, rsY, n, n1, t_x, t_y;
n=0;
pr: if (n<k)
{
//////////
n1=k-1;
pr1: if (n1>n)
{
/////////
rsX=x[n1-1]-c_X; rsY=y[n1-1]-c_Y; rast=(rsX*rsX)+(rsY*rsY);
rsX=x[n1]-c_X; rsY=y[n1]-c_Y; rast1=(rsX*rsX)+(rsY*rsY);
if (rast>rast1)
{
t_x=x[n1-1];t_y=y[n1-1];
x[n1-1]=x[n1];y[n1-1]=y[n1];
x[n1]=t_x;y[n1]=t_y;
}
/////////
n1--;
goto pr1;
}
//////////
n++;
goto pr;
}
}
|