Гайд Remove blood on hit

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
3 Фев 2020
Сообщения
36
Реакции
7
Хук убирает кровь при попадании, а чтобы убрать кровь с пола/стен форсите r_csgo_render_decals на false;

C++:
Expand Collapse Copy
void* __fastcall client_hooks::draw_blood_effect(const char* effect_name, std::uint64_t a2, std::uint64_t a3, std::uint64_t a4, std::uint64_t a5, bool a6, std::uint32_t a7, std::uint64_t a8, bool a9)
{
    static auto original = modules::client.hooks( )->detours( )[ FNV64("draw_blood_effect") ].get_original<decltype(&draw_blood_effect)>( );

    auto effect = std::string_view{ effect_name };

    if ( effect.find( d( "blood" ) ) != std::string::npos )
        return nullptr;

    return spoof::spoof_call<void*>(original, effect_name, a2, a3, a4, a5, a6, a7, a8, a9);
}

C++:
Expand Collapse Copy
assert_pattern(m_patterns.emplace(FNV64("draw_blood_effect"), make(d("E8 ? ? ? ? 84 DB 74 11"), 0x1)));
 
вау. зачем?
 
Хук убирает кровь при попадании, а чтобы убрать кровь с пола/стен форсите r_csgo_render_decals на false;

C++:
Expand Collapse Copy
void* __fastcall client_hooks::draw_blood_effect(const char* effect_name, std::uint64_t a2, std::uint64_t a3, std::uint64_t a4, std::uint64_t a5, bool a6, std::uint32_t a7, std::uint64_t a8, bool a9)
{
    static auto original = modules::client.hooks( )->detours( )[ FNV64("draw_blood_effect") ].get_original<decltype(&draw_blood_effect)>( );

    auto effect = std::string_view{ effect_name };

    if ( effect.find( d( "blood" ) ) != std::string::npos )
        return nullptr;

    return spoof::spoof_call<void*>(original, effect_name, a2, a3, a4, a5, a6, a7, a8, a9);
}

C++:
Expand Collapse Copy
assert_pattern(m_patterns.emplace(FNV64("draw_blood_effect"), make(d("E8 ? ? ? ? 84 DB 74 11"), 0x1)));
хуйня

можно еще проще

C++:
Expand Collapse Copy
// @xref: fx_blood_bullet_impact
// @ida: 48 89 5C 24 ? 48 89 6C 24 ? 57 48 83 EC ? 0F B6 51 @client.dll
int hooks::blood_bullet_impact( void* unk )
{
    // return sub_1807BF1E0((_DWORD)v8, (_DWORD)v7, (_DWORD)v6, 0, 0, -1, 0i64, v17, v18, v19, v20, v21);
    return -1;
}

либо

C++:
Expand Collapse Copy
// @ida: 48 89 5C 24 ? 48 89 74 24 ? 57 48 81 EC ? ? ? ? 48 8B FA 49 8B F1 @client.dll

void* draw_particle_effect( const char* name, __int64 a2, __int64* a3, __int64 a4, char a5, unsigned int a6, __int64 a7, bool a8, __int64 a9, __int64 a10, __int64 a11, __int64 a12 ) {
    if ( name == "fx_blood_bullet_impact" )
        return nullptr;
    
    return o_draw_particle_effect( name, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 )
}
 
хуйня

можно еще проще

C++:
Expand Collapse Copy
// @xref: fx_blood_bullet_impact
// @ida: 48 89 5C 24 ? 48 89 6C 24 ? 57 48 83 EC ? 0F B6 51 @client.dll
int hooks::blood_bullet_impact( void* unk )
{
    // return sub_1807BF1E0((_DWORD)v8, (_DWORD)v7, (_DWORD)v6, 0, 0, -1, 0i64, v17, v18, v19, v20, v21);
    return -1;
}

либо

C++:
Expand Collapse Copy
// @ida: 48 89 5C 24 ? 48 89 74 24 ? 57 48 81 EC ? ? ? ? 48 8B FA 49 8B F1 @client.dll

void* draw_particle_effect( const char* name, __int64 a2, __int64* a3, __int64 a4, char a5, unsigned int a6, __int64 a7, bool a8, __int64 a9, __int64 a10, __int64 a11, __int64 a12 ) {
    if ( name == "fx_blood_bullet_impact" )
        return nullptr;
   
    return o_draw_particle_effect( name, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12 )
}
Оно не работает, сейчас проверил
 
Оно не работает, сейчас проверил
ладно, я просто сам не проверял нашел в иде две функции которые как то относятся к крови и быстро сюда кодик вписал
а так рекомендации по твоему не используй string_view у тебя есть хэш(FNV64) это более практично чем ссаные std::string/std::string_view в таких моментах
 
ладно, я просто сам не проверял нашел в иде две функции которые как то относятся к крови и быстро сюда кодик вписал
а так рекомендации по твоему не используй string_view у тебя есть хэш(FNV64) это более практично чем ссаные std::string/std::string_view в таких моментах
Там много эффектов крови, поэтому отделаться просто хешэм не вариант, но во всех есть включение "blood", поэтому я и использую поиск подстроки, вот посмотри функцию, на 381 строке вызов моей draw_blood_effect
C++:
Expand Collapse Copy
// relative E8 ? ? ? ? 48 83 C4 38 C3 CC CC CC CC 48 8B C4 48 89 58 10 + 0x1
 
Там много эффектов крови, поэтому отделаться просто хешэм не вариант, но во всех есть включение "blood", поэтому я и использую поиск подстроки, вот посмотри функцию, на 381 строке вызов моей draw_blood_effect
C++:
Expand Collapse Copy
// relative E8 ? ? ? ? 48 83 C4 38 C3 CC CC CC CC 48 8B C4 48 89 58 10 + 0x1
ладно
 
Назад
Сверху Снизу