FlacoBey

Untitled

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