Raised This Month: $51 Target: $400
 12% 

[HELP] HL Weapon Physics


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
joaokb
Junior Member
Join Date: Apr 2021
Location: brazil
Old 05-31-2021 , 13:52   [HELP] HL Weapon Physics
Reply With Quote #1

hello, im trying to use this plugin in my server:

https://forums.alliedmods.net/showthread.php?t=194880

to add some physics to the dropped weapons like this:

https://www.youtube.com/watch?v=ZIV7...urangaLeela666

but i have 1 little problem, the grenades don't bounce in the floor or in the walls, i want to know if i can disable the plugin just for the grenades and keep for the others weapons

the problem:
https://i.imgur.com/ZbJm5Cj.mp4

i tried to add "grenade" on the "hl_weapon_physics.ini" but it reset itselfs to blank archive

PHP Code:
/*
    v0.1 -  v0.1c [02.08.2011] - first release + code fix
    v0.2 - [04.08.2011] - added lie flat
    v0.3 - [26.08.2011] (+KORD_12.7 optimizations) - 1)added reflect damage, 2)added sounds, 3)removed cvar "spin", 4)fixed cvar "jump"
    v0.4 - [17.10.2011] 1)removed sound cvar 2)added shoot reaction 3)optimizations
    v0.4a - [23.10.2011] 1)Added wp reflect avel
    v0.4b - [08.11.2011] 1)added new sounds 2)more realistic now 3)added sparks
    v0.4b1 - [09.11.2011] 1)added macros on SOUNDS 2)fixed sparks macros 3)added macros DEBUG
    v0.4b2 - [17.11.2011] 1)fixed grenades! in cstrike :D 2)added functionality
    v0.4b3 - [21.11.2011] 1)fixed stuck bug 2)fixed class registration in hl 3)physics now MORE REAL :D 4)added grenade shoot in cs/csz
    v0.5 - [9.12.2011] 1)code optimizations  2)added block message macros (in cs/csz) 3)little fix in shoot grenades 4)fixed cycled sounds 4)fixed bug with "sys_ticrate" cvar 5)changed cvars (damage, shoot) 6)now - shoots & shoot_grenades can be used separately 7)new system unstuck
    v0.6 - [23.07.2012] 1)Added Origin Fix to "armoury_entity" 2)Added "armoury_entity" menu & randomizer & configs(for maps) 3)Added Glass reflect on touch 4)New Code
    
    http://aghl.ru/forum/ - Russian Half-Life and Adrenaline Gamer Community

    Code from "Weapon_Physics" & "Lie_Flat" by author "Nomexous"
*/

#include <hl_weapon_physics_stock>

public plugin_init()
{
    
_Flag_Add(flag_Precache_OFF);
    
    
g_fMaxDamageMultiple = (Float:DAMAGE_DIVIDER Float:MAX_DAMAGE_RECEIVED);
    
g_iMaxPlayersSizeOf = (g_iMaxPlayers get_maxplayers()) + 1;

    
register_plugin(PLUGINVERSIONAUTHOR);
    
register_event("DeathMsg""On_Client_Death""a");
    
    
RegisterHam(Ham_Spawn"player""On_Client_Spawn"1);
    
// <====================>
    
#if defined BREAKABLE_REFLECT

    
RegisterHam(Ham_Touch"func_breakable""On_Breakable_Touch_Post"1);
    
#endif    

// <====================>

#if defined WEAPON_THROWING_ON

    
cvar_WeaponThrowSpeedMultiple register_cvar("hl_ThrowSpeedMultiple""13");

#endif

// <====================>
    
#if !defined Half_Life    

    
DisableHamForward(g_HamSpawnPostOFF);
    
register_logevent("On_New_Round"2"1=Round_Start");
    
#if defined ARMOURY_ENTITY_RANDOMIZER
    
    
register_clcmd(CLCMD_COMMAND"Call_Menu");

    if(
g_iArmouryEntityCounter)
    {
        
On_New_Round();
    }
    
    else
    {
        
DisableHamForward(g_HamSpawnPreOFF);
    }
    
#endif    
    
#if defined SHOOT_GRENADES_ON

    
RegisterHam(Ham_TraceAttack"grenade""TraceAttack_Post"1);
    
#endif    
    
    
register_forward(FM_TraceLine"Trace_Line_Pre"0);
    
#else // Fix Half-Life - Trace_Line

    
register_forward(FM_TraceLine"Trace_Line_Post"1);
    
#endif
}

public 
plugin_precache()
{    
    if(!
file_exists("addons/amxmodx/configs/hl_weapon_physics.ini"))
    {
        
#if !defined Half_Life
        
        
if(!write_file("addons/amxmodx/configs/hl_weapon_physics.ini""// Print bellow blocked classes^n ^ngrenade^n"))
        
#else    
    
        
if(!write_file("addons/amxmodx/configs/hl_weapon_physics.ini""// Print bellow blocked classes^n"))
        
#endif

        
{
            
set_fail_state("FATAL ERROR: Can't Read Config");
            
            return;
        }
    }
    
#if !defined Half_Life

    
g_TrieWeaponPos TrieCreate();

    
EnableHamForward(g_HamSpawnPostOFF RegisterHam(Ham_Spawn"armoury_entity""Armoury_Entity_Spawn_Post"1));
    
#if defined ARMOURY_ENTITY_RANDOMIZER

    
new sMapName[32];
    
    
get_mapname(sMapNamecharsmax(sMapName));
    
formatex(g_sMapNamecharsmax(g_sMapName), "%s%s%s""maps/"sMapName"_hl_WeaponPhysics.ini");
        
    if(!
file_exists(g_sMapName))
    {
        if(!
write_file(g_sMapName""))
        {
            
set_fail_state("FATAL ERROR -> Cant Create Config File!");
                
            return;
        }
    }
            
    new 
            
    
line_len,
    
value;
        
    
read_file(g_sMapName0sMapNamecharsmax(sMapName), line_len);
            
    switch((
value str_to_num(sMapName)))
    {
        case 
0:
        {
            new 
sConfigLine[32];
                    
            
num_to_str((g_iBitWeaponList g_iConstBitAllWeapons), sConfigLinecharsmax(sConfigLine));
                    
            
write_file(g_sMapNamesConfigLine0);
        }
            
        default:
        {
            
g_iBitWeaponList value;
        }
    }
    
    
Armoury_Entity_Change();

    
cvar_iWeaponsCount register_cvar("hl_ArmouryEntityCount""1");
    
cvar_iWeaponsCountCheck get_pcvar_num(cvar_iWeaponsCount);
    
    
Check_Armoury_Entity_Cvar();
    
    
EnableHamForward(g_HamSpawnPreOFF RegisterHam(Ham_Spawn"armoury_entity""Armoury_Entity_Spawn_Pre"0));
    
#endif
#endif    

    
cvar_PhysicsEntitySpawnGravity register_cvar("hl_PhysicsDefaultGravity""2.0");
    
#if defined TRAILS_ON && defined WEAPON_THROWING_ON

    
g_SpriteTrail precache_model(SPRITE);
    
#endif
    
g_TrieBlockedClasses TrieCreate();
    
    
register_forward(FM_SetModel"Set_Model_Post"1);

#if defined ARMOURY_ENTITY_RANDOMIZER && !defined Half_Life

    
line_len 0;
    
#else

#if  !defined ARMOURY_ENTITY_RANDOMIZER

    
new line_len 0;
    
#endif
#endif    

    
new
    
    
line 0,
    
string[32]
    
#if defined SOUNDS_ON    
    
,
    
i;
#else
    
;
#endif
    
    
while(read_file("addons/amxmodx/configs/hl_weapon_physics.ini"line++, stringcharsmax(string), line_len))
    {
        if(!
string[0] || equali(string"//"2))
        {
            continue;
        }
        
        
TrieSetCell(g_TrieBlockedClassesstring_class_Blocked);
    }

#if defined SOUNDS_ON    

    
for(0g_iPrecacheTouchSoundSizeOfi++)
    {
        
precache_sound(g_sTouchSounds[i]);
    }
    
    for(
0g_iPrecacheHitSoundSizeOfi++)
    {
        
precache_sound(g_sHitSounds[i]);
    }
    
#endif
}

public 
Touch_Post(iEntityiTouched)
{
    static 
    
    
iTouchedFlags,
    
iEntFlags;
    
    if(
pev_valid(iEntity))
    {
        if(!
iTouched)
        {
            return 
Enable_Physics(iEntity);
        }
        
        
iEntFlags = ((pev(iEntitypev_flags) & FL_ONGROUND) | is_Physics);
        
        if(
iTouched g_iMaxPlayers)
        {
            if(
pev_valid(iTouched))
            {
                if(!(
iTouchedFlags Get_Entity_Flags(iTouched)))
                {
                    if(
pev(iTouchedpev_solid) & SOLID_BSP)
                    {
                        return 
Enable_Physics(iEntity);
                    }
                    
                    return 
HAM_IGNORED;
                }
                
                switch(
iTouchedFlags is_Physics)
                {
                    case 
0:
                    {
                        static 
iParam;
                        
                        switch(
iTouchedFlags is_Breakable)
                        {
                            case 
0:
                            {
                                
iParam is_Monster >> 0x1;    
                            }
                                
                            default:
                            {
                                
iParam is_Breakable >> 0x1;    
                                
                                
Enable_Physics(iEntity);
                            }
                        }
#if defined PUSH_MONSTERS                            
                        
return Touch_Extension_Check(iEntityiTouchediEntFlagsiTouchedFlagsiParam);
#else
                        
return Touch_Extension_Check(iEntityiTouchediEntFlagsiParam);
#endif                        
                    
}
                        
                    default:
                    {
                        if(
iEntFlags iTouchedFlags// Physics Reflect :D
                        
{
                            static 
                
                            
Float:fInflictorData[3],
                            
Float:fTouchedData[3],
                            
Float:fDifference[3],
                            
iCounter;
                    
                            switch((
iCounter pev(iEntityPEV_DATA_SLOT)))
                            {
                                case 
COUNTS_TO_RESET:
                                {
                                    
set_pev(iEntityPEV_DATA_SLOT0);
                                }
                    
                                default:
                                {
                                    
set_pev(iEntityPEV_DATA_SLOT, ++iCounter);
                                
                                    return 
HAM_IGNORED;
                                }
                            }
                    
                            
pev(iEntitypev_originfTouchedData);
                            
pev(iTouchedpev_originfInflictorData);

                            if(
get_distance_f(fTouchedDatafInflictorData) < 16.0)
                            {    
                                
fDifference[0] = float(random_num(6496));
                    
                                if(
random(2))
                                {
                                    
fDifference[0] = -fDifference[0];
                                }
                    
                                
fDifference[1] = float(random_num(6496));
                    
                                if(
random(2))
                                {
                                    
fDifference[1] = -fDifference[1];
                                }
                    
                                
fDifference[2] = float(random_num(3296));
                
                                if(
random(2))
                                {
                                    
set_pev(iTouchedpev_velocityfDifference);
                                }
                                
                                
fDifference[0] = -fDifference[0];
                                
fDifference[1] = -fDifference[1];
                                
                                if(
random(2))
                                {
                                    
set_pev(iEntitypev_velocityfDifference);
                                }
                                
                                
fDifference[0] *= random_float(1.252.75);
                                
fDifference[1] *= random_float(1.252.75);
                                
                                if(
random(2))
                                {
                                    
fDifference[0] = -fDifference[0];
                                }
                                
                                if(
random(2))
                                {
                                    
fDifference[1] = -fDifference[1];
                                }
                                
                                
set_pev(iEntitypev_avelocityfDifference);
#if defined SOUNDS_ON                    
                                
engfunc(EngFunc_EmitSoundiEntityCHAN_AUTOg_sHitSounds[random(g_iPrecacheHitSoundSizeOf)], Float:SOUND_HITATTN_NORM0PITCH_NORM);
#endif                            
                            
}
                            
                            return 
HAM_HANDLED;
                        }
                    }
                }
            }
        }
        
        else if(
bit_alive(iTouched))
        {
            
#if defined PUSH_MONSTERS        

            
Touch_Extension_Check(iEntityiTouchediEntFlagsis_Player0);
            
#else        
    
            
Touch_Extension_Check(iEntityiTouchediEntFlags0);
            
#endif

        
}
    }
    
    return 
HAM_IGNORED;
}

#if !defined Half_Life
#if defined ARMOURY_ENTITY_RANDOMIZER
public Menu_Config(idMenuItem)
{
    if(
Item == MENU_EXIT)
    {
        
menu_destroy(Menu);
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
    
    
s_Data[6], 
    
s_Name[16], 
    
i_Access
    
i_Callback,
    
i;
    
    
menu_item_getinfo(MenuItemi_Accesss_Datacharsmax(s_Data), s_Namecharsmax(s_Name), i_Callback);

    new 
i_Key str_to_num(s_Data);
    
    new 
BitValues[5];
    
    switch(
g_iClientMenuChoice[IndexFix(id)])
    {
        case 
1:
        {
            switch(
i_Key)
            {
                case 
6:
                {
                    
2;
                }
                
                default:
                {
                    
1;
                    
                    
BitValues =
                    {
                        
_Bit_Weapon_Awp,
                        
_Bit_Weapon_G3sg1,
                        
_Bit_Weapon_Scout,
                
                        
_Bit_Weapon_Xm1014,
                        
_Bit_Weapon_M3
                    
};
                }
            }
        }
        
        case 
2:
        {
            switch(
i_Key)
            {
                case 
6:
                {
                    
1;    
                }
                
                case 
7:
                {
                    
3;
                }
                
                default:
                {
                    
2;
                    
                    
BitValues =
                    {
                        
_Bit_Weapon_Aug,
                        
_Bit_Weapon_Sg552,
                        
_Bit_Weapon_M4a1,
                        
_Bit_Weapon_Ak47,
                        
_Bit_Weapon_M249
                    
};
                }
            }
        }
        
        case 
3:
        {
            switch(
i_Key)
            {
                case 
5:
                {
                    
2;
                }
                
                case 
6:
                {
                    
4;    
                }
                
                default:
                {
                    
3;
                    
                    
BitValues =
                    {
                        
_Bit_Weapon_P90,
                        
_Bit_Weapon_Mp5Navy,
                        
_Bit_Weapon_Mac10,
                        
_Bit_Weapon_Tmp,
                        
0
                    
};
                }
            }
        }
        
        case 
4:
        {
            switch(
i_Key)
            {
                case 
6:
                {
                    
3;    
                }
                
                default:
                {
                    
4;    
                    
                    
BitValues =
                    {
                        
_Bit_Weapon_Hegrenade,
                        
_Bit_Weapon_Flashbang,
                        
_Bit_Weapon_Smokegrenade,
                        
_Bit_Item_Kevlar,
                        
_Bit_Item_Assaultsuit
                    
};
                }
            }
        }
    }
    
    if(
i_Key && BitValues[i_Key 1])
    {
        
enum
        
{
            
iMassiveSize 31
        
};
        
        
g_iBitWeaponList ^= BitValues[i_Key 1];
        
        new 
sConfigLine[iMassiveSize 1];
        
        
num_to_str(g_iBitWeaponListsConfigLineiMassiveSize);
        
        
write_file(g_sMapNamesConfigLine0);
    }
    
    
Main_Menu(idi);
        
    return 
PLUGIN_HANDLED;
}

public 
Call_Menu(id)
{
    if(
get_user_flags(id) & (ADMIN_FLAGS))
    {
        
Main_Menu(id1);
    }
}
#endif

public On_New_Round()
{
#if defined ARMOURY_ENTITY_RANDOMIZER

    
cvar_iWeaponsCountCheck get_pcvar_num(cvar_iWeaponsCount);
    
    
Check_Armoury_Entity_Cvar();
    
#endif    

    
if(g_iArmouryEntityCounter)
    {
        
#if defined ARMOURY_ENTITY_RANDOMIZER    
    
        
Armoury_Entity_Change();
        
#endif        
    
        
new
        
        
sWeaponIndex[6],
        
Float:fOriginFix[3],
        
i;
        
        while((
fm_find_ent_by_class(i"armoury_entity")))
        {
            if(
pev_valid(i))
            {
                
num_to_str(isWeaponIndexcharsmax(sWeaponIndex));
                
TrieGetArray(g_TrieWeaponPossWeaponIndexfOriginFix3);
            
                if(
fOriginFix[0] || fOriginFix[1] || fOriginFix[2])
                {
                    
#if defined ARMOURY_ENTITY_RANDOMIZER            
        
                    
ExecuteHamB(Ham_Spawni);
                    
#endif                    

                    
set_pev(ipev_originfOriginFix);
                    
                    
engfunc(EngFunc_DropToFloori);
                    
ExecuteHamB(Ham_Touchi0);
                }    
            }
        }
    }
}

public 
Armoury_Entity_Spawn_Post(iEntity// Enabled on - "plugin_precache" :: Disabled on - "plugin_init"
{
    if(
pev_valid(iEntity))
    {
        
Change_Rendering(iEntity);
        
#if !defined ARMOURY_ENTITY_RANDOMIZER    
    
        
if(_Flag_NOT_Exists(flag_Precache_OFF))
        {
            
g_iArmouryEntityCounter++;
        }
        
#endif        

        
enum
        
{
            
iMassiveSize 5
        
};
        
        new 
        
        
Float:fOriginFix[3],
        
sWeaponIndex[iMassiveSize 1];
        
        
pev(iEntitypev_originfOriginFix);

        
num_to_str(iEntitysWeaponIndexiMassiveSize);
        
TrieSetArray(g_TrieWeaponPossWeaponIndexfOriginFix3);
    }
}
#endif

public client_disconnect(id)
{
    
bit_alive_sub(id);
}

public 
On_Client_Spawn(id)
{
    
bit_alive_add(id);
}

public 
On_Client_Death()
{
    
bit_alive_sub(read_data(2));
}

public 
Take_Damage_Pre(iEntityinflictoridattackerFloat:fDamageiDamagebits)
{
    if(
fDamage 1.0)
    {
        
fDamage 1.0;
    }
    
    static 

    
Float:fTemp[3],

    
iAgressor,
    
iMaxMultiple,
    
iParam;

    if(
pev_valid(iEntity) && ((iAgressor Get_Entity_Data(inflictor)) || (iAgressor Get_Entity_Data(idattacker))))
    {
        if(
fDamage Float:MAX_DAMAGE_RECEIVED)
        {
            
fDamage Float:MAX_DAMAGE_RECEIVED;
        }
        
        
enum
        
{
            
iDataVertical 0,
            
iDataHorizontal,
            
iDataAngleHigh,
            
iDataAngle
        
}
        
        switch(
pev(iEntityPEV_GROUND_TYPE))
        {
            case 
iDataVerticaliDataHorizontal:
            {
                
iParam 0;    
            }
            
            case 
iDataAngleHighiDataAngle:
            {
                
iParam 1;    
            }
            
            default:
            {
                
SetHamParamFloat(40.0);
    
                return 
HAM_HANDLED;
            }
        }
        
        
Make_Vectors(iAgressoriEntityfDamageiDamagebitsfTempiParam);    
        
        if(
fDamage 32.0)
        {
            
iMaxMultiple 16;
        }
        
        else if(
fDamage 64.0)
        {
            
iMaxMultiple 12;
        }
        
        else if(
fDamage 96.0)
        {
            
iMaxMultiple 8;
        }
        
        else
        {
            
iMaxMultiple 4;
        }
        
        
fTemp[1] = random_float(-fDamagefDamage) * random_num(2iMaxMultiple);
        
        if(
fTemp[0] > Float:MAX_REFLECT_A_VELOCITY)
        {
            
fTemp[0] = Float:MAX_REFLECT_A_VELOCITY;
        }
        
        else if(
fTemp[0] < -Float:MAX_REFLECT_A_VELOCITY)
        {
            
fTemp[0] = -Float:MAX_REFLECT_A_VELOCITY;
        }
        
        if(
fTemp[2] > Float:MAX_REFLECT_A_VELOCITY)
        {
            
fTemp[2] = Float:MAX_REFLECT_A_VELOCITY;
        }
        
        else if(
fTemp[2] < -Float:MAX_REFLECT_A_VELOCITY)
        {
            
fTemp[2] = -Float:MAX_REFLECT_A_VELOCITY;
        }
        
        static 
Float:fEntAngles[3];
        
        
pev(iEntitypev_anglesfEntAngles);
        
        
xs_vec_add(fEntAnglesfTempfTemp);
        
        
fTemp[1] *= 0.75;
        
fTemp[2] *= random_float(0.50.75);
        
fTemp[0] *= random_float(0.50.75);
        
        
set_pev(iEntitypev_avelocityfTemp);
        
#if defined SOUNDS_ON    
    
        
engfunc(EngFunc_EmitSoundiEntityCHAN_AUTOg_sHitSounds[random(g_iPrecacheHitSoundSizeOf)], Float:SOUND_HITATTN_NORM0PITCH_NORM);
        
#endif        

        
SetHamParamFloat(40.0);
    
        return 
HAM_HANDLED;
    }
    
    return 
HAM_IGNORED;
}

public 
Set_Model_Post(iEntity, const sModel[])
{
    if(
iEntity g_iMaxPlayers && pev_valid(iEntity) && (<< pev(iEntitypev_movetype) & _:(AVAILABLE_MOVETYPE)))
    {
        new 
        
        
classname[32],
        
value 0;
        
        
pev(iEntitypev_classnameclassnamecharsmax(classname));
        
TrieGetCell(g_TrieBlockedClassesclassnamevalue);
        
        if(!
value)
        {
            
TrieSetCell(g_TrieBlockedClassesclassname_class_Change);
            
            
RegisterHamFromEntity(Ham_TraceAttackiEntity"TraceAttack_Post"1);
            
RegisterHamFromEntity(Ham_TakeDamageiEntity"Take_Damage_Pre"0);
            
RegisterHamFromEntity(Ham_TouchiEntity"Touch_Post"1);
            
            
value _class_Change;
        }
        
        if(
value _class_Change)
        {
            new 
Float:fCvarGravityValue get_pcvar_float(cvar_PhysicsEntitySpawnGravity);
            
            if(
fCvarGravityValue 0.0)
            {
                
fCvarGravityValue = -fCvarGravityValue;
            }
            
            
set_pev(iEntitypev_health111.0);
            
set_pev(iEntitypev_takedamageDAMAGE_YES);
            
set_pev(iEntitypev_movetypeMOVETYPE_BOUNCE);
            
set_pev(iEntitypev_gravityfCvarGravityValue);
            
#if defined WEAPON_THROWING_ON    
            
new Owner 0;
            
            if(
_PlayerEntity((Owner pev(iEntitypev_owner))))
#else
            
if(_PlayerEntity(pev(iEntitypev_owner)))
#endif
            
{
#if defined WEAPON_THROWING_ON                
                
new Float:Aiming[3];
                
                if(
bit_alive(Owner))
                {
                    new 
Float:fMultiple;
                    
                    
velocity_by_aim(Ownerrandom_num(1632), Aiming);
                
                    if((
fMultiple float(get_pcvar_num(cvar_WeaponThrowSpeedMultiple))) > 0.0 && get_user_oldbutton(Owner) & IN_USE && equali(classname"weaponbox"9))
                    {
                        
xs_vec_mul_scalar(AimingfMultipleAiming);    
#if defined TRAILS_ON
                        
Entity_Trail(iEntity);
#endif
                    
}
                
                    
set_pev(iEntitypev_basevelocityAiming);

                }
#else
                
new Float:Aiming[3];
#endif
#if defined PHYSICS_RENDERING            
                
Change_Rendering(iEntity);
#endif            
                
Aiming[0] = random_float(-255.0255.0);
                
Aiming[1] = random_float(-255.0255.0);
                
Aiming[2] = random_float(-255.0255.0);
                
                
set_pev(iEntitypev_avelocityAiming);    
            }
        }
    }
}

#if !defined Half_Life
public Trace_Line_Pre(Float:start[3], Float:end[3], iNoMonstersentToSkiptrace)
#else
public Trace_Line_Post(Float:start[3], Float:end[3], iNoMonstersentToSkiptrace)
#endif
{
    if(
_PlayerEntityAlive(entToSkip))
    {
        static 
        
        
Float:endpt[3], 
        
tr
        
i,
        
result;
        
        
get_tr2(traceTR_vecEndPosendpt);
        
#if defined SHOOT_GRENADES_ON && !defined Half_Life    
        
while((fm_find_ent_by_class(i"grenade")))
        {
            if(
pev_valid(i) && pev(ipev_dmgtime))
            {
                
engfunc(EngFunc_TraceModelstartendptHULL_HEADitr);
            
                if(
== get_tr2(trTR_pHit))
                {                
                    
set_tr2(traceTR_pHit, (g_iClientGrenade[IndexFix(entToSkip)] = i));
                
                    break;
                }
            }
            
            
g_iClientGrenade[IndexFix(entToSkip)] = 0;
        }
        
        if(!
g_iClientGrenade[IndexFix(entToSkip)])
        {
#endif    
            
while((engfunc(EngFunc_FindEntityInSphereiendptFloat:SEARCHING_RADIUS)))
            {
                if(
g_iMaxPlayers && pev_valid(i) && pev(ipev_movetype) == MOVETYPE_BOUNCE)
                {
                    
engfunc(EngFunc_TraceModelstartendHULL_HEADitr);
        
                    if((((
result get_tr2(trTR_pHit)) == i) || (result && Extension_Check(entToSkipiendpt))))
                    {
                        
set_tr2(traceTR_pHit, (g_iClientEntity[IndexFix(entToSkip)] = i));
                        
                        continue;
                    }
                
                    
g_iClientEntity[IndexFix(entToSkip)] = 0;
                    
g_fClientDamage[IndexFix(entToSkip)] = 0.0;
                }
            
                else
                {
                    
g_iClientEntity[IndexFix(entToSkip)] = 0;
                    
g_fClientDamage[IndexFix(entToSkip)] = 0.0;
                }
            }
#if defined SHOOT_GRENADES_ON && !defined Half_Life            
        
}
#endif
    
}
}

public 
TraceAttack_Post(entidattackerFloat:damageFloat:direction[3], tracehandledamagebits)
{    
    if(
_PlayerEntity(idattacker))
    {
        if(!(
damagebits DMG_BULLET))
        {
            
g_iClientEntity[IndexFix(idattacker)] = 0;
            
g_fClientDamage[IndexFix(idattacker)] = 0.0;
            
            return;
        }
        
        
g_fClientDamage[IndexFix(idattacker)] = damage;
        
#if !defined Half_Life && defined SHOOT_GRENADES_ON
        
if(g_iClientGrenade[IndexFix(idattacker)] == ent && pev_valid(ent) && pev(entpev_dmgtime))
        {
            new 
deploy 0;
            
            switch(
get_pdata_int(ent114))
            {
                case 
FLASH_GRENADE:
                {
                    if(!
get_pdata_int(ent96))
                    {                        
                        
deploy 0x1;                        
                    }
                }
                            
                case 
HE_GRENADE:
                {
                    
deploy 0x2;                        
                }
                            
                case 
SMOKE_GRENADE:
                {                
                    
set_pev(entpev_flagspev(entpev_flags) | FL_ONGROUND);
                    
                    
deploy 0x3;
                }
            }
        
            if(
deploy)
            {
#if defined MESSAGE_ON                        
                
enum
                
{
                    
iMassiveSize 31
                
};
                
                new 
Name[iMassiveSize 1];
                    
                new const 
grenade_id[][] =
                {
                    
"FlashBang",
                    
"HEGrenade",
                    
"SmokeGrenade"
                
};

                
get_user_name(idattackerNameiMassiveSize);    
                
client_print(0print_chat"%c%s%s %s %s%s%c %s"'['Name"]:"" HIT -"" `"grenade_id[deploy 1], '`'"O_o!");
                
#endif        

                
set_pev(entpev_dmgtime0.0);
                
dllfunc(DLLFunc_Thinkent);
                
                
g_iClientGrenade[IndexFix(idattacker)] = 0;
            }
        }
#endif
    
}
}

#if defined zBot_on_server
public zBot_change_data(idzBot_alivezBot_in_game)
{
    if(
id && << (id 1) & zBot_alive)
    {
        
On_Client_Spawn(id);
    }
}
#endif

#if defined ARMOURY_ENTITY_RANDOMIZER
public Armoury_Entity_Spawn_Pre(ent)
{
    if(
pev_valid(ent))    
    {
        if(
_Flag_NOT_Exists(flag_Precache_OFF))
        {
            
g_iArmouryEntityCounter++;
        }
    
        
set_pdata_int(ent34g_iWeaponsCounter g_iRandomWeapons_Enum[random(g_iWeaponsCounter)] : 0_:WEAPON_IN_BOX_LINUX_OFFSET);
        
set_pdata_int(ent35cvar_iWeaponsCountCheck_:WEAPON_COUNT_LINUX_OFFSET);
    }
}
#endif

#if defined BREAKABLE_REFLECT
public On_Breakable_Touch_Post(iEntityid)
{
    static 
    
    
iAgressor,
    
iFlags;
    
    if(
pev_valid(iEntity) && (!(iFlags pev(iEntitypev_spawnflags)) || iFlags & ~SF_BREAK_TRIGGER_ONLY) && (iAgressor Get_Entity_Data(idGET_FULL_DATA)))
    {
        if(
iAgressor || iAgressor is_Monster)
        {
            static 
        
            
Float:fVelocity[3],
            
Float:fVector;
        
            
pev(idpev_velocityfVelocity);
            
            if((
fVector = (vector_length(fVelocity) * g_fMultiple[2][_SpeedVectorMultiple])) > g_fMultiple[2][_SpeedVectorCheck])
            {
                
ExecuteHamB(Ham_TakeDamageiEntityididfVector g_fMultiple[2][_DamageMultiple], DMG_GENERIC);
            
                return 
HAM_HANDLED;
            }
        }
    }
    
    return 
HAM_IGNORED;
}
#endif 
__________________
⠀⠀⠀⠀⠀⠀
⠀⠀kabest

Last edited by joaokb; 05-31-2021 at 14:06.
joaokb is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:52.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode