Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Ориентирование по миникарте

Страниц (1): [1]
 

1. Nikanr - 29 Марта, 2021 - 08:19:22 - перейти к сообщению
Пытаюсь сделать ориентирование на мини карте. У нас есть позиции по x, y где:

587, 62 - центральная точка персонажа на мини карте
322, 191 - центральная точка персонажа в игре

Местность вокруг персонажа меняется при передвижении но эти координаты остаются неизменными. Передвижение осуществляется зажатием кнопки мыши относительно персонажа.(допустим зажали на 325, 209 - персонаж побежал в одну сторону и т.д) Так же в любом месте на мини карте может появиться картинка, путь её координаты на мини карте будут 597, 51. Вопрос: как посчитать координаты места для зажатия кнопки в игре, что бы при зажатии в этих координатах персонаж двигался в сторону этой картинки?
(Добавление)
Получилось что-то вроде этого, но работает только вперед и назад

CODE:
int x=0, y=0;

function smesh(int xs, int ys){

int cord[4]={587, 62, 325, 183}; //0 - x миникарта, 1 - y миникарта. Остальные 2 игра аналогично

x = (cord[0] - (cord[0] - cord[2])) + (cord[0] - xs)*2*-1;

y = (cord[1] - (cord[1] - cord[3])) + (cord[1] - ys)*2*-1;
}
2. Zireael - 29 Марта, 2021 - 19:36:06 - перейти к сообщению
CODE:
external(INT, "abs", "abs", "msvcrt.dll");

int x, y;
int cord[4]={587, 62, 597, 51}; // координаты персонажа и картинки на миникарте
int cord_game[2]={322, 191}; // координаты персонажа в игре

int deltaX = cord[0] - cord[2]; // разница в координатах
int deltaY = cord[1] - cord[3]; // разница в координатах
deltaX = abs(deltaX);
deltaY = abs(deltaY);

messagebox(format(deltaX)+" "+format(deltaY));

if(cord[0]<cord[2])x = cord_game[0] + deltaX; // если персонаж левее картинки
else x = cord_game[0] - deltaX; // иначе правее

if(cord[1]<cord[3])y = cord_game[1] + deltaY; // если персонаж выше картинки
else y = cord_game[1] - deltaY; // иначе ниже

messagebox(format(x)+" "+format(y));

Powered by ExBB FM 1.0 Final