AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   hl weapon phisics (https://forums.alliedmods.net/showthread.php?t=273717)

alexclaudiu2003 10-25-2015 07:12

hl weapon phisics
 
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 



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

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