FlacoBey

Untitled

Jan 6th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.23 KB | None | 0 0
  1. #include <sourcemod>
  2. #include <sdktools>
  3. #include <sdkhooks>
  4.  
  5. #pragma semicolon 1
  6.  
  7. #define ZOMBIECLASS_CHARGER 6
  8.  
  9. int hitgroup;
  10. new bool:g_HeadShot;
  11. new bool:lateLoad;
  12. char sDataFilePath[PLATFORM_MAX_PATH];
  13. new bool:Chat = false;
  14. public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax)
  15. {
  16.     lateLoad = late;
  17.     return APLRes_Success;    
  18. }
  19.  
  20. public OnPluginStart()
  21. {
  22.     RegAdminCmd("sm_dmgс", blyat, ADMFLAG_ROOT);
  23.     if (lateLoad)
  24.     {
  25.         for (new client = 1; client <= MaxClients; client++)
  26.         {
  27.             if (IsClientInGame(client))
  28.             {
  29.                 OnClientPutInServer(client);
  30.             }
  31.         }
  32.     }
  33.     BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/weapons_damage_charger.ini");
  34.     if (!FileExists(sDataFilePath))
  35.     {
  36.         new Handle:open_path = OpenFile(sDataFilePath, "w");
  37.         WriteFileLine(open_path, "");
  38.         CloseHandle(open_path);
  39.         PrintToServer("Error Code: WSP-EC-01A");
  40.         KvWriteToFile(sDataFilePath);
  41.     }
  42.     HookEvent("player_hurt", OnPlayerHurt);
  43. }
  44.  
  45. void KvWriteToFile(const char[] path)
  46. {
  47.     KeyValues kv = new KeyValues("damage_modifier");
  48.     kv.SetNum("weapon_autoshotgun/charger_damage", 1);
  49.     kv.SetNum("weapon_hunting_rifle/charger_damage", 1);
  50.     kv.SetNum("weapon_pistol/charger_damage", 1);
  51.     kv.SetNum("weapon_rifle_ak47/charger_damage", 1);
  52.     kv.SetNum("weapon_rifle/charger_damage", 1);
  53.     kv.SetNum("weapon_pumpshotgun/charger_damage", 1);
  54.     kv.SetNum("weapon_sniper_awp/charger_damage", 1);
  55.     kv.SetNum("weapon_shotgun_chrome/charger_damage", 1);
  56.     kv.SetNum("weapon_pistol_magnum/charger_damage", 1);
  57.     kv.SetNum("weapon_shotgun_spas/charger_damage", 1);
  58.     kv.SetNum("weapon_smg/charger_damage", 1);
  59.     kv.SetNum("weapon_smg_mp5 /charger_damage", 1);
  60.     kv.SetNum("weapon_smg_silenced/charger_damage", 1);
  61.     kv.SetNum("weapon_sniper_military/charger_damage", 1);
  62.     kv.SetNum("weapon_rifle_sg552/charger_damage", 1);
  63.     kv.SetNum("weapon_sniper_scout/charger_damage", 1);
  64.     kv.SetNum("weapon_rifle_m60/charger_damage", 1);
  65.     kv.SetNum("weapon_rifle_desert/charger_damage", 1);
  66.     kv.SetNum("weapon_autoshotgun/charger_damage_headshot", 1);
  67.     kv.SetNum("weapon_hunting_rifle/charger_damage_headshot_headshot", 1);
  68.     kv.SetNum("weapon_pistol/charger_damage_headshot_headshot", 1);
  69.     kv.SetNum("weapon_rifle_ak47/charger_damage_headshot_headshot", 1);
  70.     kv.SetNum("weapon_rifle/charger_damage_headshot_headshot", 1);
  71.     kv.SetNum("weapon_pumpshotgun/charger_damage_headshot_headshot", 1);
  72.     kv.SetNum("weapon_sniper_awp/charger_damage_headshot_headshot", 1);
  73.     kv.SetNum("weapon_shotgun_chrome/charger_damage_headshot_headshot", 1);
  74.     kv.SetNum("weapon_pistol_magnum/charger_damage_headshot_headshot", 1);
  75.     kv.SetNum("weapon_shotgun_spas/charger_damage_headshot_headshot", 1);
  76.     kv.SetNum("weapon_smg/charger_damage_headshot_headshot", 1);
  77.     kv.SetNum("weapon_smg_mp5 /charger_damage_headshot_headshot", 1);
  78.     kv.SetNum("weapon_smg_silenced/charger_damage_headshot_headshot", 1);
  79.     kv.SetNum("weapon_sniper_military/charger_damage_headshot_headshot", 1);
  80.     kv.SetNum("weapon_rifle_sg552/charger_damage_headshot_headshot", 1);
  81.     kv.SetNum("weapon_sniper_scout/charger_damage_headshot_headshot", 1);
  82.     kv.SetNum("weapon_rifle_m60/charger_damage_headshot_headshot", 1);
  83.     kv.SetNum("weapon_rifle_desert/charger_damage_headshot_headshot", 1);
  84.  
  85.     kv.ExportToFile(path);
  86.  
  87.     delete kv;
  88. }
  89.  
  90. public Action:blyat(client, args)
  91. {
  92.     if(Chat == false)
  93.     {
  94.         PrintToChatAll("%N выключил лог урона по громиле.", client);
  95.         Chat = true;
  96.     }
  97.     else if(Chat == true)
  98.     {
  99.         PrintToChatAll("%N включил лог урона по громиле.", client);
  100.         Chat = false;
  101.     }
  102. }
  103.  
  104. public Action:OnPlayerHurt(Handle:event, const String:name[], bool:dontBrodcast)
  105. {
  106.     hitgroup = GetEventInt(event, "hitgroup");
  107.     SetEventInt(event, "dmg_health", 0);
  108.    
  109.     if(hitgroup == 1)
  110.     {
  111.         g_HeadShot = true;
  112.     }
  113.     else
  114.     {
  115.         g_HeadShot = false;
  116.     }
  117. }
  118.  
  119. public OnClientPutInServer(client)
  120. {
  121.     SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
  122. }
  123.  
  124. public OnClientDisconnect(client)
  125. {
  126.     SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
  127. }
  128.  
  129. public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)  
  130. {
  131.     if (!(damagetype & DMG_BURN || damagetype & DMG_BLAST))
  132.     {
  133.         if (IsValidCharger(victim))
  134.         {
  135.             if(IsValidClient(victim))
  136.             {
  137.                 decl String:classname[64];
  138.                 GetClientWeapon(attacker, classname, sizeof(classname));
  139.                 KeyValues kv = new KeyValues("damage_modifier");
  140.                 if (kv.ImportFromFile(sDataFilePath))
  141.                 {
  142.                     if (KvJumpToKey(kv, classname, true))
  143.                     {
  144.                         if(Chat == true)
  145.                         {
  146.                             int heal = GetClientHealth(victim);
  147.                             PrintToChatAll("Charger=%i", heal);
  148.                         }
  149.                         new num = KvGetNum(kv, "charger_damage", 1);
  150.                         damage = (damage * 0) + num;
  151.                         if(g_HeadShot == true)
  152.                         {
  153.                             num = KvGetNum(kv, "charger_damage_headshot_headshot", 1);
  154.                             damage = (damage * 0) + num;
  155.                         }
  156.                         return Plugin_Changed;
  157.                     }
  158.                 }
  159.             }
  160.         }
  161.     }
  162.     return Plugin_Continue;
  163. }
  164.  
  165. public IsValidCharger(client)
  166. {
  167.     if (IsValidClient(client) && GetClientTeam(client) == 3)
  168.     {
  169.         new class = GetEntProp(client, Prop_Send, "m_zombieClass");
  170.        
  171.         if (class == ZOMBIECLASS_CHARGER)
  172.             return true;
  173.        
  174.         return false;
  175.     }
  176.    
  177.     return false;
  178. }
  179.  
  180. public IsValidClient(client)
  181. {
  182.     if (client <= 0)
  183.         return false;
  184.        
  185.     if (client > MaxClients)
  186.         return false;
  187.        
  188.     if (!IsClientInGame(client))
  189.         return false;
  190.        
  191.     if (!IsPlayerAlive(client))
  192.         return false;
  193.  
  194.     return true;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment