CS:S Force Crosshair {SOURCE}

Новичок
Статус
Оффлайн
Регистрация
28 Апр 2019
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Пожалуйста, авторизуйтесь для просмотра ссылки.


Все что вам нужно сделать, это исправить тип оружия перед вызовом функции и восстановить его после завершения. Также вы не можете перехватить ShouldDrawCrosshair, который является виртуальным с индексом 338 и всегда возвращает 1. Сама функция DrawCrosshair также является виртуальной и имеет индекс 339.

GetWpnData это оболочка для GetWeaponInfoFromHandle
Также вы можете включить отдачу используя ScreenHeight и ScreenWidth.

C++:
void __fastcall Hooked_DrawCrosshair(CWeapon* pThis, void*)
{
    typedef void(__thiscall * fn_t)(CWeapon*);
 
    CCSWeaponInfo& pData = pThis->GetCSWpnData();
 
    CSWeaponType restore = *(CSWeaponType*)((size_t)&pData + 1788);
 
    if (g_pGameChangesCon->m_pForceCrosshair->Value())
    {
        *(CSWeaponType*)((size_t)&pData + 1788) = CSWeaponType(CSWeaponType::WEAPONTYPE_UNKNOWN + 1);
    }
 
    g_pDrawCrosshairHook->Restore();
    ((fn_t)g_pDrawCrosshairHook->GetTarget())(pThis);
    g_pDrawCrosshairHook->Hook();
    *(CSWeaponType*)((size_t)&pData + 1788) = restore;
}
C++:
CCSWeaponInfo& GetCSWpnData()
{
    return *(CCSWeaponInfo*)&GetWpnData();
}
C++:
ileWeaponInfo_t& CBaseCombatWeapon::GetWpnData(void)
{
    static size_t sig = g_pSignature->GetClientSignature("0F B7 81 ? ? ? ? 50 E8 ? ? ? ? 83 C4 04 C3");
    typedef FileWeaponInfo_t& (__thiscall * fn_t)(CBaseCombatWeapon*);
    return ((fn_t)sig)(this);
}
 
Забаненный
Статус
Оффлайн
Регистрация
12 Ноя 2018
Сообщения
155
Реакции[?]
8
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
где то я это видел?
 
Сверху Снизу