FlacoBey

Untitled

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