FlacoBey

Untitled

Jun 7th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.79 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.                 if(hitgroup != 3) return Plugin_Continue;
  68.                 int iEnt = GetEntPropEnt(attacker, Prop_Send, "m_hUseEntity");
  69.                 if(IsValidEdict(iEnt) && iEnt > 0)
  70.                 {
  71.                     char sWeaponEx[32];
  72.                     GetEdictClassname(iEnt, sWeaponEx, sizeof(sWeaponEx));
  73.                     if (StrEqual(sWeaponEx, "prop_minigun") || StrEqual(sWeaponEx, "prop_minigun_l4d1")) return Plugin_Continue;
  74.                 }
  75.                 char classname[64];
  76.                 GetClientWeapon(attacker, classname, sizeof(classname));
  77.                 if(StrEqual(classname, "weapon_melee")) return Plugin_Continue;
  78.                
  79.                 if(StrEqual(classname, "weapon_autoshotgun"))
  80.                 {
  81.                     ForceDamageEntity(attacker, AutoShot, victim);
  82.                     damage = 0.0;
  83.                     return Plugin_Changed;
  84.                 }
  85.                 else if(StrEqual(classname, "weapon_hunting_rifle"))
  86.                 {
  87.                     ForceDamageEntity(attacker, HuntingRifle, victim);
  88.                     damage = 0.0;
  89.                     return Plugin_Changed;
  90.                 }
  91.                 else if(StrEqual(classname, "weapon_rifle"))
  92.                 {
  93.                     ForceDamageEntity(attacker, Rifle, victim);
  94.                     damage = 0.0;
  95.                     return Plugin_Changed;
  96.                 }
  97.                 else if(StrEqual(classname, "weapon_pistol"))
  98.                 {
  99.                     ForceDamageEntity(attacker, Pistol, victim);
  100.                     damage = 0.0;
  101.                     return Plugin_Changed;
  102.                 }
  103.                 else if(StrEqual(classname, "weapon_pistol_magnum"))
  104.                 {
  105.                     ForceDamageEntity(attacker, Magnum, victim);
  106.                     damage = 0.0;
  107.                     return Plugin_Changed;
  108.                 }
  109.                 else if(StrEqual(classname, "weapon_pumpshotgun"))
  110.                 {
  111.                     ForceDamageEntity(attacker, Pumpshotgun, victim);
  112.                     damage = 0.0;
  113.                     return Plugin_Changed;
  114.                 }
  115.                 else if(StrEqual(classname, "weapon_rifle_ak47"))
  116.                 {
  117.                     ForceDamageEntity(attacker, Ak47, victim);
  118.                     damage = 0.0;
  119.                     return Plugin_Changed;
  120.                 }
  121.                 else if(StrEqual(classname, "weapon_rifle_desert"))
  122.                 {
  123.                     ForceDamageEntity(attacker, Desert, victim);
  124.                     damage = 0.0;
  125.                     return Plugin_Changed;
  126.                 }
  127.                 else if(StrEqual(classname, "weapon_rifle_m60"))
  128.                 {
  129.                     ForceDamageEntity(attacker, M60, victim);
  130.                     damage = 0.0;
  131.                     return Plugin_Changed;
  132.                 }
  133.                 else if(StrEqual(classname, "weapon_rifle_sg552"))
  134.                 {
  135.                     ForceDamageEntity(attacker, SSG552, victim);
  136.                     damage = 0.0;
  137.                     return Plugin_Changed;
  138.                 }
  139.                 else if(StrEqual(classname, "weapon_shotgun_chrome"))
  140.                 {
  141.                     ForceDamageEntity(attacker, Chrome, victim);
  142.                     damage = 0.0;
  143.                     return Plugin_Changed;
  144.                 }
  145.                 else if(StrEqual(classname, "weapon_shotgun_spas"))
  146.                 {
  147.                     ForceDamageEntity(attacker, Spas, victim);
  148.                     damage = 0.0;
  149.                     return Plugin_Changed;
  150.                 }
  151.                 else if(StrEqual(classname, "weapon_smg"))
  152.                 {
  153.                     ForceDamageEntity(attacker, Smg, victim);
  154.                     damage = 0.0;
  155.                     return Plugin_Changed;
  156.                 }
  157.                 else if(StrEqual(classname, "weapon_smg_mp5"))
  158.                 {
  159.                     ForceDamageEntity(attacker, SSG, victim);
  160.                     damage = 0.0;
  161.                     return Plugin_Changed;
  162.                 }
  163.                 else if(StrEqual(classname, "weapon_smg_silenced"))
  164.                 {
  165.                     ForceDamageEntity(attacker, Silenced, victim);
  166.                     damage = 0.0;
  167.                     return Plugin_Changed;
  168.                 }
  169.                 else if(StrEqual(classname, "weapon_sniper_awp"))
  170.                 {
  171.                     ForceDamageEntity(attacker, Awp, victim);
  172.                     damage = 0.0;
  173.                     return Plugin_Changed;
  174.                 }
  175.                 else if(StrEqual(classname, "weapon_sniper_scout"))
  176.                 {
  177.                     ForceDamageEntity(attacker, Scout, victim);
  178.                     damage = 0.0;
  179.                     return Plugin_Changed;
  180.                 }
  181.                 else if(StrEqual(classname, "weapon_sniper_military"))
  182.                 {
  183.                     ForceDamageEntity(attacker, Military, victim);
  184.                     damage = 0.0;
  185.                     return Plugin_Changed;
  186.                 }
  187.             }
  188.         }
  189.     }
  190.     return Plugin_Continue;
  191. }
  192. public bool IsValidClient(int client)
  193. {
  194.     if (client <= 0)
  195.         return false;
  196.        
  197.     if (client > MaxClients)
  198.         return false;
  199.        
  200.     if (!IsClientInGame(client))
  201.         return false;
  202.        
  203.     if (!IsPlayerAlive(client))
  204.         return false;
  205.  
  206.     return true;
  207. }
  208.  
  209. stock void ForceDamageEntity(int causer, int damage, int victim) // thanks to 达斯*维达
  210. {
  211.     float victim_origin[3];
  212.     char rupture[32];
  213.     char damage_victim[32];
  214.     IntToString(damage, rupture, sizeof(rupture));
  215.     Format(damage_victim, sizeof(damage_victim), "hurtme%d", victim);
  216.     GetEntPropVector(victim, Prop_Send, "m_vecOrigin", victim_origin);
  217.     int entity = CreateEntityByName("point_hurt");
  218.     DispatchKeyValue(victim, "targetname", damage_victim);
  219.     DispatchKeyValue(entity, "DamageTarget", damage_victim);
  220.     DispatchKeyValue(entity, "Damage", rupture);
  221.     DispatchSpawn(entity);
  222.     TeleportEntity(entity, victim_origin, NULL_VECTOR, NULL_VECTOR);
  223.     AcceptEntityInput(entity, "Hurt", (causer > 0 && causer <= MaxClients) ? causer : -1);
  224.     DispatchKeyValue(entity, "classname", "point_hurt");
  225.     DispatchKeyValue(victim, "targetname", "null");
  226.     AcceptEntityInput(entity, "Kill");
  227. }
Advertisement
Add Comment
Please, Sign In to add comment