Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdktools>
- #include <sdkhooks>
- #pragma semicolon 1
- #define ZOMBIECLASS_CHARGER 6
- int hitgroup;
- new bool:g_HeadShot;
- new bool:lateLoad;
- char sDataFilePath[PLATFORM_MAX_PATH];
- new bool:Chat = false;
- public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax)
- {
- lateLoad = late;
- return APLRes_Success;
- }
- public OnPluginStart()
- {
- RegAdminCmd("sm_dmgс", blyat, ADMFLAG_ROOT);
- if (lateLoad)
- {
- for (new client = 1; client <= MaxClients; client++)
- {
- if (IsClientInGame(client))
- {
- OnClientPutInServer(client);
- }
- }
- }
- BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/weapons_damage_charger.ini");
- if (!FileExists(sDataFilePath))
- {
- new Handle:open_path = OpenFile(sDataFilePath, "w");
- WriteFileLine(open_path, "");
- CloseHandle(open_path);
- PrintToServer("Error Code: WSP-EC-01A");
- KvWriteToFile(sDataFilePath);
- }
- HookEvent("player_hurt", OnPlayerHurt);
- }
- void KvWriteToFile(const char[] path)
- {
- KeyValues kv = new KeyValues("damage_modifier");
- kv.SetNum("weapon_autoshotgun/charger_damage", 1);
- kv.SetNum("weapon_hunting_rifle/charger_damage", 1);
- kv.SetNum("weapon_pistol/charger_damage", 1);
- kv.SetNum("weapon_rifle_ak47/charger_damage", 1);
- kv.SetNum("weapon_rifle/charger_damage", 1);
- kv.SetNum("weapon_pumpshotgun/charger_damage", 1);
- kv.SetNum("weapon_sniper_awp/charger_damage", 1);
- kv.SetNum("weapon_shotgun_chrome/charger_damage", 1);
- kv.SetNum("weapon_pistol_magnum/charger_damage", 1);
- kv.SetNum("weapon_shotgun_spas/charger_damage", 1);
- kv.SetNum("weapon_smg/charger_damage", 1);
- kv.SetNum("weapon_smg_mp5 /charger_damage", 1);
- kv.SetNum("weapon_smg_silenced/charger_damage", 1);
- kv.SetNum("weapon_sniper_military/charger_damage", 1);
- kv.SetNum("weapon_rifle_sg552/charger_damage", 1);
- kv.SetNum("weapon_sniper_scout/charger_damage", 1);
- kv.SetNum("weapon_rifle_m60/charger_damage", 1);
- kv.SetNum("weapon_rifle_desert/charger_damage", 1);
- kv.SetNum("weapon_autoshotgun/charger_damage_headshot", 1);
- kv.SetNum("weapon_hunting_rifle/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_pistol/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_rifle_ak47/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_rifle/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_pumpshotgun/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_sniper_awp/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_shotgun_chrome/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_pistol_magnum/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_shotgun_spas/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_smg/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_smg_mp5 /charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_smg_silenced/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_sniper_military/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_rifle_sg552/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_sniper_scout/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_rifle_m60/charger_damage_headshot_headshot", 1);
- kv.SetNum("weapon_rifle_desert/charger_damage_headshot_headshot", 1);
- kv.ExportToFile(path);
- delete kv;
- }
- public Action:blyat(client, args)
- {
- if(Chat == true)
- {
- PrintToChatAll("%N выключил лог урона по громиле.", client);
- Chat = false;
- }
- else if(Chat == false)
- {
- PrintToChatAll("%N включил лог урона по громиле.", client);
- Chat = true;
- }
- }
- public Action:OnPlayerHurt(Handle:event, const String:name[], bool:dontBrodcast)
- {
- hitgroup = GetEventInt(event, "hitgroup");
- SetEventInt(event, "dmg_health", 0);
- if(hitgroup == 1)
- {
- g_HeadShot = true;
- }
- else
- {
- g_HeadShot = false;
- }
- }
- public OnClientPutInServer(client)
- {
- SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
- }
- public OnClientDisconnect(client)
- {
- SDKUnhook(client, SDKHook_OnTakeDamage, OnTakeDamage);
- }
- public Action:OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype)
- {
- if (!(damagetype & DMG_BURN || damagetype & DMG_BLAST))
- {
- if (IsValidCharger(victim))
- {
- if(IsValidClient(victim))
- {
- decl String:classname[64];
- GetClientWeapon(attacker, classname, sizeof(classname));
- KeyValues kv = new KeyValues("damage_modifier");
- if (kv.ImportFromFile(sDataFilePath))
- {
- if (KvJumpToKey(kv, classname, true))
- {
- if(Chat == true)
- {
- int heal = GetClientHealth(victim);
- PrintToChatAll("Charger=%i", heal);
- }
- new num = KvGetNum(kv, "charger_damage", 1);
- damage = (damage * 0) + num;
- if(g_HeadShot == true)
- {
- num = KvGetNum(kv, "charger_damage_headshot_headshot", 1);
- damage = (damage * 0) + num;
- }
- return Plugin_Changed;
- }
- }
- }
- }
- }
- return Plugin_Continue;
- }
- public IsValidCharger(client)
- {
- if (IsValidClient(client) && GetClientTeam(client) == 3)
- {
- new class = GetEntProp(client, Prop_Send, "m_zombieClass");
- if (class == ZOMBIECLASS_CHARGER)
- return true;
- return false;
- }
- return false;
- }
- public IsValidClient(client)
- {
- if (client <= 0)
- return false;
- if (client > MaxClients)
- return false;
- if (!IsClientInGame(client))
- return false;
- if (!IsPlayerAlive(client))
- return false;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment