FlacoBey

Untitled

Jun 4th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.62 KB | None | 0 0
  1. #include <sdktools>
  2. #include <sdkhooks>
  3.  
  4. #pragma newdecls required
  5. #pragma semicolon 1
  6. #pragma tabsize 0
  7.  
  8. bool lateLoad;
  9.  
  10. int AutoShot = 21;
  11. int HuntingRifle = 128;
  12. int Pistol = 40;
  13. int Magnum = 215;
  14. int Desert = 75;
  15. int Military = 148;
  16. int Scout = 173;
  17. int Awp = 304;
  18. int Spas = 26;
  19. int Smg = 46;
  20. int Silenced = 42;
  21. int SSG552 = 62;
  22. int SSG = 46;
  23. int Rifle = 80;
  24. int Ak47 = 120;
  25. int M60 = 152;
  26. int Pumpshotgun = 28;
  27. int Chrome = 36;
  28.  
  29. public APLRes AskPluginLoad2(Handle plugin, bool late, char[] erro, int errMax)
  30. {
  31.     lateLoad = late;
  32.     return APLRes_Success;    
  33. }
  34.  
  35. public void OnPluginStart()
  36. {
  37.     if (lateLoad)
  38.     {
  39.         for (int client = 1; client <= MaxClients; client++)
  40.         {
  41.             if (IsClientInGame(client))
  42.             {
  43.                 OnClientPutInServer(client);
  44.             }
  45.         }
  46.     }
  47. }
  48.  
  49. public void OnClientPutInServer(int client)
  50. {
  51.     SDKHook(client, SDKHook_TraceAttack, OnTakeDamage);
  52. }
  53.  
  54. public void OnClientDisconnect(int client)
  55. {
  56.     SDKUnhook(client, SDKHook_TraceAttack, OnTakeDamage);
  57. }
  58.  
  59. public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &ammotype, int hitbox, int hitgroup)
  60. {
  61.     if (!(damagetype & DMG_BURN || damagetype & DMG_BLAST))
  62.     {
  63.         if (IsValidClient(attacker) && GetClientTeam(attacker) == 2)
  64.         {
  65.             if(IsValidClient(victim) && GetClientTeam(victim) == 2)
  66.             {
  67.                 int iEnt = GetEntPropEnt(attacker, Prop_Send, "m_hUseEntity");
  68.                 if(IsValidEdict(iEnt) && iEnt > 0)
  69.                 {
  70.                     char sWeaponEx[32];
  71.                     GetEdictClassname(iEnt, sWeaponEx, sizeof(sWeaponEx));
  72.                     if (StrEqual(sWeaponEx, "prop_minigun") || StrEqual(sWeaponEx, "prop_minigun_l4d1")) return Plugin_Continue;
  73.                 }
  74.                 char classname[64];
  75.                 GetClientWeapon(attacker, classname, sizeof(classname));
  76.                 if(StrEqual(classname, "weapon_melee")) return Plugin_Continue;
  77.                
  78.                 if(StrEqual(classname, "weapon_autoshotgun"))
  79.                 {
  80.                     ForceDamageEntity(attacker, AutoShot, victim);
  81.                     damage = 0.0;
  82.                     return Plugin_Changed;
  83.                 }
  84.                 else if(StrEqual(classname, "weapon_hunting_rifle"))
  85.                 {
  86.                     ForceDamageEntity(attacker, HuntingRifle, victim);
  87.                     damage = 0.0;
  88.                     return Plugin_Changed;
  89.                 }
  90.                 else if(StrEqual(classname, "weapon_rifle"))
  91.                 {
  92.                     ForceDamageEntity(attacker, Rifle, victim);
  93.                     damage = 0.0;
  94.                     return Plugin_Changed;
  95.                 }
  96.                 else if(StrEqual(classname, "weapon_pistol"))
  97.                 {
  98.                     ForceDamageEntity(attacker, Pistol, victim);
  99.                     damage = 0.0;
  100.                     return Plugin_Changed;
  101.                 }
  102.                 else if(StrEqual(classname, "weapon_pistol_magnum"))
  103.                 {
  104.                     ForceDamageEntity(attacker, Magnum, victim);
  105.                     damage = 0.0;
  106.                     return Plugin_Changed;
  107.                 }
  108.                 else if(StrEqual(classname, "weapon_pumpshotgun"))
  109.                 {
  110.                     ForceDamageEntity(attacker, Pumpshotgun, victim);
  111.                     damage = 0.0;
  112.                     return Plugin_Changed;
  113.                 }
  114.                 else if(StrEqual(classname, "weapon_rifle_ak47"))
  115.                 {
  116.                     ForceDamageEntity(attacker, Ak47, victim);
  117.                     damage = 0.0;
  118.                     return Plugin_Changed;
  119.                 }
  120.                 else if(StrEqual(classname, "weapon_rifle_desert"))
  121.                 {
  122.                     ForceDamageEntity(attacker, Desert, victim);
  123.                     damage = 0.0;
  124.                     return Plugin_Changed;
  125.                 }
  126.                 else if(StrEqual(classname, "weapon_rifle_m60"))
  127.                 {
  128.                     ForceDamageEntity(attacker, M60, victim);
  129.                     damage = 0.0;
  130.                     return Plugin_Changed;
  131.                 }
  132.                 else if(StrEqual(classname, "weapon_rifle_sg552"))
  133.                 {
  134.                     ForceDamageEntity(attacker, SSG552, victim);
  135.                     damage = 0.0;
  136.                     return Plugin_Changed;
  137.                 }
  138.                 else if(StrEqual(classname, "weapon_shotgun_chrome"))
  139.                 {
  140.                     ForceDamageEntity(attacker, Chrome, victim);
  141.                     damage = 0.0;
  142.                     return Plugin_Changed;
  143.                 }
  144.                 else if(StrEqual(classname, "weapon_shotgun_spas"))
  145.                 {
  146.                     ForceDamageEntity(attacker, Spas, victim);
  147.                     damage = 0.0;
  148.                     return Plugin_Changed;
  149.                 }
  150.                 else if(StrEqual(classname, "weapon_smg"))
  151.                 {
  152.                     ForceDamageEntity(attacker, Smg, victim);
  153.                     damage = 0.0;
  154.                     return Plugin_Changed;
  155.                 }
  156.                 else if(StrEqual(classname, "weapon_smg_mp5"))
  157.                 {
  158.                     ForceDamageEntity(attacker, SSG, victim);
  159.                     damage = 0.0;
  160.                     return Plugin_Changed;
  161.                 }
  162.                 else if(StrEqual(classname, "weapon_smg_silenced"))
  163.                 {
  164.                     ForceDamageEntity(attacker, Silenced, victim);
  165.                     damage = 0.0;
  166.                     return Plugin_Changed;
  167.                 }
  168.                 else if(StrEqual(classname, "weapon_sniper_awp"))
  169.                 {
  170.                     ForceDamageEntity(attacker, Awp, victim);
  171.                     damage = 0.0;
  172.                     return Plugin_Changed;
  173.                 }
  174.                 else if(StrEqual(classname, "weapon_sniper_scout"))
  175.                 {
  176.                     ForceDamageEntity(attacker, Scout, victim);
  177.                     damage = 0.0;
  178.                     return Plugin_Changed;
  179.                 }
  180.                 else if(StrEqual(classname, "weapon_sniper_military"))
  181.                 {
  182.                     ForceDamageEntity(attacker, Military, victim);
  183.                     damage = 0.0;
  184.                     return Plugin_Changed;
  185.                 }
  186.             }
  187.         }
  188.     }
  189.     return Plugin_Continue;
  190. }
  191. public bool IsValidClient(int client)
  192. {
  193.     if (client <= 0)
  194.         return false;
  195.        
  196.     if (client > MaxClients)
  197.         return false;
  198.        
  199.     if (!IsClientInGame(client))
  200.         return false;
  201.        
  202.     if (!IsPlayerAlive(client))
  203.         return false;
  204.  
  205.     return true;
  206. }
  207.  
  208. stock void ForceDamageEntity(int causer, int damage, int victim) // thanks to 达斯*维达
  209. {
  210.     float victim_origin[3];
  211.     char rupture[32];
  212.     char damage_victim[32];
  213.     IntToString(damage, rupture, sizeof(rupture));
  214.     Format(damage_victim, sizeof(damage_victim), "hurtme%d", victim);
  215.     GetEntPropVector(victim, Prop_Send, "m_vecOrigin", victim_origin);
  216.     int entity = CreateEntityByName("point_hurt");
  217.     DispatchKeyValue(victim, "targetname", damage_victim);
  218.     DispatchKeyValue(entity, "DamageTarget", damage_victim);
  219.     DispatchKeyValue(entity, "Damage", rupture);
  220.     DispatchSpawn(entity);
  221.     TeleportEntity(entity, victim_origin, NULL_VECTOR, NULL_VECTOR);
  222.     AcceptEntityInput(entity, "Hurt", (causer > 0 && causer <= MaxClients) ? causer : -1);
  223.     DispatchKeyValue(entity, "classname", "point_hurt");
  224.     DispatchKeyValue(victim, "targetname", "null");
  225.     AcceptEntityInput(entity, "Kill");
  226. }
Advertisement
Add Comment
Please, Sign In to add comment