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
- new bool:lateLoad;
- public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax)
- {
- lateLoad = late;
- return APLRes_Success;
- }
- public OnPluginStart()
- {
- if (lateLoad)
- {
- for (new client = 1; client <= MaxClients; client++)
- {
- if (IsClientInGame(client))
- {
- OnClientPutInServer(client);
- }
- }
- }
- char path[PLATFORM_MAX_PATH];
- BuildPath(Path_SM, path, PLATFORM_MAX_PATH, "data/damage.ini");
- KvWriteToFile(path);
- }
- void KvWriteToFile(const char[] path)
- {
- KeyValues kv = new KeyValues("damage_modifier");
- kv.SetNum("weapon_autoshotgun/damage_m", 1);
- kv.SetNum("weapon_hunting_rifle/damage_m", 1);
- kv.SetNum("weapon_pistol/damage_m", 1);
- kv.SetNum("weapon_rifle_ak47/damage_m", 1);
- kv.SetNum("weapon_rifle/damage_m", 1);
- kv.SetNum("weapon_pumpshotgun/damage_m", 1);
- kv.SetNum("weapon_sniper_awp/damage_m", 1);
- kv.SetNum("weapon_machete/damage_m", 1);
- kv.SetNum("weapon_fireaxe/damage_m", 1);
- kv.ExportToFile(path);
- delete kv;
- }
- 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)
- {
- char pathKey[128];
- KeyValues kv = new KeyValues("damage_modifier");
- if (kv.ImportFromFile(pathKey))
- {
- if(bIsSurvivor(attacker))
- {
- decl String:classname[64];
- GetClientWeapon(attacker, classname, sizeof(classname));
- char b[64];
- KvGetSectionName(kv, b, sizeof(b));
- if (StrEqual(b, classname))
- {
- new num = KvGetNum(kv, "damage_m", 1);
- damage *= num;
- int health = GetClientHealth(victim);
- PrintToChatAll("%i", health);
- return Plugin_Changed;
- }
- }
- }
- return Plugin_Continue;
- }
- stock bool bIsSurvivor(int client)
- {
- return client > 0 && client <= MaxClients && IsClientInGame(client) && GetClientTeam(client) == 2 && !IsClientInKickQueue(client) && IsPlayerAlive(client);
- }
Advertisement
Add Comment
Please, Sign In to add comment