Advertisement
FlacoBey

Untitled

Jan 30th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.81 KB | None | 0 0
  1. #include <sourcemod>
  2. #include <sdktools>
  3. #include <sdkhooks>
  4.  
  5. #pragma semicolon 1
  6. #pragma tabsize 0
  7.  
  8. new bool:lateLoad;
  9. char sDataFilePath[PLATFORM_MAX_PATH];
  10. int num;
  11. float fTargetDistance;
  12.  
  13. public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax)
  14. {
  15.     lateLoad = late;
  16.     return APLRes_Success;    
  17. }
  18.  
  19. public OnPluginStart()
  20. {
  21.     if (lateLoad)
  22.     {
  23.         for (new client = 1; client <= MaxClients; client++)
  24.         {
  25.             if (IsClientInGame(client))
  26.             {
  27.                 OnClientPutInServer(client);
  28.             }
  29.         }
  30.     }
  31.     BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/weapons_distance.ini");
  32.     if (!FileExists(sDataFilePath))
  33.     {
  34.         new Handle:open_path = OpenFile(sDataFilePath, "w");
  35.         WriteFileLine(open_path, "");
  36.         CloseHandle(open_path);
  37.         PrintToServer("Error Code: WSP-EC-01A");
  38.         KvWriteToFile(sDataFilePath);
  39.     }
  40. }
  41.  
  42. void KvWriteToFile(const char[] path)
  43. {
  44.     KeyValues kv = new KeyValues("Distance");
  45.     kv.SetNum("DistanceForEveryWeapon", 1);
  46.     kv.SetNum("DistanceForEveryWeapon_2", 1);
  47.     kv.SetNum("DistanceForEveryWeapon_3", 1);
  48.     kv.SetNum("DistanceForEveryWeapon_4", 1);
  49.     kv.SetNum("DistanceForEveryWeapon_5", 1);
  50.    
  51.     kv.SetNum("weapon_autoshotgun/Damage", 1);
  52.     kv.SetNum("weapon_hunting_rifle/Damage", 1);
  53.     kv.SetNum("weapon_pistol/Damage", 1);
  54.     kv.SetNum("weapon_rifle_ak47/Damage", 1);
  55.     kv.SetNum("weapon_rifle/Damage", 1);
  56.     kv.SetNum("weapon_pumpshotgun/Damage", 1);
  57.     kv.SetNum("weapon_sniper_awp/Damage", 1);
  58.     kv.SetNum("weapon_shotgun_chrome/Damage", 1);
  59.     kv.SetNum("weapon_pistol_magnum/Damage", 1);
  60.     kv.SetNum("weapon_grenade_launcher/Damage", 1);
  61.     kv.SetNum("weapon_shotgun_spas/Damage", 1);
  62.     kv.SetNum("weapon_smg/Damage", 1);
  63.     kv.SetNum("weapon_smg_mp5 /Damage", 1);
  64.     kv.SetNum("weapon_smg_silenced/Damage", 1);
  65.     kv.SetNum("weapon_sniper_military/Damage", 1);
  66.     kv.SetNum("weapon_rifle_sg552/Damage", 1);
  67.     kv.SetNum("weapon_sniper_scout/Damage", 1);
  68.     kv.SetNum("weapon_rifle_m60/Damage", 1);
  69.     kv.SetNum("weapon_rifle_desert/Damage", 1);
  70.    
  71.     kv.SetNum("weapon_autoshotgun/Damage_2", 1);
  72.     kv.SetNum("weapon_hunting_rifle/Damage_2", 1);
  73.     kv.SetNum("weapon_pistol/Damage_2", 1);
  74.     kv.SetNum("weapon_rifle_ak47/Damage_2", 1);
  75.     kv.SetNum("weapon_rifle/Damage_2", 1);
  76.     kv.SetNum("weapon_pumpshotgun/Damage_2", 1);
  77.     kv.SetNum("weapon_sniper_awp/Damage_2", 1);
  78.     kv.SetNum("weapon_shotgun_chrome/Damage_2", 1);
  79.     kv.SetNum("weapon_pistol_magnum/Damage_2", 1);
  80.     kv.SetNum("weapon_grenade_launcher/Damage_2", 1);
  81.     kv.SetNum("weapon_shotgun_spas/Damage_2", 1);
  82.     kv.SetNum("weapon_smg/Damage_2", 1);
  83.     kv.SetNum("weapon_smg_mp5 /Damage_2", 1);
  84.     kv.SetNum("weapon_smg_silenced/Damage_2", 1);
  85.     kv.SetNum("weapon_sniper_military/Damage_2", 1);
  86.     kv.SetNum("weapon_rifle_sg552/Damage_2", 1);
  87.     kv.SetNum("weapon_sniper_scout/Damage_2", 1);
  88.     kv.SetNum("weapon_rifle_m60/Damage_2", 1);
  89.     kv.SetNum("weapon_rifle_desert/Damage_2", 1);
  90.    
  91.     kv.SetNum("weapon_autoshotgun/Damage_3", 1);
  92.     kv.SetNum("weapon_hunting_rifle/Damage_3", 1);
  93.     kv.SetNum("weapon_pistol/Damage_3", 1);
  94.     kv.SetNum("weapon_rifle_ak47/Damage_3", 1);
  95.     kv.SetNum("weapon_rifle/Damage_3", 1);
  96.     kv.SetNum("weapon_pumpshotgun/Damage_3", 1);
  97.     kv.SetNum("weapon_sniper_awp/Damage_3", 1);
  98.     kv.SetNum("weapon_shotgun_chrome/Damage_3", 1);
  99.     kv.SetNum("weapon_pistol_magnum/Damage_3", 1);
  100.     kv.SetNum("weapon_grenade_launcher/Damage_3", 1);
  101.     kv.SetNum("weapon_shotgun_spas/Damage_3", 1);
  102.     kv.SetNum("weapon_smg/Damage_3", 1);
  103.     kv.SetNum("weapon_smg_mp5 /Damage_3", 1);
  104.     kv.SetNum("weapon_smg_silenced/Damage_3", 1);
  105.     kv.SetNum("weapon_sniper_military/Damage_3", 1);
  106.     kv.SetNum("weapon_rifle_sg552/Damage_3", 1);
  107.     kv.SetNum("weapon_sniper_scout/Damage_3", 1);
  108.     kv.SetNum("weapon_rifle_m60/Damage_3", 1);
  109.     kv.SetNum("weapon_rifle_desert/Damage_3", 1);
  110.    
  111.     kv.SetNum("weapon_autoshotgun/Damage_4", 1);
  112.     kv.SetNum("weapon_hunting_rifle/Damage_4", 1);
  113.     kv.SetNum("weapon_pistol/Damage_4", 1);
  114.     kv.SetNum("weapon_rifle_ak47/Damage_4", 1);
  115.     kv.SetNum("weapon_rifle/Damage_4", 1);
  116.     kv.SetNum("weapon_pumpshotgun/Damage_4", 1);
  117.     kv.SetNum("weapon_sniper_awp/Damage_4", 1);
  118.     kv.SetNum("weapon_shotgun_chrome/Damage_4", 1);
  119.     kv.SetNum("weapon_pistol_magnum/Damage_4", 1);
  120.     kv.SetNum("weapon_grenade_launcher/Damage_4", 1);
  121.     kv.SetNum("weapon_shotgun_spas/Damage_4", 1);
  122.     kv.SetNum("weapon_smg/Damage_4", 1);
  123.     kv.SetNum("weapon_smg_mp5 /Damage_4", 1);
  124.     kv.SetNum("weapon_smg_silenced/Damage_4", 1);
  125.     kv.SetNum("weapon_sniper_military/Damage_4", 1);
  126.     kv.SetNum("weapon_rifle_sg552/Damage_4", 1);
  127.     kv.SetNum("weapon_sniper_scout/Damage_4", 1);
  128.     kv.SetNum("weapon_rifle_m60/Damage_4", 1);
  129.     kv.SetNum("weapon_rifle_desert/Damage_4", 1);
  130.    
  131.     kv.SetNum("weapon_autoshotgun/Damage_5", 1);
  132.     kv.SetNum("weapon_hunting_rifle/Damage_5", 1);
  133.     kv.SetNum("weapon_pistol/Damage_5", 1);
  134.     kv.SetNum("weapon_rifle_ak47/Damage_5", 1);
  135.     kv.SetNum("weapon_rifle/Damage_5", 1);
  136.     kv.SetNum("weapon_pumpshotgun/Damage_5", 1);
  137.     kv.SetNum("weapon_sniper_awp/Damage_5", 1);
  138.     kv.SetNum("weapon_shotgun_chrome/Damage_5", 1);
  139.     kv.SetNum("weapon_pistol_magnum/Damage_5", 1);
  140.     kv.SetNum("weapon_grenade_launcher/Damage_5", 1);
  141.     kv.SetNum("weapon_shotgun_spas/Damage_5", 1);
  142.     kv.SetNum("weapon_smg/Damage_5", 1);
  143.     kv.SetNum("weapon_smg_mp5 /Damage_5", 1);
  144.     kv.SetNum("weapon_smg_silenced/Damage_5", 1);
  145.     kv.SetNum("weapon_sniper_military/Damage_5", 1);
  146.     kv.SetNum("weapon_rifle_sg552/Damage_5", 1);
  147.     kv.SetNum("weapon_sniper_scout/Damage_5", 1);
  148.     kv.SetNum("weapon_rifle_m60/Damage_5", 1);
  149.     kv.SetNum("weapon_rifle_desert/Damage_5", 1);
  150.  
  151.     kv.ExportToFile(path);
  152.  
  153.     delete kv;
  154. }
  155.  
  156. public OnClientPutInServer(client)
  157. {
  158.     SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
  159. }
  160.  
  161. public OnClientDisconnect(client)
  162. {
  163.     SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
  164. }
  165.  
  166. public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)  
  167. {
  168.     if (IsValidInfected(victim))
  169.     {
  170.         KeyValues kv = new KeyValues("Distance");
  171.         if (kv.ImportFromFile(sDataFilePath))
  172.         {
  173.             new DistanceI = KvGetNum(kv, "DistanceForEveryWeapon", 1);
  174.             new DistanceI2 = KvGetNum(kv, "DistanceForEveryWeapon_2", 1);
  175.             new DistanceI3 = KvGetNum(kv, "DistanceForEveryWeapon_3", 1);
  176.             new DistanceI4 = KvGetNum(kv, "DistanceForEveryWeapon_4", 1);
  177.             new DistanceI5 = KvGetNum(kv, "DistanceForEveryWeapon_5", 1);
  178.             decl String:classname[64];
  179.             GetClientWeapon(attacker, classname, sizeof(classname));
  180.             if (KvJumpToKey(kv, classname, true))
  181.             {
  182.                 float fDamagerPos[3], fDangerPos[3];
  183.                 GetEntPropVector(attacker, Prop_Send, "m_vecOrigin", fDamagerPos);
  184.                 GetEntPropVector(victim, Prop_Send, "m_vecOrigin", fDangerPos);
  185.                 fTargetDistance = GetVectorDistance(fDamagerPos, fDangerPos);
  186.                 if (fTargetDistance > DistanceI5)
  187.                 {
  188.                     num = KvGetNum(kv, "Damage_5", 1);
  189.                     damage -= num;
  190.                 }
  191.                 else if (fTargetDistance > DistanceI4)
  192.                 {
  193.                     num = KvGetNum(kv, "Damage_4", 1);
  194.                     damage -= num;
  195.                 }
  196.                 else if (fTargetDistance > DistanceI3)
  197.                 {
  198.                     num = KvGetNum(kv, "Damage_3", 1);
  199.                     damage -= num;
  200.                 }
  201.                 else if (fTargetDistance > DistanceI2)
  202.                 {
  203.                     num = KvGetNum(kv, "Damage_2", 1);
  204.                     damage -= num;
  205.                 }
  206.                 else if (fTargetDistance > DistanceI)
  207.                 {
  208.                     num = KvGetNum(kv, "Damage", 1);
  209.                     damage -= num;
  210.                 }
  211.                 return Plugin_Changed;
  212.             }
  213.         }
  214.     }
  215.  
  216.     return Plugin_Continue;
  217. }
  218.  
  219. stock bool:IsValidInfected( client )
  220. {
  221.     if ( client < 1 || client > MaxClients ) return false;
  222.     if ( !IsClientConnected( client )) return false;
  223.     if ( !IsClientInGame( client )) return false;
  224.     if ( GetClientTeam( client ) != 3 ) return false;
  225.     return true;
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement