EvilByte Опубликовано 26 февраля, 2016 Поделиться Опубликовано 26 февраля, 2016 Пришла на ум мысль сделать 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 байта). Как я понимаю, нужно каким-то образом перевести координаты противника, в экранные координаты (координаты мышки). Каким образом это сделать, мне не известно. Буду очень признателен, если кто-нибудь поможет мне, с этой проблемой. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 27 февраля, 2016 Поделиться Опубликовано 27 февраля, 2016 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] Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 27 февраля, 2016 Поделиться Опубликовано 27 февраля, 2016 (изменено) 1-е читаем память игры 2 перебираем в цикле координаты игроков и одновременно высчитываем длину вектора , от курсора до других игроков , находим наименьший вектор . И двигаем мышку туда , откуда проведён наименьший вектор . Двигать её можно с помощью функции mouse_event . Советую сделать DLL библиотеку и инжектить её в процесс игры. Изменено 27 февраля, 2016 пользователем afro228offical Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 27 февраля, 2016 Автор Поделиться Опубликовано 27 февраля, 2016 2 часа назад, afro228offical сказал: 1-е читаем память игры 2 перебираем в цикле координаты игроков и одновременно высчитываем длину вектора , от курсора до других игроков , находим наименьший вектор . И двигаем мышку туда , откуда проведён наименьший вектор . Двигать её можно с помощью функции mouse_event . Советую сделать DLL библиотеку и инжектить её в процесс игры. Ничего нового я не услышал (способов реализаций существует множество), вопрос остается открытый - конвертированние мировых координат, в координаты экранные. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 27 февраля, 2016 Поделиться Опубликовано 27 февраля, 2016 19 минуту назад, EvilByte сказал: вопрос остается открытый - конвертированние мировых координат, в координаты экранные. Второй пост смотрел? Не подошло? Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 27 февраля, 2016 Автор Поделиться Опубликовано 27 февраля, 2016 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 игра)? Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 27 февраля, 2016 Автор Поделиться Опубликовано 27 февраля, 2016 13 минуты назад, Garik66 сказал: Второй пост смотрел? Не подошло? Сейчас попробую. В Cheat Engine ассемблере команды в таком же виде (fld и fistp)? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 27 февраля, 2016 Поделиться Опубликовано 27 февраля, 2016 1 минуту назад, EvilByte сказал: В Cheat Engine ассемблере команды в таком же виде (fld и fistp)? да Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 27 февраля, 2016 Поделиться Опубликовано 27 февраля, 2016 48 минуты назад, EvilByte сказал: Ничего нового я не услышал (способов реализаций существует множество), вопрос остается открытый - конвертированние мировых координат, в координаты экранные. Игра 2д , ты собираешься ,по твоим словам, конвертировать их в экранные . А ничего , что экранные координаты это и есть 2д ?! Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 27 февраля, 2016 Автор Поделиться Опубликовано 27 февраля, 2016 21 минуты назад, afro228offical сказал: Игра 2д , ты собираешься ,по твоим словам, конвертировать их в экранные . А ничего , что экранные координаты это и есть 2д ?! Сразу видно, что ты не разбираешься. Почитай про понятие объект (мировые координаты и экранные). Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 27 февраля, 2016 Поделиться Опубликовано 27 февраля, 2016 (изменено) 2 часа назад, EvilByte сказал: Сразу видно, что ты не разбираешься. Почитай про понятие объект (мировые координаты и экранные). Видимо , надо было подробней объяснить , что хочешь сделать . Ща , возможно я тебя понял , Типа в игре координаты x=123.321 , а y=321,123 и тебе надо их перевести в экранные (в целые числа ) И , возможно , проблема в том , что может игровая координата уйти в минус ? Так? Скажи , что за игра ? Изменено 27 февраля, 2016 пользователем afro228offical Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 28 февраля, 2016 Автор Поделиться Опубликовано 28 февраля, 2016 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 (При этом, координаты мышки никак не могут быть равны с координатами игрока). Если этот игрок сместится куда - нибудь, то прицел уже будет не на нем. То есть задача такова: Нужно перевести координаты игроков мировые (или игровые, не знаю как они еще называются), в координаты мышки (Экранные координаты). Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 28 февраля, 2016 Автор Поделиться Опубликовано 28 февраля, 2016 В 27.02.2016в20:53, Garik66 сказал: Второй пост смотрел? Не подошло? Спасибо за ответ, но не подошло. Как вы не можете понять, что координаты мышки и координаты игроков не зависят напрямую. Просто перевод игровых координат в целое число ничего не даст. Тут именно нужно конвертированние координат игровых, в координаты экранные (координаты мышки). Есть ли, на этом форуме специалисты по этому делу (Aimbot)? Возможно, тут нужно делать какие-нибудь геометрические действия? Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 28 февраля, 2016 Поделиться Опубликовано 28 февраля, 2016 24 минуты назад, EvilByte сказал: Спасибо за ответ, но не подошло. Как вы не можете понять, что координаты мышки и координаты игроков не зависят напрямую. Просто перевод игровых координат в целое число ничего не даст. Тут именно нужно конвертированние координат игровых, в координаты экранные (координаты мышки). Есть ли, на этом форуме специалисты по этому делу (Aimbot)? Возможно, тут нужно делать какие-нибудь геометрические действия? Напиши в лс , что-нибудь придумаю... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 февраля, 2016 Поделиться Опубликовано 29 февраля, 2016 13 часа назад, EvilByte сказал: Как вы не можете понять, что координаты мышки и координаты игроков не зависят напрямую. Я сам ни разу не писал aimbot, а написал своё сообщение исходя из этого: В 26.02.2016в00:01, EvilByte сказал: mov [адрес координаты мышки X], координата противника X mov [адрес координаты мышки Y], координата противника Y Вот тут, то и есть некоторая проблема. подумал, что ты сам всё знаешь и испытываешь трудности именно с переводом float в integer. А по-твоему вопросу: 13 часа назад, EvilByte сказал: Тут именно нужно конвертированние координат игровых, в координаты экранные (координаты мышки). Видел у нас на форуме тему (название не помню) - в ней keng объяснял человеку как перевести игровые координаты на координаты мини-карты (человек хотел сделать мини-карту для игры со всеми ботами) - думаю тебе эта тема подойдёт. Попробуй поискать её по нику kengа. Может по слову мини-карта можно найти. ЗЫ: Вроде нашёл - 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 29 февраля, 2016 Поделиться Опубликовано 29 февраля, 2016 (изменено) В 28.02.2016в20:17, EvilByte сказал: Тут именно нужно конвертированние координат игровых, в координаты экранные (координаты мышки). PS: EvilByte, я тут подумал и мне кажется, что тебе нужно вернуться к поиску координат - координат не мышки, а прицела - координаты прицела будут уже пересчитаны к, как ты их называешь, мировым (игровым, а не экранным) координатам и они скорее всего все будут во float и координаты прицела и координаты NPC и никаких double и int не будет. Перепроверь координаты. Изменено 29 февраля, 2016 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 29 февраля, 2016 Поделиться Опубликовано 29 февраля, 2016 21 минуты назад, Garik66 сказал: PS: EvilByte, я тут подумал и мне кажется, что тебе нужно вернуться к поиску координат - координат не мышки, а прицела - координаты прицела будут уже пересчитаны к, как ты их называешь, мировым (игровым, а не экранным) координатам и они скорее всего все будут во float и координаты прицела и координаты NPC и никаких double и int не будет. Перепроверь координаты. Да , рили ... Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 29 февраля, 2016 Автор Поделиться Опубликовано 29 февраля, 2016 (изменено) 2 часа назад, Garik66 сказал: PS: EvilByte, я тут подумал и мне кажется, что тебе нужно вернуться к поиску координат - координат не мышки, а прицела - координаты прицела будут уже пересчитаны к, как ты их называешь, мировым (игровым, а не экранным) координатам и они скорее всего все будут во float и координаты прицела и координаты NPC и никаких double и int не будет. Перепроверь координаты. Спасибо за ответы, этот способ я тоже проверял, координаты прицела оказались целые числа, и если в них записывать какие-либо значения, то прицел только визуально меняет положение, а стреляет туда, где стоит курсор. А если записывать значения, в координаты мышки которые были найдены мною ранее, то все работает (стрелять будет туда, куда запишешь значение, а прицел визуальный не будет менять положение). То есть, координаты мышки найдены уже правильно. Изменено 29 февраля, 2016 пользователем EvilByte Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 29 февраля, 2016 Автор Поделиться Опубликовано 29 февраля, 2016 13 часа назад, Garik66 сказал: Я сам ни разу не писал aimbot, а написал своё сообщение исходя из этого: подумал, что ты сам всё знаешь и испытываешь трудности именно с переводом float в integer. А по-твоему вопросу: Видел у нас на форуме тему (название не помню) - в ней keng объяснял человеку как перевести игровые координаты на координаты мини-карты (человек хотел сделать мини-карту для игры со всеми ботами) - думаю тебе эта тема подойдёт. Попробуй поискать её по нику kengа. Может по слову мини-карта можно найти. ЗЫ: Вроде нашёл - Как мне кажется, нужно идти вот в этом направлении Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 2 марта, 2016 Поделиться Опубликовано 2 марта, 2016 (изменено) Слишком вы все усложняете, может легче и быстрее сделать пиксельный аимбот по цвету определенной области. У противников по любому должен совпадать раскраск. Для 2D игр проще способа я не знаю) Изменено 2 марта, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 марта, 2016 Поделиться Опубликовано 2 марта, 2016 В 29.02.2016в23:03, EvilByte сказал: координаты прицела оказались целые числа Думаю, это только экранные значения. А реальные, которые будут влиять и на перемещение прицела и на то куда полетит пуля - во float всё-таки. Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 3 марта, 2016 Автор Поделиться Опубликовано 3 марта, 2016 23 часа назад, Garik66 сказал: Думаю, это только экранные значения. А реальные, которые будут влиять и на перемещение прицела и на то куда полетит пуля - во float всё-таки. Реальные значения, которые влияют на перемещение прицела (это и есть курсор, у него тип 4 байта), они не зависят от самого прицела (прицел просто визуальный). Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 3 марта, 2016 Автор Поделиться Опубликовано 3 марта, 2016 В 02.03.2016в17:45, partoftheworlD сказал: Слишком вы все усложняете, может легче и быстрее сделать пиксельный аимбот по цвету определенной области. У противников по любому должен совпадать раскраск. Для 2D игр проще способа я не знаю) Нет желания создавать пиксельный аибот, да и противники, могут менять скин и он не будет работать Ссылка на комментарий Поделиться на другие сайты Поделиться
EvilByte Опубликовано 3 марта, 2016 Автор Поделиться Опубликовано 3 марта, 2016 А вобще нашел метод, относительно языка flash (ActionScript), который переводит координаты, с помощью функции globalToLocal () Но эта функция, работает в среде flash. Встал в тупик( Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения