Raised This Month: $ Target: $400
 0% 

hl weapon phisics


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
alexclaudiu2003
Senior Member
Join Date: Aug 2011
Location: Romania
Old 10-25-2015 , 07:12   hl weapon phisics
Reply With Quote #1

When I throw gun in players, they are pushed, how to fix ?

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 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 
alexclaudiu2003 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 22:12.


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