FlacoBey

Untitled

Jan 4th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.29 KB | None | 0 0
  1. #include <sourcemod>
  2. #include <sdktools>
  3. #include <sdkhooks>
  4.  
  5. #pragma semicolon 1
  6.  
  7. #define ZOMBIECLASS_TANK 8
  8.  
  9. new bool:lateLoad;
  10. char sDataFilePath[PLATFORM_MAX_PATH];
  11.  
  12. public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax)
  13. {
  14.     lateLoad = late;
  15.     return APLRes_Success;    
  16. }
  17.  
  18. public
  19.  
  20. public OnPluginStart()
  21. {
  22.     if (lateLoad)
  23.     {
  24.         for (new client = 1; client <= MaxClients; client++)
  25.         {
  26.             if (IsClientInGame(client))
  27.             {
  28.                 OnClientPutInServer(client);
  29.             }
  30.         }
  31.     }
  32.     BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/weapons_damage_charger.ini");
  33.     if (!FileExists(sDataFilePath))
  34.     {
  35.         new Handle:open_path = OpenFile(sDataFilePath, "w");
  36.         WriteFileLine(open_path, "");
  37.         CloseHandle(open_path);
  38.         PrintToServer("Error Code: WSP-EC-01A");
  39.         KvWriteToFile(sDataFilePath);
  40.     }
  41. }
  42.  
  43. void KvWriteToFile(const char[] path)
  44. {
  45.     KeyValues kv = new KeyValues("DamageCharger_1337BHaType");
  46.     kv.SetNum("weapon_autoshotgun/DamageForCharger", 1);
  47.     kv.SetNum("weapon_hunting_rifle/DamageForCharger", 1);
  48.     kv.SetNum("weapon_pistol/DamageForCharger", 1);
  49.     kv.SetNum("weapon_rifle_ak47/DamageForCharger", 1);
  50.     kv.SetNum("weapon_rifle/DamageForCharger", 1);
  51.     kv.SetNum("weapon_pumpshotgun/DamageForCharger", 1);
  52.     kv.SetNum("weapon_sniper_awp/DamageForCharger", 1);
  53.     kv.SetNum("weapon_shotgun_chrome/DamageForCharger", 1);
  54.     kv.SetNum("weapon_pistol_magnum/DamageForCharger", 1);
  55.     kv.SetNum("weapon_grenade_launcher/DamageForCharger", 1);
  56.     kv.SetNum("weapon_shotgun_spas/DamageForCharger", 1);
  57.     kv.SetNum("weapon_smg/DamageForCharger", 1);
  58.     kv.SetNum("weapon_smg_mp5 /DamageForCharger", 1);
  59.     kv.SetNum("weapon_smg_silenced/DamageForCharger", 1);
  60.     kv.SetNum("weapon_sniper_military/DamageForCharger", 1);
  61.     kv.SetNum("weapon_rifle_sg552/DamageForCharger", 1);
  62.     kv.SetNum("weapon_sniper_scout/DamageForCharger", 1);
  63.     kv.SetNum("weapon_rifle_m60/DamageForCharger", 1);
  64.     kv.SetNum("weapon_rifle_desert/DamageForCharger", 1);
  65.  
  66.  
  67.     kv.ExportToFile(path);
  68.  
  69.     delete kv;
  70. }
  71.  
  72. public OnClientPutInServer(client)
  73. {
  74.     SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
  75. }
  76.  
  77. public OnClientDisconnect(client)
  78. {
  79.     SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
  80. }
  81.  
  82. public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)  
  83. {
  84.     if (IsValidCharger(victim))
  85.     {
  86.         KeyValues kv = new KeyValues("DamageCharger_1337BHaType");
  87.         if (kv.ImportFromFile(sDataFilePath))
  88.         {
  89.             decl String:classname[64];
  90.             GetClientWeapon(attacker, classname, sizeof(classname));
  91.             if (KvJumpToKey(kv, classname, true))
  92.             {
  93.                 new num = KvGetNum(kv, "DamageForCharger", 1);
  94.                 damage += (damage * 0) + num;
  95.                 return Plugin_Changed;
  96.             }
  97.         }
  98.     }
  99.  
  100.     return Plugin_Continue;
  101. }
  102.  
  103. public IsValidCharger(client)
  104. {
  105.     if (IsValidClient(client) && GetClientTeam(client) == 3)
  106.     {
  107.         new class = GetEntProp(client, Prop_Send, "m_zombieClass");
  108.        
  109.         if (class == ZOMBIECLASS_CHARGER)
  110.             return true;
  111.        
  112.         return false;
  113.     }
  114.    
  115.     return false;
  116. }
  117.  
  118. public IsValidClient(client)
  119. {
  120.     if (client <= 0)
  121.         return false;
  122.        
  123.     if (client > MaxClients)
  124.         return false;
  125.        
  126.     if (!IsClientInGame(client))
  127.         return false;
  128.        
  129.     if (!IsPlayerAlive(client))
  130.         return false;
  131.  
  132.     return true;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment