Вопрос FireModeObject Stop/Start Fire (help fix auto trigger)

Начинающий
Статус
Оффлайн
Регистрация
13 Янв 2019
Сообщения
22
Реакции[?]
1
Поинты[?]
1K
Привет!
Нужна помощь шариющих ребят.

Для выстрела использую WeaponInput->m_attackHold (WeaponInput+ 0x19), все работает порядочно, но есть всеми известный баг данной функции. Зажимные оружия не перестаю стрелять.

Узнал, что это фиксится функцией FireModeObject.
Но к сожалению зашел в тупик. Помогите разобраться, где я накосячил.

C++:
uintptr_t m_firemodes = memory->read_val64<uintptr_t>(LocalPlayerInfo->WeaponImput + 0xE8);
uintptr_t FireModeObject = memory->read_val64<uintptr_t>(LocalPlayerInfo->WeaponImput + 8 * 0x124);

bool IsTrue = false;
if (memory->read_val64<__int32>(FireModeObject + 0x20))
    memory->WriteMem((PVOID)(FireModeObject + 0x20), (PVOID)&IsTrue, sizeof(bool));
1719241010878.png
 
Продавец
Статус
Оффлайн
Регистрация
1 Июл 2023
Сообщения
57
Реакции[?]
1
Поинты[?]
2K
Привет!
Нужна помощь шариющих ребят.

Для выстрела использую WeaponInput->m_attackHold (WeaponInput+ 0x19), все работает порядочно, но есть всеми известный баг данной функции. Зажимные оружия не перестаю стрелять.

Узнал, что это фиксится функцией FireModeObject.
Но к сожалению зашел в тупик. Помогите разобраться, где я накосячил.

C++:
uintptr_t m_firemodes = memory->read_val64<uintptr_t>(LocalPlayerInfo->WeaponImput + 0xE8);
uintptr_t FireModeObject = memory->read_val64<uintptr_t>(LocalPlayerInfo->WeaponImput + 8 * 0x124);

bool IsTrue = false;
if (memory->read_val64<__int32>(FireModeObject + 0x20))
    memory->WriteMem((PVOID)(FireModeObject + 0x20), (PVOID)&IsTrue, sizeof(bool));
Посмотреть вложение 279999
C++:
        sleep((10));
        input->m_attackHold((1));
        sleep((10));
        input->m_attackHold((0));
        fire_mode->set_firing((0));
Перед выстрелом также проверяй перезарядку
C++:
    bool is_reloading(c_weapon* weapon) {

        if (weapon->get_weapon_params()->get_weapon_state() == e_weapon_action::eWS_Reload || weapon->get_weapon_params()->get_weapon_state() == e_weapon_action::eWS_ReloadBarrel || weapon->get_weapon_params()->get_weapon_state() == e_weapon_action::eWS_ReloadUnderBarrel) {
            return true;
        }
    }

    int get_weapon_state()
    {
        return memory_ex::read_memory< int >(reinterpret_cast<uintptr_t>(this) + 0x120);
    }

    c_fire_mode_object* get_fire_mode_object() {
        c_fire_mode_object* FireModeObject = nullptr;


        auto m_firemodes = memory::read_memory< uint64_t >(reinterpret_cast<uintptr_t>(this) + 0xE8);
        if (!m_firemodes)
            return nullptr;

        FireModeObject = memory::read_memory< c_fire_mode_object* >(m_firemodes + 8 * this->m_curr_fire_mode());
        if(!FireModeObject)
            return nullptr;

        return FireModeObject;
    }

m_curr_fire_mode = 0x124;

enum e_weapon_action : int
{
    eWS_Disabled,
    eWS_Idle,
    eWS_IdleZoomed,
    eWS_Fire,
    eWS_IdleUnderBarrel,
    eWS_HoldFireUnderBarrel,
    eWS_FireUnderBarrel,
    eWS_ReloadUnderBarrel,
    eWS_HolsterInDisabled,
    eWS_HolsterInUnderBarrel,
    eWS_HolsteredUnderBarrel,
    eWS_MeleeUnderBarrel,
    eWS_ThrowingFire,
    eWS_ThrowingFireActivate,
    eWS_ZoomedFire,
    eWS_ZoomInFire,
    eWS_ZoomOutFire,
    eWS_Reload,
    eWS_ReloadBarrel,
    eWS_BoltAction,
    eWS_ZoomedBoltAction,
    eWS_ZoomIn,
    eWS_ZoomOut,
    eWS_ZoomOutReloadAuto,
    eWS_ZoomOutReloadManual,
    eWS_ZoomOutQSA,
    eWS_ZoomOutMelee,
    eWS_ZoomOutBoltAction,
    eWS_ZoomOutCustomize,
    eWS_Throwing,
    eWS_Toss,
    eWS_Melee,
    eWS_Select,
    eWS_Deselect,
    eWS_Holding,
    eWS_Activate,
    eWS_Customize,
    eWS_CustomizeIn,
    eWS_CustomizeOut,
    eWS_HolsterIn,
    eWS_Holstered,
    eWS_StartRestoreSelf,
    eWS_StartRestoreTeamMate,
    eWS_CancelRestore,
    eWS_RestoreSelf,
    eWS_RestoreTeamMate,
    eWS_TryingRestoreSelf,
    eWS_TryingRestoreTeamMate,
    eWS_DropAmmoPack,
    eWS_Resurrect,
    eWS_ResetClipAmmo,
    eWS_Last,
    eWS_Num = eWS_Last
};

 void set_firing(int value) {
       memory_ex::write_memory< int >(reinterpret_cast<uintptr_t>(this) + 0x20, value);
}

if(is_reloading()){
fire_mode->set_firing(0);
}

if(look_at_entity_id(local_actor, enemy_actor)){
        sleep((10));
        input->m_attackHold((1));
        sleep((10));
        input->m_attackHold((0));
        fire_mode->set_firing((0));

}
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
22 Дек 2023
Сообщения
267
Реакции[?]
16
Поинты[?]
17K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++:
        sleep((10));
        input->m_attackHold((1));
        sleep((10));
        input->m_attackHold((0));
        fire_mode->set_firing((0));
Перед выстрелом также проверяй перезарядку
C++:
    bool is_reloading(c_weapon* weapon) {

        if (weapon->get_weapon_params()->get_weapon_state() == e_weapon_action::eWS_Reload || weapon->get_weapon_params()->get_weapon_state() == e_weapon_action::eWS_ReloadBarrel || weapon->get_weapon_params()->get_weapon_state() == e_weapon_action::eWS_ReloadUnderBarrel) {
            return true;
        }
    }

    int get_weapon_state()
    {
        return memory_ex::read_memory< int >(reinterpret_cast<uintptr_t>(this) + 0x120);
    }

    c_fire_mode_object* get_fire_mode_object() {
        c_fire_mode_object* FireModeObject = nullptr;


        auto m_firemodes = memory::read_memory< uint64_t >(reinterpret_cast<uintptr_t>(this) + 0xE8);
        if (!m_firemodes)
            return nullptr;

        FireModeObject = memory::read_memory< c_fire_mode_object* >(m_firemodes + 8 * this->m_curr_fire_mode());
        if(!FireModeObject)
            return nullptr;

        return FireModeObject;
    }

m_curr_fire_mode = 0x124;

enum e_weapon_action : int
{
    eWS_Disabled,
    eWS_Idle,
    eWS_IdleZoomed,
    eWS_Fire,
    eWS_IdleUnderBarrel,
    eWS_HoldFireUnderBarrel,
    eWS_FireUnderBarrel,
    eWS_ReloadUnderBarrel,
    eWS_HolsterInDisabled,
    eWS_HolsterInUnderBarrel,
    eWS_HolsteredUnderBarrel,
    eWS_MeleeUnderBarrel,
    eWS_ThrowingFire,
    eWS_ThrowingFireActivate,
    eWS_ZoomedFire,
    eWS_ZoomInFire,
    eWS_ZoomOutFire,
    eWS_Reload,
    eWS_ReloadBarrel,
    eWS_BoltAction,
    eWS_ZoomedBoltAction,
    eWS_ZoomIn,
    eWS_ZoomOut,
    eWS_ZoomOutReloadAuto,
    eWS_ZoomOutReloadManual,
    eWS_ZoomOutQSA,
    eWS_ZoomOutMelee,
    eWS_ZoomOutBoltAction,
    eWS_ZoomOutCustomize,
    eWS_Throwing,
    eWS_Toss,
    eWS_Melee,
    eWS_Select,
    eWS_Deselect,
    eWS_Holding,
    eWS_Activate,
    eWS_Customize,
    eWS_CustomizeIn,
    eWS_CustomizeOut,
    eWS_HolsterIn,
    eWS_Holstered,
    eWS_StartRestoreSelf,
    eWS_StartRestoreTeamMate,
    eWS_CancelRestore,
    eWS_RestoreSelf,
    eWS_RestoreTeamMate,
    eWS_TryingRestoreSelf,
    eWS_TryingRestoreTeamMate,
    eWS_DropAmmoPack,
    eWS_Resurrect,
    eWS_ResetClipAmmo,
    eWS_Last,
    eWS_Num = eWS_Last
};

void set_firing(int value) {
       memory_ex::write_memory< int >(reinterpret_cast<uintptr_t>(this) + 0x20, value);
}

if(is_reloading()){
fire_mode->set_firing(0);
}

if(look_at_entity_id(local_actor, enemy_actor)){
        sleep((10));
        input->m_attackHold((1));
        sleep((10));
        input->m_attackHold((0));
        fire_mode->set_firing((0));

}
как же это дерьмище ужасно выглядит прям отвратительно!
LocalPlayerInfo->WeaponImput + 8 * 0x124
тупое уе***е на скрине прямым текстом видно что 0x124 ты должен прочитать перед умножением
 
Последнее редактирование:
Пользователь
Статус
Оффлайн
Регистрация
5 Июл 2022
Сообщения
996
Реакции[?]
86
Поинты[?]
23K
как же это дерьмище ужасно выглядит прям отвратительно!

тупое уе***е на скрине прямым текстом видно что 0x124 ты должен прочитать перед умножением
Circle с усами более уебищно выглядит
 
Сверху Снизу