Executor Опубликовано 11 августа, 2015 Поделиться Опубликовано 11 августа, 2015 И так уважаемые , загорелся сделать себе аим бота, да не простого, а умного. Чтобы играть не задрачиваясь потея, а в удовольствие.И чтоб при желании он мог сам играть ,пока я чай пью Одним словом автоматизация процесса. Тут же хочу пояснить, кодить я умею и на с++ и на делфи, хотя последний недолюбливаю , из-за обилия знаков в синтаксических конструкциях, но если надо, терпимо. И так, хватит слов, ближе к делу. Сначала какие данные хочу использовать: это хп врага, координаты игрока и врагов, вражья броня, уровень, их id на карте. (есть еще и постоянный id пользователя но я считаю он ни к чему) Что собственно пришло на ум дальше? естественно матан, вектора, матрицы, направляющие косинусы и прочие прелести. К примеру есть две точки в пространстве, игрок и враг. по ним строим вектор. что это дает?можно найти во-первых его длину, то есть расстояние между точкамиможно узнать направление векторадальше , к примеру мы знаем направление (скорее всего единичного) вектора камеры.грубо говоря бот должен повернуть камеру по направлению вектора к врагу и точнехонько выстрелить в голову или рандомно к примеру в шею или ногу. собственно поворот я хочу осуществить прямым хуком директ3д камеры и умножением на нужную матрицу. Предполагаю, что координаты и в directx и игровые являются одинаковыми. так же , во избежание палевности бота можно сделать линейную (да хоть кубическую) интерполяцию между начальными и конечными углами и поворачивать камеру плавно. Предполагаемые режимы бота:следование за ближайшей цельюавтовыбор ближайшей цели + выбор самого побитого и добивание режим автоматической игры (ну когда совсем лень ) Предполагаемый алгоритм:в цикле проверяем каждые n секунд на появление новых игроков на картезаносим их в массив (vector c++)каждые n секунд листаем массив проверяя расстояние между игроком.проверяем нет ли препятствий между игроком и противникомзакидываем ближайших товарищей в массиввычисляем кто ближе всех, вычисляем того кто хуже себя чувствует, и кого сильно побилии начинаем методический отстрел тяжело больных товарищей, переходя к более сильным , в зоне видимости .не забываем перезаряжаться.если включен режим автоматической игры, то нужно ходить к скоплению вражин. (но это еще более суровая логика )собственно какие вопросы и проблемы возникли:я сомневаюсь что нужно хукать d3d камеру. наверное скорее всего стоит искать объект unity (что проблематично, мне кажется)поиск данных тоже поставил меня в тупикв литературе по dx & opengl вычитал что матрицы и вектора должны быть четырехмерными. я понимаю что принцип тот же, но ставит в тупик 4-я координата. вроде как это для камеры нужно.опять же если подумать, то повороты и прочая ерунда должны отправляться на сервер, если менять их в обход, то наводка будет осуществлена только у меня, а по данным сервера я выстрелю мимо.проблемно рейкастить пространство не имея api движка.не сильно ли упадет фпс от всех этих премудростей ?Итог: Мне нужны полезные рекомендации знающих людей, желательно тех кто уже сам делал нечто подобное, критика того что я надумал. Если где то не правильно мыслю, прошу подправить меня В заключение хочу добавить, что сие чудо в массы запускать и не думаю (если вдруг читают админы cw пусть выдохнут, и отложат валидол в сторонку) целью является сделать пример автоматизированного выполнения задач, да и просто получить в итоге немного релакса всем заранее спасибо! 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 11 августа, 2015 Поделиться Опубликовано 11 августа, 2015 [terminus]-------------------------------------------------------------------------------- Привет! Рекомендую с браузерки не начинать, а в целом мысли верные. --------------------------------------------------------------------------------[/terminus] 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 11 августа, 2015 Поделиться Опубликовано 11 августа, 2015 (изменено) DEL Изменено 18 августа, 2015 пользователем MasterGH 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Executor Опубликовано 12 августа, 2015 Автор Поделиться Опубликовано 12 августа, 2015 А тебе не кажется, что интереснее сделать робота в реальной жизни... Да я не спорю, в реальной жизни сделать робота куда интереснее, но тут уже проблема с оборудованием, финансами.. а тут ничего в принципе и не требуется в дальнейшем я хотел бы разработать роботизированное управление для машин , а пока хочется попрактиковаться, да пошалить Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 12 августа, 2015 Поделиться Опубликовано 12 августа, 2015 На русскоязычном форуме Юнити разработчик этой игры написал, что там авторитарный протокол и все расчеты на сервере. Он не уточнял какие расчеты на клиенте и какие на сервере. Но мне кажется на сервер отправляются данные ввода от клавы и мышки. Положения и попадания по коллизиям вычисляются на сервере. Наверно, все что можно это отправлять оси "X,Y мышки" и нажатие на кнопки. float h = horizontalSpeed * Input.GetAxis("Mouse X"); float v = verticalSpeed * Input.GetAxis("Mouse Y"); Но их надо рассчитывать лучше чем это делает мозг глядя на экран монитора и двигая рукой мышку... А поскольку игра написана на Unity3d и все API доступны, то собрать .net модуль с отправкой осей мышки и её кнопок. Тот же рейкаст гораздо удобнее делать C# и функциям движка, там несколько строчек кода. Дистанция: Vector3.DistanceНаправление вектора: отнять дальний вектор позиции от текущего вектора позиции var heading = target.position - player.position;О том как внедрять код .net сборки я писал здесь (Внедряем свою dll-ку в игру на Unity3D с помощью CE AA). Ты уж извиняй, что готового кода нет и ломать нет желания Помог чем смог, да и то, моя инфа настолько простая, в качестве мелкого демо по работе игр на движке Unity3d. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 12 августа, 2015 Поделиться Опубликовано 12 августа, 2015 Executor, так как игра написана на Unity, тебе прядется достать файл "Assembly-CSharp.dll" в котором находится код игры. Существуют два способа это статья и SWF Memory Dumper, скорей тебе подъедает 2 способ. Запускаем программу ставим галочку "Unity", и выбираем из нескольких процесс браузера нужный и нажимаем на "Scan Process" если не нашли выбирай другой процесс браузера, нашли выбираем нужные Файлы и нажимаем на "Dump to Disk". После этого выбираем сохранены файл и запускаем в Декомпилятор .NET и изучаем код. в цикле проверяем каждые n секунд на появление новых игроков на карте заносим их в массив (vector c++) каждые n секунд листаем массив проверяя расстояние между игроком.В игре есть значение, сколько игроков с час играет, не легче его считывать? И не легче будет найти структуру игроков и с них считывать данные здоровья, позиция XYZ? поиск данных тоже поставил меня в тупикЭто каких? если позиций XYZ, здоровья и всего остального, то запускаем CheatEngine в SWF Memory Dumper находим нужный процесс браузера, запоминаем PID переводим в НЕХ(при помощи калькулятора WIndows (ставим галочку в "Вид > Программист")) и ищем в cheatengine нужный значение. Пример: в "SWF Memory Dumper" нужное значение PID = 345, Name = Opera, переводи 345 в HEX это будет 159, в СheatEngine ищем 00000159-Opera.exe, подключаемся и начинаем искать данные. опять же если подумать, то повороты и прочая ерунда должны отправляться на сервер, если менять их в обход, то наводка будет осуществлена только у меня, а по данным сервера я выстрелю мимо.Так найди функцию которая отвечает за повороты и туда записывай значения. не сильно ли упадет фпс от всех этих премудростей ?главное правильно написать код и тормозить не чего не будет. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Executor Опубликовано 18 августа, 2015 Автор Поделиться Опубликовано 18 августа, 2015 В игре есть значение, сколько игроков с час играет, не легче его считывать? И не легче будет найти структуру игроков и с них считывать данные здоровья, позиция XYZ? так вот проблема в поиске этой структуры. в принципе как делаю я:1) нахожу значение хп2)ищу многоуровневые указатели3)дальше в принципе нахожу структуру своего игрока (там валяется уровень броня и ид, и прочее)4) перехожу на указатель выше и не нахожу остальных игроков, собсно в этом то и тупик Ты уж извиняй, что готового кода нет и ломать нет желания Помог чем смог, да и то, моя инфа настолько простая, в качестве мелкого демо по работе игр на движке Unity3d.да готовый код мне не нужен. при желании сам напишу. это нормальное явление , писать код В игре есть значение, сколько игроков с час играет, не легче его считывать?ты прав, так будет удобнее Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 18 августа, 2015 Поделиться Опубликовано 18 августа, 2015 Executor, попробуй найти хп 2- 3 врагов и от них попробуй найти нужные указатели. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 августа, 2015 Поделиться Опубликовано 18 августа, 2015 так вот проблема в поиске этой структуры. в принципе как делаю я: 1) нахожу значение хп 2)ищу многоуровневые указатели 3)дальше в принципе нахожу структуру своего игрока (там валяется уровень броня и ид, и прочее) 4) перехожу на указатель выше и не нахожу остальных игроков, собсно в этом то и тупик Тебе будет значительно легче, если ты будешь знать Unity3D и на нём сначала отработаешь бота. А затем инжектируюя .net модуль уже в саму игру.Объекты GameObject(контейнеры) искать по tag, имени, положению в иерархии объектов. Компоненты контейнера искать по типу. Поля и функции искать по C#-функциями. Читать поля, вызывать функции по C#-функциям. Но, даже если ты найдешь все объекты (своего персонажа, чужих), все компоненты объектов, поля, функции и прочее. То как уже писал автор, все расчеты на серваке. Если автору игры верить, то рейкаст из точки выстрела в точку попадания в персонажа рассчитается на сервере. Тогда ты сможешь только искать GOs своего и чужих персонажей, искать компонент Transform, из него координаты, а отправлять только оси мышки, клавиши мышки, клавиши клавиатуры. Может быть непросто рассчитать оси мышки, чтобы подменить их (добавить дельту) так, чтоб прицел попал в голову, учитывая динамичность игры. Хотя возможно.Также забыл, написать. Чтобы найти чтение осей мышки и класс Input, тебе надо декомпилировать одну из .net .dll в папке с игрой. Через поиск найти. Когда напишешь свой скрипт, тебе придется либо добавлять дельту, либо подменять чужой компонент контроллера своим. Контроллер - компонент управления каким-то объектом. Еще обращу внимание. Я считаю, что если игровой движок хорошо знаешь и он у тебя есть, то это дает очень большие шансы, чтобы сделать в игре сделанной на этом движке, любую модификацию. Ссылка на комментарий Поделиться на другие сайты Поделиться
Executor Опубликовано 21 октября, 2015 Автор Поделиться Опубликовано 21 октября, 2015 я думаю как бы не вытаскивали расчеты на сервер, подменить нужное мы можем в любом случае, проблема в поиске Ссылка на комментарий Поделиться на другие сайты Поделиться
Executor Опубликовано 4 декабря, 2015 Автор Поделиться Опубликовано 4 декабря, 2015 после долгого моего отсутствия тема всё еще актуальна =) иду методом 2zolo2 , дизасмил код, нашел кучу интересностей и полезностей. думаю над дальнейшей реализацией) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
afro228offical Опубликовано 6 декабря, 2015 Поделиться Опубликовано 6 декабря, 2015 после долгого моего отсутствия тема всё еще актуальна =) иду методом2zolo2 , дизасмил код, нашел кучу интересностей и полезностей. думаю над дальнейшей реализацией) делай цветовой aim-bot ... Ссылка на комментарий Поделиться на другие сайты Поделиться
ITkhazeplov07 Опубликовано 13 декабря, 2015 Поделиться Опубликовано 13 декабря, 2015 перехожу на указатель выше и не нахожу остальных игроков, собсно в этом то и тупик Как не пытался, у меня тоже на получается находить координаты других игроков в unity3d! Пробовал на двух играх из ВК, но никак( Ссылка на комментарий Поделиться на другие сайты Поделиться
Executor Опубликовано 13 января, 2016 Автор Поделиться Опубликовано 13 января, 2016 делай цветовой aim-bot ...я пишу умного бота а не тупого как пробку, читай название топика Ссылка на комментарий Поделиться на другие сайты Поделиться
Senpai Опубликовано 13 мая, 2022 Поделиться Опубликовано 13 мая, 2022 Автор, ну как успехи?? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения