EvilByte

Aimbot для 2D игры [help]

24 сообщения в этой теме

Пришла на ум мысль сделать aimbot для 2D flash игры. Сама реализация аимбота мне понятна, но есть некоторая проблема, о которой я скажу позже.

Как я представляю реализацию аимбота (Прошу поправить, если что-то не так):

1)Читаем адрес со значением о кол-ве игроков n раз в t время.

 

2) Запускаем цикл, с перебором всех игроков(базовый адрес + смещение каждого игрока + смещение до координат) и читаем их координаты

 

3)Далее вычисляем дистанцию от своей координаты до координаты противника и добавляем в массив в отсортированном порядке.

 

4)Находим адрес координат нашей мышки X и Y.

 

5)Потом делаем инъекцию кода в уже найденную инструкцию стрельбы, с записью координат ближайшего врага.

После инструкции стрельбы пишем команду

 

mov [адрес координаты мышки X], координата противника X

mov [адрес координаты мышки Y], координата противника Y

Вот тут, то и есть некоторая проблема.

 

Координаты противника X - это float значение

Координаты противника Y -  это double значение.

Координаты мышки X, Y - это int значение(4 байта).

 

Как я понимаю, нужно каким-то образом перевести координаты противника, в экранные координаты (координаты мышки).

Каким образом это сделать, мне не известно.

Буду очень признателен, если кто-нибудь поможет мне, с этой проблемой.

 

 

 

0

Поделиться сообщением


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

 

12 часа назад, EvilByte сказал:

Координаты противника X - это float значение

Координаты противника Y -  это double значение.

Каким образом у тебя получились разные типы для координат не очень понял (лично я ни разу с таким не сталкивался).

12 часа назад, EvilByte сказал:

нужно каким-то образом перевести координаты противника, в экранные координаты (координаты мышки).

Используя инструкции математического сопроцессора.

Например на ассемблер:

fld [координата противника X]      // записываем в st(0) координату X во FLOAT
fistp [адрес координаты мышки X]   // перезаписываем из st(0) координату в [адрес координаты мышки X], одновременно переводя значение в INTEGER
fld [координата противника Y]      // Для Y тоже самое.  
fistp [адрес координаты мышки Y]

 

0

Поделиться сообщением


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

 1-е читаем память игры 2 перебираем в цикле координаты игроков и одновременно высчитываем длину вектора , от курсора до других игроков 
, находим наименьший вектор . И двигаем мышку туда , откуда проведён наименьший вектор . Двигать её можно с помощью функции mouse_event . Советую сделать DLL библиотеку и инжектить её в 
процесс игры.

Изменено пользователем afro228offical
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, afro228offical сказал:

 1-е читаем память игры 2 перебираем в цикле координаты игроков и одновременно высчитываем длину вектора , от курсора до других игроков 
, находим наименьший вектор . И двигаем мышку туда , откуда проведён наименьший вектор . Двигать её можно с помощью функции mouse_event . Советую сделать DLL библиотеку и инжектить её в 
процесс игры.

Ничего нового я не услышал (способов реализаций существует множество), вопрос остается открытый - конвертированние мировых координат, в координаты экранные.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
19 минуту назад, EvilByte сказал:

вопрос остается открытый - конвертированние мировых координат, в координаты экранные.

Второй пост смотрел? Не подошло?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
5 часов назад, Garik66 сказал:

 

Каким образом у тебя получились разные типы для координат не очень понял (лично я ни разу с таким не сталкивался).

Используя инструкции математического сопроцессора.

Например на ассемблер:


fld [координата противника X]      // записываем в st(0) координату X во FLOAT
fistp [адрес координаты мышки X]   // перезаписываем из st(0) координату в [адрес координаты мышки X], одновременно переводя значение в INTEGER
fld [координата противника Y]      // Для Y тоже самое.  
fistp [адрес координаты мышки Y]

 

 

Разные типы координат получились такими, так как во всех flash играх существует область окна (swf игры), в которой есть высота и ширина окна (пример 900x600).

Курсор мышки, который попадает в видимость окна флеш игры, записываются координаты положения высоты и ширины окна (это и есть координаты мышки).

 

В пример, если курсор мышки стоит в центре окна игры (900x600), то координаты будут следующие:

Xmouse = 450 (int)

Ymouse = 300 (int)

А мировые координаты игроков, имеют тип float - это X координата игрока, а тип double - это Y координата игрока.

Перевести мировые координаты в тип int, это не проблема, но они будут отличаться от экранных координат мышки (курсора).

 

То есть математический сопроцессор может перевести мировые координаты игроков в координаты мышки каким-то способом?

Или вы просто имели ввиду, конвентирование float в int?

 

Может нужно работать с матрицами, или с геометрией какой-либо (ну нужно учитывать, что это 2D игра)?

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 минуты назад, Garik66 сказал:

Второй пост смотрел? Не подошло?

Сейчас попробую. В Cheat Engine ассемблере команды в таком же виде (fld и fistp)?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, EvilByte сказал:

В Cheat Engine ассемблере команды в таком же виде (fld и fistp)?

да

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
48 минуты назад, EvilByte сказал:

Ничего нового я не услышал (способов реализаций существует множество), вопрос остается открытый - конвертированние мировых координат, в координаты экранные.

Игра 2д , ты собираешься ,по твоим словам, конвертировать их в экранные . А ничего , что экранные координаты это и есть 2д ?!

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
21 минуты назад, afro228offical сказал:

Игра 2д , ты собираешься ,по твоим словам, конвертировать их в экранные . А ничего , что экранные координаты это и есть 2д ?!

Сразу видно, что ты не разбираешься. Почитай про понятие объект (мировые координаты и экранные).

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, EvilByte сказал:

Сразу видно, что ты не разбираешься. Почитай про понятие объект (мировые координаты и экранные).

Видимо , надо было подробней объяснить , что хочешь сделать . Ща , возможно  я тебя понял , Типа в игре координаты x=123.321 , а y=321,123 и тебе надо их перевести в экранные (в целые числа ) И , возможно , проблема в том , что может игровая координата уйти в минус ?
Так? Скажи , что за игра ?

Изменено пользователем afro228offical
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
22 часа назад, afro228offical сказал:

Видимо , надо было подробней объяснить , что хочешь сделать . Ща , возможно  я тебя понял , Типа в игре координаты x=123.321 , а y=321,123 и тебе надо их перевести в экранные (в целые числа ) И , возможно , проблема в том , что может игровая координата уйти в минус ?
Так? Скажи , что за игра ?

Нет немного не правильно меня понял.

Координаты мышки целые числа (Пример x=340, y=600) - это положение курсора на экране.

Координаты игрока дробные числа (Пример x=3.2235234, y=11.34253452).

Перевод координат игрока в целое число - это не проблема. Тут дело немного в другом:

Допустим мышка (курсор) у меня находится в центре окна игры (Пример разрешение окна 600 на 800), тем самым координаты мышки x=300, y=400.

Игрок, которого мы хотим убить находится в центре экрана, то есть мы вручную навели на него прицел. А координата игрока, допустим x=3.55234663 и y=11.53652346 (При этом, координаты мышки никак не могут быть равны с координатами игрока).

Если этот игрок сместится куда - нибудь, то прицел уже будет не на нем.

То есть задача такова:

Нужно перевести координаты игроков мировые (или игровые, не знаю как они еще называются), в координаты мышки (Экранные координаты).

 

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 27.02.2016в20:53, Garik66 сказал:

Второй пост смотрел? Не подошло?

Спасибо за ответ, но не подошло.

Как вы не можете понять, что координаты мышки и координаты игроков не зависят напрямую.

Просто перевод игровых координат в целое число ничего не даст.

Тут именно нужно конвертированние координат игровых, в координаты экранные (координаты мышки).

Есть ли, на этом форуме специалисты по этому делу (Aimbot)?

Возможно, тут нужно делать какие-нибудь геометрические действия?

 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
24 минуты назад, EvilByte сказал:

Спасибо за ответ, но не подошло.

Как вы не можете понять, что координаты мышки и координаты игроков не зависят напрямую.

Просто перевод игровых координат в целое число ничего не даст.

Тут именно нужно конвертированние координат игровых, в координаты экранные (координаты мышки).

Есть ли, на этом форуме специалисты по этому делу (Aimbot)?

Возможно, тут нужно делать какие-нибудь геометрические действия?

 

Напиши в лс , что-нибудь придумаю...

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, EvilByte сказал:

Как вы не можете понять, что координаты мышки и координаты игроков не зависят напрямую.

Я сам ни разу не писал aimbot, а написал своё сообщение исходя из этого:

В 26.02.2016в00:01, EvilByte сказал:

mov [адрес координаты мышки X], координата противника X

mov [адрес координаты мышки Y], координата противника Y

Вот тут, то и есть некоторая проблема.

подумал, что ты сам всё знаешь и испытываешь трудности именно с переводом float в integer. 

А по-твоему вопросу:

13 часа назад, EvilByte сказал:

Тут именно нужно конвертированние координат игровых, в координаты экранные (координаты мышки).

Видел у нас на форуме тему (название не помню) - в ней keng объяснял человеку как перевести игровые координаты на координаты мини-карты (человек хотел сделать мини-карту для  игры со всеми ботами) - думаю тебе эта тема подойдёт. Попробуй поискать её по нику kengа. Может по слову мини-карта можно найти. 

ЗЫ: Вроде нашёл - 

 

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 28.02.2016в20:17, EvilByte сказал:

Тут именно нужно конвертированние координат игровых, в координаты экранные (координаты мышки).

PS: EvilByte, я тут подумал и мне кажется, что тебе нужно вернуться к поиску координат - координат не мышки, а прицела - координаты прицела будут уже пересчитаны к, как ты их называешь, мировым (игровым, а не экранным) координатам и они скорее всего все будут во float и координаты прицела и координаты NPC и никаких  double и int не будет. Перепроверь координаты.

Изменено пользователем Garik66
1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
21 минуты назад, Garik66 сказал:

PS: EvilByte, я тут подумал и мне кажется, что тебе нужно вернуться к поиску координат - координат не мышки, а прицела - координаты прицела будут уже пересчитаны к, как ты их называешь, мировым (игровым, а не экранным) координатам и они скорее всего все будут во float и координаты прицела и координаты NPC и никаких  double и int не будет. Перепроверь координаты.

Да , рили ...

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Garik66 сказал:

PS: EvilByte, я тут подумал и мне кажется, что тебе нужно вернуться к поиску координат - координат не мышки, а прицела - координаты прицела будут уже пересчитаны к, как ты их называешь, мировым (игровым, а не экранным) координатам и они скорее всего все будут во float и координаты прицела и координаты NPC и никаких  double и int не будет. Перепроверь координаты.

Спасибо за ответы, этот способ я тоже проверял, координаты прицела оказались целые числа, и если в них записывать какие-либо значения, то прицел только визуально меняет положение, а стреляет туда, где стоит курсор.

А если записывать значения, в координаты мышки которые были найдены мною ранее, то все работает (стрелять будет туда, куда запишешь значение, а прицел визуальный не будет менять положение).

То есть, координаты мышки найдены уже правильно.

Изменено пользователем EvilByte
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, Garik66 сказал:

Я сам ни разу не писал aimbot, а написал своё сообщение исходя из этого:

подумал, что ты сам всё знаешь и испытываешь трудности именно с переводом float в integer. 

А по-твоему вопросу:

Видел у нас на форуме тему (название не помню) - в ней keng объяснял человеку как перевести игровые координаты на координаты мини-карты (человек хотел сделать мини-карту для  игры со всеми ботами) - думаю тебе эта тема подойдёт. Попробуй поискать её по нику kengа. Может по слову мини-карта можно найти. 

ЗЫ: Вроде нашёл - 

 

Как мне кажется, нужно идти вот в этом направлении

0

Поделиться сообщением


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

Слишком вы все усложняете, может легче и быстрее сделать пиксельный аимбот по цвету определенной области. У противников по любому должен совпадать раскраск. Для 2D игр проще способа я не знаю)

 

 

 

 

Изменено пользователем partoftheworlD
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 29.02.2016в23:03, EvilByte сказал:

координаты прицела оказались целые числа

Думаю, это только экранные значения.

А реальные, которые будут влиять и на перемещение прицела и на то куда полетит пуля - во float всё-таки.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
23 часа назад, Garik66 сказал:

Думаю, это только экранные значения.

А реальные, которые будут влиять и на перемещение прицела и на то куда полетит пуля - во float всё-таки.

Реальные значения, которые влияют на перемещение прицела (это и есть курсор, у него тип 4 байта), они не зависят от самого прицела (прицел просто визуальный). 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 02.03.2016в17:45, partoftheworlD сказал:

Слишком вы все усложняете, может легче и быстрее сделать пиксельный аимбот по цвету определенной области. У противников по любому должен совпадать раскраск. Для 2D игр проще способа я не знаю)

 

 

 

 

 

Нет желания создавать пиксельный аибот, да и противники, могут менять скин и он не будет работать

0

Поделиться сообщением


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

А вобще нашел метод, относительно языка flash (ActionScript), который переводит координаты, с помощью функции 

globalToLocal

()

 

Но эта функция, работает в среде flash.

Встал в тупик(

0

Поделиться сообщением


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

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас