FlacoBey

Untitled

Jun 7th, 2019
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.52 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 = 5.0;
  11. float KatanaAndTopor = 20.0;
  12. float CrowbarAndMachete = 9.0;
  13. float knife = 7.0;
  14.  
  15. float ForAllMeleesT = 0.0;
  16. float KatanaAndToporT = 1.0;
  17. float CrowbarAndMacheteT = 0.5;
  18. float knifeT = 0.3;
  19.  
  20. float ForAllMeleesC = 0.0;
  21. float KatanaAndToporC = 3.0;
  22. float CrowbarAndMacheteC = 2.0;
  23. float knifeC = 1.0;
  24.  
  25. float ForAllMeleesHead = 5.0;
  26. float KatanaAndToporHead = 20.0;
  27. float CrowbarAndMacheteHead = 9.0;
  28. float knifeHead = 7.0;
  29.  
  30. float ForAllMeleesTHead = 0.0;
  31. float KatanaAndToporTHead = 12.0;
  32. float CrowbarAndMacheteTHead = 6.0;
  33. float knifeTHead = 3.7;
  34.  
  35. float ForAllMeleesCHead = 0.5;
  36. float KatanaAndToporCHead = 3.0;
  37. float CrowbarAndMacheteCHead = 2.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) && GetClientTeam(attacker) == 2)
  75.         {
  76.             if(IsValidClient(victim) && GetClientTeam(victim) == 3)
  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.                 else return Plugin_Continue;
  85.                 int vClass = GetEntProp(victim, Prop_Send, "m_zombieClass");
  86.                 switch(vClass)
  87.                 {
  88.                     case 6:
  89.                     {
  90.                         if(StrEqual(classname, "knife"))
  91.                         {
  92.                             damage = knifeC;
  93.                             if(hitgroup == 1) damage = knifeCHead;
  94.                             return Plugin_Changed;
  95.                         }
  96.                         else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
  97.                         {
  98.                             damage = KatanaAndToporC;
  99.                             if(hitgroup == 1) damage = KatanaAndToporCHead;
  100.                             return Plugin_Changed;
  101.                         }
  102.                         else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
  103.                         {
  104.                             damage = CrowbarAndMacheteC;
  105.                             if(hitgroup == 1) damage = CrowbarAndMacheteCHead;
  106.                             return Plugin_Changed;
  107.                         }
  108.                         else
  109.                         {
  110.                             damage = ForAllMeleesC;
  111.                             if(hitgroup == 1) damage = ForAllMeleesCHead;
  112.                             return Plugin_Changed;
  113.                         }
  114.                     }
  115.                     case 8:
  116.                     {
  117.                         if(StrEqual(classname, "knife"))
  118.                         {
  119.                             damage = knifeT;
  120.                             if(hitgroup == 1) damage = knifeTHead;
  121.                             return Plugin_Changed;
  122.                         }
  123.                         else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
  124.                         {
  125.                             damage = KatanaAndToporT;
  126.                             if(hitgroup == 1) damage = KatanaAndToporTHead;
  127.                             return Plugin_Changed;
  128.                         }
  129.                         else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
  130.                         {
  131.                             damage = CrowbarAndMacheteT;
  132.                             if(hitgroup == 1) damage = CrowbarAndMacheteTHead;
  133.                             return Plugin_Changed;
  134.                         }
  135.                         else
  136.                         {
  137.                             damage = ForAllMeleesT;
  138.                             if(hitgroup == 1) damage = ForAllMeleesTHead;
  139.                             return Plugin_Changed;
  140.                         }
  141.                     }
  142.                     default:
  143.                     {
  144.                         if(StrEqual(classname, "knife"))
  145.                         {
  146.                             damage = knife;
  147.                             if(hitgroup == 1) damage = knifeHead;
  148.                             return Plugin_Changed;
  149.                         }
  150.                         else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
  151.                         {
  152.                             damage = KatanaAndTopor;
  153.                             if(hitgroup == 1) damage = KatanaAndToporHead;
  154.                             return Plugin_Changed;
  155.                         }
  156.                         else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
  157.                         {
  158.                             damage = CrowbarAndMachete;
  159.                             if(hitgroup == 1) damage =  CrowbarAndMacheteHead;
  160.                             return Plugin_Changed;
  161.                         }
  162.                         else
  163.                         {
  164.                             damage =  ForAllMelees;
  165.                             if(hitgroup == 1) damage = ForAllMeleesHead;
  166.                             return Plugin_Changed;
  167.                         }
  168.                     }
  169.                 }
  170.             }
  171.         }
  172.     }
  173.     return Plugin_Continue;
  174. }
  175.  
  176. public bool IsValidClient(int client)
  177. {
  178.     if (client <= 0)
  179.         return false;
  180.        
  181.     if (client > MaxClients)
  182.         return false;
  183.        
  184.     if (!IsClientInGame(client))
  185.         return false;
  186.        
  187.     if (!IsPlayerAlive(client))
  188.         return false;
  189.  
  190.     return true;
  191. }
Advertisement
Add Comment
Please, Sign In to add comment