HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 02.12.2022, 09:01
loingage
Постоянный
Регистрация: 01.10.2020
Сообщений: 320
С нами: 2956618

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

Подскажите, как добавить активацию/деактивацию

Сурс: https://gitlab.com/-/snippets/2418071
 
Ответить с цитированием

  #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);
}
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.