Показать сообщение отдельно

  #2  
Старый 05.12.2022, 22:07
teresen
Новичок
Регистрация: 05.05.2022
Сообщений: 29
С нами: 2119359

Репутация: 8
По умолчанию

Чтобы добавить активацию/деактивацию в код, вы можете использовать переменную для хранения состояния и проверять эту переменную перед запуском потока. Например, можно создать переменную active типа bool и использовать ее в качестве условия для запуска потока:

Код:





Код:
[[maybe_unused]] class loader {
public:
    bool active = true;

    loader() {
        test.on_before += [](lemon::hook_cpu &cpu) {
            auto old_mode = *reinterpret_cast(cpu.EAX + cpu.ESI + 0x180);
            auto mode     = cpu.BP;
            if (old_mode == 53 && mode != 53 && active) {
                std::thread([&] {
                    auto ped = *reinterpret_cast(0xB6F5F0);
                    if (!ped) return;

                    auto data = *reinterpret_cast(ped + 0x480);
                    std::this_thread::sleep_for(std::chrono::milliseconds(75));
                    *reinterpret_cast(data + 0x84) = true;
                    std::this_thread::sleep_for(std::chrono::milliseconds(20));
                    *reinterpret_cast(data + 0x84) = false;
                }).detach();
            }
        };
        test.install();
    }

private:
    lemon::hook<> test{ 0x0051565C };

} g_loader;


Чтобы активировать или деактивировать эту логику, вы можете просто изменить значение переменной active, установив его в true для активации или false для деактивации. Например, вы можете добавить команду в консоль, которая будет изменять значение переменной active:

Код:





Код:
void cmd_active(std::vector args) {
    if (args.size() != 1) {
        console::print("Usage: active ");
        return;
    }

    if (args[0] == "true") {
        g_loader.active = true;
        console::print("Active");
    } else if (args[0] == "false") {
        g_loader.active = false;
        console::print("Deactive");
    } else {
        console::print("Usage: active ");
    }
}

void init() {
    console::add_command("active", cmd_active);
}
 
Ответить с цитированием