![]() |
Привет, давно не виделись
Появилось настроение и немного времени. Собрал вместе старые наработки по созданию external трейнеров, сделал из этого простой c++ класс, от которого можно наследоваться и реализовывать нужный вам функционал, накатил тесты и запилил несколько примеров, в т.ч. для gta sa. Функционал:
Исходники:https://github.com/ep1h/external-process В /examples/gta_sa_trainer пример использования разработанного фреймворка для написания .exe читов на gta sa (в примере оффсеты для 1.0 US). Функционал, относящийся именно к gta, не очень богатый. Сделал пару простых функций, типа перебора педов в стриме, конвертации игровых координат в экранные и т.д. Описывать каждую не буду, просто приведу список, названия говорят сами за себя. C++: Код:
uint32_tИз чего-то действительно полезного можно выделить аналог SprintHook'а от @DarkP1xel в 3 строки (Таир, привет). C++: Код:
voidВ конце добавлю, что экстернал читы нуждаются в хорошей оптимизации (как минимум, кэширование неизменяемых в процессе игры прочитанных адресов для многоуровневых указателей, чтобы не дрочить игру ненужными rpm/wpm). Естественно, в /examples/gta_sa_trainer такой оптимизации нет, это просто демонстрация возможностей разрабатываемого класса ExternalProcess. Чтобы разработать что-то очень годное и быстрое, вам все ровно придется долбиться в IDA и выдумывать различные шорткаты. Типа того, что я сделал в get_bone_position_quick. Если интересен прирост в скорости, вот результаты бенчмарков. Цитата:
Буду рад фидбеку по багам, недостающему на ваш взгляд функционалу и по коду в целом. Если найдется время - реализую интересную идею с отрисовкой графики без создания прозрачных оверлеев поврех игры. PS Разрабатывал и тестил на линуксе, под виндой зашел только прогнать юнит тесты и 1 раз запустил сам трейнер, всё гуд. PPS Зачем выебываться, если можно сделать интернал? Просто так веселее Все что можно было сделать в internal формате для гта уже сделано. |
хороший стиль кода
|
C elipsis in 2022 bruh
EDIT: посмотрел еще, в целом весь код кринж, написано на Си с 2 шаблонами |
Так тебе 2 шаблона не нравится? Или си? Или три точки? Ты бы вместо них стл контейнеры впихнул? Есть идеи, как это можно сделать еще проще для конечного пользователя? Буду рад услышать. Я эмбедщик и далек от плюсовой метамастурбации. По моему, ничего проще чем вызов функции и передача в нее аргументов, в данном случае не придумаешь. Да и в сорсах DK22 плагина, собейта и мта по сути кроме классов из плюсов ничего нет.
Правильно заметил, это изначально было на си написано и распидорашено на компоненты. Я бы с радостью си и оставил, но кому захочется разбираться в сишных компонентах и взаимосвязях между ними. Можно же просто наследоваться от класса и вызывать нужные методы. Всегда приходится искать компромиссы. В данном случае в пользу удобности исопльзования и читаемости. |
Цитата:
Код проще станет как минимум, и много ошибок сразу сами собой пропадут. У меня основной "доеб" к тому, что слишком сложно и небезопасно для плюсов(то же троеточие которое легко сломать передав туда нестандартный тип). Мое мнение - или Си стайл оставлять до последнего, либо вообще все в C++ стиль переписать. Это все ИМХО, а не претензии нахуя и зачем. В любом случае приложено много затрат для обдумывания как лучше, поэтому норм. UPD: Если будет время, может залью PR чтобы сделать более плюсово, при этом не потеряв перфоманс |
| Время: 16:35 |