Удаление искры от пули

Krisp

Новичок
Автор темы
23
1
Как можно удалить искру от пули, которая попала в стенку? Именно искру, а не трассер
Нужен способ для asi плагина
 
Решение
liquid fpsups:
#include "main.h"
inline void ahook() {
    _asm {
        pushfd
        pushad
        lea eax, [esi + 0x50]
        cmp eax, [0x0B7C4F0]
        je m1
        popad
        popfd
        fstp dword ptr[esi + 0x50]
        jmp m2
        m1 :
        mov edx, [eax]
            fstp dword ptr[esi + 0x50]
            mov[eax], edx
            popad
            popfd
            m2 :
        fld dword ptr[esp + 0x18]
    }
    _asm {
        mov edx, 0x55FCCF
        jmp edx
        nop
    }
};
/*
:NONAME_13003
if and
0AF0: 0@ = get_int_from_ini_file "cleo\Mix Sets.ini" section "Graphics" key "DisaBirds"
0@ == 1
else_jump @NONAME_13080
0A8C: write_memory 5497200 size 5 value 144 virtual_protect 1

:NONAME_13080
if and
0AF0: 0@ =...

Carfentanil

Участник
36
17
liquid fpsups:
#include "main.h"
inline void ahook() {
    _asm {
        pushfd
        pushad
        lea eax, [esi + 0x50]
        cmp eax, [0x0B7C4F0]
        je m1
        popad
        popfd
        fstp dword ptr[esi + 0x50]
        jmp m2
        m1 :
        mov edx, [eax]
            fstp dword ptr[esi + 0x50]
            mov[eax], edx
            popad
            popfd
            m2 :
        fld dword ptr[esp + 0x18]
    }
    _asm {
        mov edx, 0x55FCCF
        jmp edx
        nop
    }
};
/*
:NONAME_13003
if and
0AF0: 0@ = get_int_from_ini_file "cleo\Mix Sets.ini" section "Graphics" key "DisaBirds"
0@ == 1
else_jump @NONAME_13080
0A8C: write_memory 5497200 size 5 value 144 virtual_protect 1

:NONAME_13080
if and
0AF0: 0@ = get_int_from_ini_file "cleo\Mix Sets.ini" section "Graphics" key "DisaLowCloud"
0@ == 1
else_jump @NONAME_13160
0A8C: write_memory 5497121 size 5 value 144 virtual_protect 1

*/
void CLQFramerate::initPatchSet() {
    LQ_init_sock();
    /*
    Base address: 0x07060000, SA:MP base address: 0x03BD0000  9D9D2 FPS1
    Exception at address: 0x03C6D9D2 Offset: 0xFCC0D9D2
    */
    DWORD old;
    VirtualProtect((LPVOID)0x53E227, 1, PAGE_READWRITE, &old);
    if ((*(byte*)0x53E227) != 0x0C3) {
        *(byte*)0x53E227 = 0x0C3;//53E94C
    }
    DWORD fpsupaddr = g_dwSAMP_Addr + 0x9D9D0;
    VirtualProtect((LPVOID)fpsupaddr, sizeof(int), PAGE_EXECUTE_READWRITE, &old);
    *(int *)fpsupaddr = 0x5051FF15;
    VirtualProtect((LPVOID)fpsupaddr, sizeof(int), old, NULL);
    VirtualProtect((LPVOID)0x53E227, 1, old, NULL);
    effects.push_back(patch_set() = {
        "se1",
        0,
        0,
        {
            { 4, (void*)(0x726CE2), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });
    effects.push_back(patch_set() = {
        "se2",
        0,
        0,
        {
            { 4, (void*)(0x49F4A5), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });
    //0x49F4A5
    effects.push_back(patch_set() = {
        "se3",
        0,
        0,
        {
            { 4, (void*)(0x49F57E), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });
    //0x49F57E
    effects.push_back(patch_set() = {
        "se4",
        0,
        0,
        {
            { 4, (void*)(0x5458D6), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });
    //0x5458D6
    effects.push_back(patch_set() = {
        "se5",
        0,
        0,
        {
            { 4, (void*)(0x49EE64), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });



    /*
    fps.push_back(patch_set() = {
    "fps1",
    0,
    0,
    {
    { 4, (void*)(g_dwSAMP_Addr + 0x9D9D0), NULL,
    (uint8_t*)"\x50\x51\xFF\x15", NULL }
    }
    });
    */
    /*
    VirtualProtect((LPVOID)0xBAB318, sizeof(int), PAGE_READWRITE, &old);
    *(byte*)0xBAB318 = 0;
    VirtualProtect((LPVOID)0xBAB318, sizeof(int), old, NULL);
    */
    fps.push_back(patch_set() = {
        "fps2",
        0,
        0,
        {
            { 1, (void*)(0xBAB318), NULL,
            (uint8_t*)"\x00", NULL }
        }
    });
    /*
    Задержка между выводом очередного кадра (FPS delay).
    VirtualProtect((LPVOID)0x53E94C, sizeof(int), PAGE_READWRITE, &old);
    *(byte*)0x53E94C = 0;
    VirtualProtect((LPVOID)0x53E94C, sizeof(int), old, NULL);
    */
    fps.push_back(patch_set() = {
        "fps3",
        0,
        0,
        {
            { 1, (void*)(0x53E94C), NULL,
            (uint8_t*)"\x00", NULL }
        }
    });
    fuck_surf = { //ghost thx
        "fuck_surf",
        0,
        0,
        {
            { 12, (void*)(g_dwSAMP_Addr + 0x38CF), NULL,
            (uint8_t*)"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90", NULL }
        }
    };
    memory512 = {
        "memory512",
        0,
        0,
        {
            { 4, (void*)(0x8A5A80), NULL,
            (uint8_t*)"\x20\x00\x00\x00", NULL }
        }
    };
    
    /*
    BulletSparkForc  = 0         # Количество/скорость искр, возникающих при стрельбе из оружия. Стандартное значение - 3.0.
    BulletSparkSprd  = 0         # Разброс искр, возникающих при стрельбе из оружия. Стандартное значение - 0.4.
    BulletDustSize   = 0        # Размер партикла пыли, вызванного стрельбой по земле или песку. Стандартное значение - 0.4. Уменьшение к выигрышу FPS не приводит.
    */
    //70BEB6[basic] 70BEA7[this equal a basic in square(basic*basic)] Vehicle shadows let it be a one 1.0f
    //70BE79[basic] 70BE88[basic^2] Planes shadows distance
    //8D5240[basic] C4B6B0[basic^2] Peds shadows distance
    //49F47B bullet spark
    //49F451 bullet spark
    //49F57E 49F4A5 bullet dust
    shadows.push_back(patch_set() = {
        "shadow_vehicle",
        0,
        0,
        {
            { 1, (void*)(0x70BEB6), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_vehicle_square",
        0,
        0,
        {
            { 1, (void*)(0x70BEA7), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_planes",
        0,
        0,
        {
            { 1, (void*)(0x70BE79), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_planes_square",
        0,
        0,
        {
            { 1, (void*)(0x70BE88), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_peds",
        0,
        0,
        {
            { 1, (void*)(0x8D5240), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_peds_square",
        0,
        0,
        {
            { 1, (void*)(0xC4B6B0), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    bullet_effects.push_back(patch_set() = {
        "bullet_effects1",
        0,
        0,
        {
            { 1, (void*)(0x49F47B), NULL,
            (uint8_t*)(new float(0.0f)), NULL }
        }
    });
    bullet_effects.push_back(patch_set() = {
        "bullet_effects2",
        0,
        0,
        {
            { 1, (void*)(0x49F451), NULL,
            (uint8_t*)(new float(0.0f)), NULL }
        }
    });
    bullet_effects.push_back(patch_set() = {
        "bullet_dust1",
        0,
        0,
        {
            { 1, (void*)(0x49F57E), NULL,
            (uint8_t*)(new float(0.0f)), NULL }
        }
    });
    bullet_effects.push_back(patch_set() = {
        "bullet_dust2",
        0,
        0,
        {
            { 1, (void*)(0x49F4A5), NULL,
            (uint8_t*)(new float(0.0f)), NULL }
        }
    });
}
bool CLQFramerate::getStatePostEffects() {
        return post_effects;
    }
void CLQFramerate::toggleStatePostEffects() {
        CPostEffects__m_bDisableAllPostEffect = !post_effects;
        post_effects ^= true;
    }
void CLQFramerate::fogPatch() {
        Hook hk;
        uint32_t _0 = (uint32_t)(&ahook) + 6;
        hk.JMP((DWORD*)(0x55FCC8), (DWORD*)_0, 4);
        DWORD lold;
        VirtualProtect((LPVOID)0x0055FCCD, 2, PAGE_EXECUTE_READWRITE, &lold);
        *(short*)0x0055FCCD = 0x9090;
        VirtualProtect((LPVOID)0x0055FCCD, 2, lold, NULL);
        fog_patched = true;
        fog = true;
}
void CLQFramerate::fpsPatch() {
        /*
        DWORD old;
            DWORD fpsupaddr = g_dwSAMP_Addr + 0x9D9D0;
            VirtualProtect((LPVOID)fpsupaddr, sizeof(int), PAGE_EXECUTE_READWRITE, &old);
            *(int *)fpsupaddr = 0x5051FF15;
            VirtualProtect((LPVOID)fpsupaddr, sizeof(int), old, NULL);
        */
        if(fps.size() > 0)
        for(int i = 0; i < fps.size(); i++)
            patcher_install(&fps[i]);
        fpsmix = true;
        //fog = false;
    }
void CLQFramerate::fpsDispatch() {
        for (int i = 0; i < fps.size(); i++)
            patcher_remove(&fps[i]);
        fpsmix = false;
}
void CLQFramerate::memory512Patch() {
        //*(int*)0x8A5A80 = 0x20000000;
        /*
            VirtualProtect((LPVOID)0x8A5A80, sizeof(int), PAGE_READWRITE, &old);
            *(int*)0x8A5A80 = 0x20000000;
            VirtualProtect((LPVOID)0x8A5A80, sizeof(int), old, NULL);
        */
        
        patcher_install(&memory512);
        memory_512 = true;
    }
void CLQFramerate::memory512Dispatch() {
        patcher_remove(&memory512);
        memory_512 = false;
    }
void CLQFramerate::someEffectsPatch() {
        if(effects.size() > 0)
        for (int i = 0; i < effects.size(); i++)
            patcher_install(&effects[i]);
        someeffects = true;
}
void CLQFramerate::someEffectsDispatch() {
        for (int i = 0; i < effects.size(); i++)
            patcher_remove(&effects[i]);
        someeffects = false;
}
void CLQFramerate::surfPatch() {
        patcher_install(&fuck_surf);
    }
void CLQFramerate::surfDispatch() {
        patcher_remove(&fuck_surf);
    }
void CLQFramerate::shadowsPatch() {
    for (int i = 0; i < shadows.size(); i++)
        patcher_install(&shadows[i]);
    shadows_off = true;
}
void CLQFramerate::shadowsDispatch() {
    for (int i = 0; i < shadows.size(); i++)
        patcher_remove(&shadows[i]);
    shadows_off = false;
}
void CLQFramerate::bulletEffPatch()
{
    for (int i = 0; i < bullet_effects.size(); i++)
        patcher_install(&bullet_effects[i]);
    bullet_eff = true;
}
void CLQFramerate::bulletEffDispatch()
{
    for (int i = 0; i < bullet_effects.size(); i++)
        patcher_remove(&bullet_effects[i]);
    bullet_eff = false;
}

void CLQFramerate::doProc() {

        if (fog) {
            DWORD old;
            VirtualProtect((LPVOID)0xB7C4F0, 4, PAGE_EXECUTE_READWRITE, &old);
            float currdist = *(float *)0xB7C4F0;
            VirtualProtect((LPVOID)0xB7C4F0, 4, old, NULL);
            if (currdist != LiquidMod->Misc.fog_dist) {
                DWORD nold;
                VirtualProtect((LPVOID)0xB7C4F0, 4, PAGE_EXECUTE_READWRITE, &nold);
                *(float*)0xB7C4F0 = LiquidMod->Misc.fog_dist;
                VirtualProtect((LPVOID)0xB7C4F0, 4, PAGE_READONLY, NULL);
            }
        }

    }
на из ликвида почекай
 

Krisp

Новичок
Автор темы
23
1
liquid fpsups:
#include "main.h"
inline void ahook() {
    _asm {
        pushfd
        pushad
        lea eax, [esi + 0x50]
        cmp eax, [0x0B7C4F0]
        je m1
        popad
        popfd
        fstp dword ptr[esi + 0x50]
        jmp m2
        m1 :
        mov edx, [eax]
            fstp dword ptr[esi + 0x50]
            mov[eax], edx
            popad
            popfd
            m2 :
        fld dword ptr[esp + 0x18]
    }
    _asm {
        mov edx, 0x55FCCF
        jmp edx
        nop
    }
};
/*
:NONAME_13003
if and
0AF0: 0@ = get_int_from_ini_file "cleo\Mix Sets.ini" section "Graphics" key "DisaBirds"
0@ == 1
else_jump @NONAME_13080
0A8C: write_memory 5497200 size 5 value 144 virtual_protect 1

:NONAME_13080
if and
0AF0: 0@ = get_int_from_ini_file "cleo\Mix Sets.ini" section "Graphics" key "DisaLowCloud"
0@ == 1
else_jump @NONAME_13160
0A8C: write_memory 5497121 size 5 value 144 virtual_protect 1

*/
void CLQFramerate::initPatchSet() {
    LQ_init_sock();
    /*
    Base address: 0x07060000, SA:MP base address: 0x03BD0000  9D9D2 FPS1
    Exception at address: 0x03C6D9D2 Offset: 0xFCC0D9D2
    */
    DWORD old;
    VirtualProtect((LPVOID)0x53E227, 1, PAGE_READWRITE, &old);
    if ((*(byte*)0x53E227) != 0x0C3) {
        *(byte*)0x53E227 = 0x0C3;//53E94C
    }
    DWORD fpsupaddr = g_dwSAMP_Addr + 0x9D9D0;
    VirtualProtect((LPVOID)fpsupaddr, sizeof(int), PAGE_EXECUTE_READWRITE, &old);
    *(int *)fpsupaddr = 0x5051FF15;
    VirtualProtect((LPVOID)fpsupaddr, sizeof(int), old, NULL);
    VirtualProtect((LPVOID)0x53E227, 1, old, NULL);
    effects.push_back(patch_set() = {
        "se1",
        0,
        0,
        {
            { 4, (void*)(0x726CE2), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });
    effects.push_back(patch_set() = {
        "se2",
        0,
        0,
        {
            { 4, (void*)(0x49F4A5), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });
    //0x49F4A5
    effects.push_back(patch_set() = {
        "se3",
        0,
        0,
        {
            { 4, (void*)(0x49F57E), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });
    //0x49F57E
    effects.push_back(patch_set() = {
        "se4",
        0,
        0,
        {
            { 4, (void*)(0x5458D6), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });
    //0x5458D6
    effects.push_back(patch_set() = {
        "se5",
        0,
        0,
        {
            { 4, (void*)(0x49EE64), NULL,
            (uint8_t*)"\x00\x00\x00\x00", NULL }
        }
    });



    /*
    fps.push_back(patch_set() = {
    "fps1",
    0,
    0,
    {
    { 4, (void*)(g_dwSAMP_Addr + 0x9D9D0), NULL,
    (uint8_t*)"\x50\x51\xFF\x15", NULL }
    }
    });
    */
    /*
    VirtualProtect((LPVOID)0xBAB318, sizeof(int), PAGE_READWRITE, &old);
    *(byte*)0xBAB318 = 0;
    VirtualProtect((LPVOID)0xBAB318, sizeof(int), old, NULL);
    */
    fps.push_back(patch_set() = {
        "fps2",
        0,
        0,
        {
            { 1, (void*)(0xBAB318), NULL,
            (uint8_t*)"\x00", NULL }
        }
    });
    /*
    Задержка между выводом очередного кадра (FPS delay).
    VirtualProtect((LPVOID)0x53E94C, sizeof(int), PAGE_READWRITE, &old);
    *(byte*)0x53E94C = 0;
    VirtualProtect((LPVOID)0x53E94C, sizeof(int), old, NULL);
    */
    fps.push_back(patch_set() = {
        "fps3",
        0,
        0,
        {
            { 1, (void*)(0x53E94C), NULL,
            (uint8_t*)"\x00", NULL }
        }
    });
    fuck_surf = { //ghost thx
        "fuck_surf",
        0,
        0,
        {
            { 12, (void*)(g_dwSAMP_Addr + 0x38CF), NULL,
            (uint8_t*)"\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90", NULL }
        }
    };
    memory512 = {
        "memory512",
        0,
        0,
        {
            { 4, (void*)(0x8A5A80), NULL,
            (uint8_t*)"\x20\x00\x00\x00", NULL }
        }
    };
   
    /*
    BulletSparkForc  = 0         # Количество/скорость искр, возникающих при стрельбе из оружия. Стандартное значение - 3.0.
    BulletSparkSprd  = 0         # Разброс искр, возникающих при стрельбе из оружия. Стандартное значение - 0.4.
    BulletDustSize   = 0        # Размер партикла пыли, вызванного стрельбой по земле или песку. Стандартное значение - 0.4. Уменьшение к выигрышу FPS не приводит.
    */
    //70BEB6[basic] 70BEA7[this equal a basic in square(basic*basic)] Vehicle shadows let it be a one 1.0f
    //70BE79[basic] 70BE88[basic^2] Planes shadows distance
    //8D5240[basic] C4B6B0[basic^2] Peds shadows distance
    //49F47B bullet spark
    //49F451 bullet spark
    //49F57E 49F4A5 bullet dust
    shadows.push_back(patch_set() = {
        "shadow_vehicle",
        0,
        0,
        {
            { 1, (void*)(0x70BEB6), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_vehicle_square",
        0,
        0,
        {
            { 1, (void*)(0x70BEA7), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_planes",
        0,
        0,
        {
            { 1, (void*)(0x70BE79), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_planes_square",
        0,
        0,
        {
            { 1, (void*)(0x70BE88), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_peds",
        0,
        0,
        {
            { 1, (void*)(0x8D5240), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    shadows.push_back(patch_set() = {
        "shadow_peds_square",
        0,
        0,
        {
            { 1, (void*)(0xC4B6B0), NULL,
            (uint8_t*)(new float(1.0f)), NULL }
        }
    });
    bullet_effects.push_back(patch_set() = {
        "bullet_effects1",
        0,
        0,
        {
            { 1, (void*)(0x49F47B), NULL,
            (uint8_t*)(new float(0.0f)), NULL }
        }
    });
    bullet_effects.push_back(patch_set() = {
        "bullet_effects2",
        0,
        0,
        {
            { 1, (void*)(0x49F451), NULL,
            (uint8_t*)(new float(0.0f)), NULL }
        }
    });
    bullet_effects.push_back(patch_set() = {
        "bullet_dust1",
        0,
        0,
        {
            { 1, (void*)(0x49F57E), NULL,
            (uint8_t*)(new float(0.0f)), NULL }
        }
    });
    bullet_effects.push_back(patch_set() = {
        "bullet_dust2",
        0,
        0,
        {
            { 1, (void*)(0x49F4A5), NULL,
            (uint8_t*)(new float(0.0f)), NULL }
        }
    });
}
bool CLQFramerate::getStatePostEffects() {
        return post_effects;
    }
void CLQFramerate::toggleStatePostEffects() {
        CPostEffects__m_bDisableAllPostEffect = !post_effects;
        post_effects ^= true;
    }
void CLQFramerate::fogPatch() {
        Hook hk;
        uint32_t _0 = (uint32_t)(&ahook) + 6;
        hk.JMP((DWORD*)(0x55FCC8), (DWORD*)_0, 4);
        DWORD lold;
        VirtualProtect((LPVOID)0x0055FCCD, 2, PAGE_EXECUTE_READWRITE, &lold);
        *(short*)0x0055FCCD = 0x9090;
        VirtualProtect((LPVOID)0x0055FCCD, 2, lold, NULL);
        fog_patched = true;
        fog = true;
}
void CLQFramerate::fpsPatch() {
        /*
        DWORD old;
            DWORD fpsupaddr = g_dwSAMP_Addr + 0x9D9D0;
            VirtualProtect((LPVOID)fpsupaddr, sizeof(int), PAGE_EXECUTE_READWRITE, &old);
            *(int *)fpsupaddr = 0x5051FF15;
            VirtualProtect((LPVOID)fpsupaddr, sizeof(int), old, NULL);
        */
        if(fps.size() > 0)
        for(int i = 0; i < fps.size(); i++)
            patcher_install(&fps[i]);
        fpsmix = true;
        //fog = false;
    }
void CLQFramerate::fpsDispatch() {
        for (int i = 0; i < fps.size(); i++)
            patcher_remove(&fps[i]);
        fpsmix = false;
}
void CLQFramerate::memory512Patch() {
        //*(int*)0x8A5A80 = 0x20000000;
        /*
            VirtualProtect((LPVOID)0x8A5A80, sizeof(int), PAGE_READWRITE, &old);
            *(int*)0x8A5A80 = 0x20000000;
            VirtualProtect((LPVOID)0x8A5A80, sizeof(int), old, NULL);
        */
       
        patcher_install(&memory512);
        memory_512 = true;
    }
void CLQFramerate::memory512Dispatch() {
        patcher_remove(&memory512);
        memory_512 = false;
    }
void CLQFramerate::someEffectsPatch() {
        if(effects.size() > 0)
        for (int i = 0; i < effects.size(); i++)
            patcher_install(&effects[i]);
        someeffects = true;
}
void CLQFramerate::someEffectsDispatch() {
        for (int i = 0; i < effects.size(); i++)
            patcher_remove(&effects[i]);
        someeffects = false;
}
void CLQFramerate::surfPatch() {
        patcher_install(&fuck_surf);
    }
void CLQFramerate::surfDispatch() {
        patcher_remove(&fuck_surf);
    }
void CLQFramerate::shadowsPatch() {
    for (int i = 0; i < shadows.size(); i++)
        patcher_install(&shadows[i]);
    shadows_off = true;
}
void CLQFramerate::shadowsDispatch() {
    for (int i = 0; i < shadows.size(); i++)
        patcher_remove(&shadows[i]);
    shadows_off = false;
}
void CLQFramerate::bulletEffPatch()
{
    for (int i = 0; i < bullet_effects.size(); i++)
        patcher_install(&bullet_effects[i]);
    bullet_eff = true;
}
void CLQFramerate::bulletEffDispatch()
{
    for (int i = 0; i < bullet_effects.size(); i++)
        patcher_remove(&bullet_effects[i]);
    bullet_eff = false;
}

void CLQFramerate::doProc() {

        if (fog) {
            DWORD old;
            VirtualProtect((LPVOID)0xB7C4F0, 4, PAGE_EXECUTE_READWRITE, &old);
            float currdist = *(float *)0xB7C4F0;
            VirtualProtect((LPVOID)0xB7C4F0, 4, old, NULL);
            if (currdist != LiquidMod->Misc.fog_dist) {
                DWORD nold;
                VirtualProtect((LPVOID)0xB7C4F0, 4, PAGE_EXECUTE_READWRITE, &nold);
                *(float*)0xB7C4F0 = LiquidMod->Misc.fog_dist;
                VirtualProtect((LPVOID)0xB7C4F0, 4, PAGE_READONLY, NULL);
            }
        }

    }
на из ликвида почекай
разве тут не убирает все эффекты от пули?