• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

Вопрос Крашит fov changer

  • Автор темы Автор темы jerek
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
25 Июл 2022
Сообщения
44
Реакции
2
C++:
Expand Collapse Copy
void Misc::fov() {

    auto localPawn = *(uintptr_t*)(Visuals::client + Offsets::dwLocalPlayerPawn);
    if (!localPawn) {
        std::cerr << "LocalPawn is null." << std::endl;
        return;
    }
    int fov = 15;
    auto cameraservices = *(uintptr_t*)(Visuals::client + Offsets::m_pCameraServices);
    auto currentfov = *(uintptr_t*)(cameraservices + Offsets::m_iFOV);
    bool isscoped = *(BOOL*)(localPawn + Offsets::m_bIsScoped);

    if (!isscoped && currentfov != fov)
    {
        int* fovPTR = (int*)(cameraservices + Offsets::m_iFOV, fov);
    }
}
крашит, подскажите, что не так сделано
 
Уверен что fov это int? В преоброзовании int в float может закончится огромной цифрой из за чего движок может крашнутся
Чаще всего такая фигня имеет тип данных float.

Попробуй так:

a:
Expand Collapse Copy
void Misc::fov() {
    auto localPawn = [I](uintptr_t[/I])(Visuals::client + Offsets::dwLocalPlayerPawn);
    if (!localPawn) {
        std::cerr << "LocalPawn is null." << std::endl;
        return;
    }

    int fov = 15;
    auto cameraservices = [I](uintptr_t[/I])(localPawn + Offsets::m_pCameraServices);
    if (!cameraservices) {
        std::cerr << "CameraServices is null." << std::endl;
        return;
    }

    int currentfov = [I](int[/I])(cameraservices + Offsets::m_iFOV);
    bool isscoped = [I](bool[/I])(localPawn + Offsets::m_bIsScoped);

    if (!isscoped && currentfov != fov) {
        [I](int[/I])(cameraservices + Offsets::m_iFOV) = fov;
    }
}



Ты думаешь, что ты тут создаешь указатель и как-то записываешь fov, но на деле:
(cameraservices + Offsets::m_iFOV, fov) — это оператор запятая, который просто возвращает второй операнд, т.е. fov.
по сути ты делаешь int* fovPTR = (int*)fov;, т.е. указываешь на абсолютно левую область памяти.
и если потом где-то используешь *fovPTR, то прилетает краш.
 
Назад
Сверху Снизу