Перейти к содержанию

Рекомендуемые сообщения

захотел попробовать сделать аим, с горем пополам я его сделал но он не работает так как нужно.Помогите понять и решить эту проблему.Видео с которого был сделан проект

 

Сам проект.

 

P.S. Где не прокомментировал не понял или не знал как написать.

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, Senpai сказал:

Попробуй вывести сначала просто координаты игроков в консоли или куда-то ещё

Вывести на консоль у меня получается и игрока и противников

7 часов назад, JustHack сказал:

чтобы за тебя сделали.

Я не прошу сделать за меня я прошу указать на ошибку из за которой проект не работает так как надо

Ссылка на комментарий
Поделиться на другие сайты

5 часов назад, mumut сказал:

 я прошу указать на ошибку из за которой проект не работает так как надо

А что не так? Аим там какого типа? Fov или шо? 

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Senpai сказал:

А что не так? Аим там какого типа? Fov или шо? 

По идеи как я понял мы получаем координаты игрока и врага делаем математическую магию и ложем в поворот камеры. А какого типа такой аимбот я не знаю.

Изменено пользователем mumut
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, mumut сказал:

А какого типа такой аимбот я не знаю.

Желательно знать

 

1 час назад, mumut сказал:

делаем математическую магию и ложем в поворот камеры

советую детально разобраться в этой "магии" .
И распиши, что не так с аим ботом.

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Senpai сказал:

И распиши, что не так с аим ботом.

Сначала он не записывал в адрес "поворот камеры" но я это исправил. Теперь он поворачивает но не туда куда нужно примерно в диапазоне от нуля до ста по X и Y координате когда максимальный поворот камеры по X составляет примерно "от -32750 до +32750" а по Y "от -16385 до +16385". Я предполагаю что за почти всю математическую магию

отвечает эта функция.

Спойлер

void CalcAngle_Test(float *src, float * dst, float *angles)
{
	double delta[3] = { (src[0] - dst[0]), (src[1] - dst[1]), (src[2] - dst[2]) };
	double hyp = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);
	angles[0] = (float)(asinf(delta[2] / hyp) * 57.295779513082f);
	angles[1] = (float)(atanf(delta[1] / delta[0]) * 57.295779513082f);
	angles[2] = (float)0;

	if (delta[0] >= 0.0)
	{
		angles[1] += 180.0f;
	}
}

 

Но я не могу понять что делает вторая, третья, и четвертая строчка если можно то объясните.

 

Ссылка на комментарий
Поделиться на другие сайты

angles[0] = (float)(asinf(delta[2] / hyp) * 57.295779513082f);
	angles[1] = (float)(atanf(delta[1] / delta[0]) * 57.295779513082f);

Перевод из радиан в градусы

double delta[3] = { (src[0] - dst[0]), (src[1] - dst[1]), (src[2] - dst[2]) };
	double hyp = sqrt(delta[0] * delta[0] + delta[1] * delta[1]);

Вторая строчка это длина вектора(линии из одной точки в другую)

Ссылка на комментарий
Поделиться на другие сайты

10 часов назад, Senpai сказал:
11 часов назад, mumut сказал:

 "от -32750 до +32750" а по Y "от -16385 до +16385".

  Скрыть контент

wat-kartinka-mem-20.jpg.16d8e1a0ba08551d 

Поворот камеры в игре типа 4 байт.Поэтому такие значения. Так сделал разработчик.

Ссылка на комментарий
Поделиться на другие сайты

У меня такой вопрос, я правильно предполагаю что мне надо сначала преобразовать поворот камеры в 360 градусов а только потом записывать значение или нет ?

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, mumut сказал:

У меня такой вопрос, я правильно предполагаю что мне надо сначала преобразовать поворот камеры в 360 градусов а только потом записывать значение или нет ?

А вот как думаешь. Если игра принимает углы "от -32750 до +32750", а по Y "от -16385 до +16385", то какой смысл записывать углы в градусах?

Ссылка на комментарий
Поделиться на другие сайты

5 минут назад, Senpai сказал:

А вот как думаешь

То есть мне надо прочитать угол поворота преобразовать в 360 градусов прибавить полученное значение из математической магии и обратно преобразовать в значение исходного типа. Если да то у меня вопрос по поводу как преобразовать обратно.

Ссылка на комментарий
Поделиться на другие сайты

10 минут назад, mumut сказал:

То есть мне надо прочитать угол поворота преобразовать в 360 градусов прибавить полученное значение из математической магии и обратно преобразовать в значение исходного типа. Если да то у меня вопрос по поводу как преобразовать обратно.

Тебе нужно преобразовать значения из игры в радианы(т.к. тригонометрические функции в c++ работают с радианами), а потом из радиан в значения из игры

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, Senpai сказал:

а потом из радиан в значения из игры

Окей допустим я преобразовал значения из игры в радианы а как мне обратно преобразовать в значения из игры ?

Ссылка на комментарий
Поделиться на другие сайты

13 минут назад, mumut сказал:

Окей допустим я преобразовал значения из игры в радианы а как мне обратно преобразовать в значения из игры ?

Хз, по какой-то формуле, мейби 

Ссылка на комментарий
Поделиться на другие сайты

13 минут назад, mumut сказал:

Спасибо за помощь я посмотрю какие есть формулы связаны с радианом

Не думаю, что будет что-то подходящее. Тут лучше самому подумать. Вот 32750 это π . тогда 32750/π мы получаем какое-то число . если на него поделить число из игры, то получим значение в радианах

Ссылка на комментарий
Поделиться на другие сайты

15 минут назад, Senpai сказал:

то получим значение в радианах

А можно ли сделать так: 

  1. Получить текущий поворот камеры
  2. Поделить на максимальный поворот камеры
  3. Умножить на 180
  4. Проверить если значение меньше 0 то прибавить 360
  5. По формуле преобразовать из градусов в радианы
  6. Прибавить к нашему значению значение из математической магии
  7. По формуле преобразовать из радианов в градусы
  8. Проверить если значение больше 0 то отнять 360
  9. Поделить на 180
  10. Умножить на максимальный поворот камеры
  11. Записать в поворот камеры

Или получится какая то кашица ?

Изменено пользователем mumut
Ссылка на комментарий
Поделиться на другие сайты

9 минут назад, mumut сказал:

А можно ли сделать так: 

  1. Получить текущий поворот камеры
  2. Поделить на максимальный поворот камеры
  3. Умножить на 180
  4. Проверить если значение меньше 0 то прибавить 360
  5. По формуле преобразовать из градусов в радианы
  6. Прибавить к нашему значению значение из математической магии
  7. По формуле преобразовать из радианов в градусы
  8. Проверить если значение больше 0 то отнять 360
  9. Поделить на 180
  10. Умножить на максимальный поворот камеры
  11. Записать в поворот камеры

Или получится какая то кашица ?

А зачем переводить в градусы, а потом в радианы, если можно сразу в радианы, ну ,в принципе, делай как хош

Ссылка на комментарий
Поделиться на другие сайты

Только что, Senpai сказал:

А зачем переводить в градусы, а потом в радианы, если можно сразу в радианы, ну ,в принципе, делай как хош

Нет это как пример может ли такое сработать или лучше проверить и узнать.

Ссылка на комментарий
Поделиться на другие сайты

12 минут назад, mumut сказал:

Нет это как пример может ли такое сработать или лучше проверить и узнать.

Может, why not? Но это будет тот ещё гомнокод B-)

Изменено пользователем Senpai
Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Senpai сказал:

Может, why not?

Можно у тебя еще кое что узнать а точнее про эту функцию:

Спойлер

	float Get3dDistance(float myCoordsX, float myCoordsY, float myCoordsZ, 
                        float enCoordsX, float enCoordsY, float enCoordsZ)
	{
		return sqrt(pow(double(enCoordsX - myCoordsX), 2.0) +
					pow(double(enCoordsY - myCoordsY), 2.0) +
					pow(double(enCoordsZ - myCoordsZ), 2.0));
	}

 

 

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.