Начинающий
-
Автор темы
- #1
В общем решил я тут под пиво сделать приколы
Но как выяснилось кс2 перелопатили на 180 градусов
Если зайти в CCSGOInput::CreateMove по 5 индексу, вместо хранения цмд в инпуте можно увидеть вот это чудище:
Вальве решили хранить их отдельно и если при получении их нет, создавать через memalloc
Так вот, первым делом фиксим класс инпута, раз все по другому:
После чего уже можно делать магию в креатмуве
Для этого нужно получить массив команд и просто обратиться к ним через магический оффсет (я хз что это за рофлы но ВАЛВ)
И у вас готовы кмдшки
Все паттерны можно найти самому за 3 клика, это все в одной функции лежит....
Но как выяснилось кс2 перелопатили на 180 градусов
Если зайти в CCSGOInput::CreateMove по 5 индексу, вместо хранения цмд в инпуте можно увидеть вот это чудище:
Вальве решили хранить их отдельно и если при получении их нет, создавать через memalloc
Так вот, первым делом фиксим класс инпута, раз все по другому:
Код:
class c_csgo_input
{
public:
char pad_0000[592]; //0x0000
bool N0000013B; //0x0250
bool in_third_person; //0x0251
char pad_0252[6]; //0x0252
vector3d thirdperson_angles;
};
Для этого нужно получить массив команд и просто обратиться к ним через магический оффсет (я хз что это за рофлы но ВАЛВ)
Код:
auto local_player_controller = sdk::entity_system->get_local_player_controller();
if (local_player_controller.raw() != 0) {
int index{};
sdk::entity_system->get_entity_index(local_player_controller.as<void*>(), &index);
if (index != -1)
index -= 1;
const auto user_commands = **patterns::get_commands.as<c_user_cmd***>();
const auto sequence_number = *(int*)((uintptr_t)user_commands + 0x5C00);
c_user_cmd* current_cmd = &user_commands[sequence_number % 150];
if (current_cmd)
{
// magic
}
}
Все паттерны можно найти самому за 3 клика, это все в одной функции лежит....