FlacoBey

Untitled

Jun 4th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.02 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. float ForAllMelees = 1.0;
  11. float KatanaAndTopor = 1.0;
  12. float CrowbarAndMachete = 1.0;
  13. float knife = 1.0;
  14.  
  15. float ForAllMeleesT = 1.0;
  16. float KatanaAndToporT = 1.0;
  17. float CrowbarAndMacheteT = 1.0;
  18. float knifeT = 1.0;
  19.  
  20. float ForAllMeleesC = 1.0;
  21. float KatanaAndToporC = 1.0;
  22. float CrowbarAndMacheteC = 1.0;
  23. float knifeC = 1.0;
  24.  
  25. float ForAllMeleesHead = 1.0;
  26. float KatanaAndToporHead = 1.0;
  27. float CrowbarAndMacheteHead = 1.0;
  28. float knifeHead = 1.0;
  29.  
  30. float ForAllMeleesTHead = 1.0;
  31. float KatanaAndToporTHead = 1.0;
  32. float CrowbarAndMacheteTHead = 1.0;
  33. float knifeTHead = 1.0;
  34.  
  35. float ForAllMeleesCHead = 1.0;
  36. float KatanaAndToporCHead = 1.0;
  37. float CrowbarAndMacheteCHead = 1.0;
  38. float knifeCHead = 1.0;
  39.  
  40. public APLRes AskPluginLoad2(Handle plugin, bool late, char[] erro, int errMax)
  41. {
  42.     lateLoad = late;
  43.     return APLRes_Success;    
  44. }
  45.  
  46. public void OnPluginStart()
  47. {
  48.     if (lateLoad)
  49.     {
  50.         for (int client = 1; client <= MaxClients; client++)
  51.         {
  52.             if (IsClientInGame(client))
  53.             {
  54.                 OnClientPutInServer(client);
  55.             }
  56.         }
  57.     }
  58. }
  59.  
  60. public void OnClientPutInServer(int client)
  61. {
  62.     SDKHook(client, SDKHook_TraceAttack, OnTakeDamage);
  63. }
  64.  
  65. public void OnClientDisconnect(int client)
  66. {
  67.     SDKUnhook(client, SDKHook_TraceAttack, OnTakeDamage);
  68. }
  69.  
  70. public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &ammotype, int hitbox, int hitgroup)
  71. {
  72.     if (!(damagetype & DMG_BURN || damagetype & DMG_BLAST))
  73.     {
  74.         if (IsValidClient(attacker))
  75.         {
  76.             if(IsValidClient(victim))
  77.             {
  78.                 char classname[64];
  79.                 GetClientWeapon(attacker, classname, sizeof(classname));
  80.                 if(StrEqual(classname, "weapon_melee"))
  81.                 {
  82.                     GetEntPropString(GetPlayerWeaponSlot(attacker, 1), Prop_Data, "m_strMapSetScriptName", classname, sizeof(classname));
  83.                 }
  84.                 int vClass = GetEntProp(victim, Prop_Send, "m_zombieClass");
  85.                 switch(vClass)
  86.                 {
  87.                     case 6:
  88.                     {
  89.                         if(StrEqual(classname, "knife"))
  90.                         {
  91.                             damage = knifeC;
  92.                             if(hitgroup == 1) damage = knifeCHead;
  93.                             return Plugin_Changed;
  94.                         }
  95.                         else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
  96.                         {
  97.                             damage = KatanaAndToporC;
  98.                             if(hitgroup == 1) damage = KatanaAndToporCHead;
  99.                             return Plugin_Changed;
  100.                         }
  101.                         else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
  102.                         {
  103.                             damage = CrowbarAndMacheteC;
  104.                             if(hitgroup == 1) damage = CrowbarAndMacheteCHead;
  105.                             return Plugin_Changed;
  106.                         }
  107.                         else
  108.                         {
  109.                             damage = ForAllMeleesC;
  110.                             if(hitgroup == 1) damage = ForAllMeleesCHead;
  111.                             return Plugin_Changed;
  112.                         }
  113.                     }
  114.                     case 8:
  115.                     {
  116.                         if(StrEqual(classname, "knife"))
  117.                         {
  118.                             damage = knifeT;
  119.                             if(hitgroup == 1) damage = knifeTHead;
  120.                             return Plugin_Changed;
  121.                         }
  122.                         else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
  123.                         {
  124.                             damage = KatanaAndToporT;
  125.                             if(hitgroup == 1) damage = KatanaAndToporTHead;
  126.                             return Plugin_Changed;
  127.                         }
  128.                         else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
  129.                         {
  130.                             damage = CrowbarAndMacheteT;
  131.                             if(hitgroup == 1) damage = CrowbarAndMacheteTHead;
  132.                             return Plugin_Changed;
  133.                         }
  134.                         else
  135.                         {
  136.                             damage = ForAllMeleesT;
  137.                             if(hitgroup == 1) damage = ForAllMeleesTHead;
  138.                             return Plugin_Changed;
  139.                         }
  140.                     }
  141.                     default:
  142.                     {
  143.                         if(StrEqual(classname, "knife"))
  144.                         {
  145.                             damage = knife;
  146.                             if(hitgroup == 1) damage = knifeHead;
  147.                             return Plugin_Changed;
  148.                         }
  149.                         else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
  150.                         {
  151.                             damage = KatanaAndTopor;
  152.                             if(hitgroup == 1) damage = KatanaAndToporHead;
  153.                             return Plugin_Changed;
  154.                         }
  155.                         else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
  156.                         {
  157.                             damage = CrowbarAndMachete;
  158.                             if(hitgroup == 1) damage =  CrowbarAndMacheteHead;
  159.                             return Plugin_Changed;
  160.                         }
  161.                         else
  162.                         {
  163.                             damage =  ForAllMelees;
  164.                             if(hitgroup == 1) damage = ForAllMeleesHead;
  165.                             return Plugin_Changed;
  166.                         }
  167.                     }
  168.                 }
  169.             }
  170.         }
  171.     }
  172.     return Plugin_Continue;
  173. }
  174.  
  175. public bool IsValidClient(int client)
  176. {
  177.     if (client <= 0)
  178.         return false;
  179.        
  180.     if (client > MaxClients)
  181.         return false;
  182.        
  183.     if (!IsClientInGame(client))
  184.         return false;
  185.        
  186.     if (!IsPlayerAlive(client))
  187.         return false;
  188.  
  189.     return true;
  190. }
Advertisement
Add Comment
Please, Sign In to add comment