Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sourcemod>
- #include <sdktools>
- #include <sdkhooks>
- #pragma semicolon 1
- #pragma tabsize 0
- new bool:isChatLog = false;
- new bool:lateLoad;
- char sDataFilePath[PLATFORM_MAX_PATH];
- public APLRes:AskPluginLoad2(Handle:plugin, bool:late, String:error[], errMax)
- {
- lateLoad = late;
- return APLRes_Success;
- }
- public OnPluginStart()
- {
- RegAdminCmd("sm_damagelog", DamageLog, ADMFLAG_ROOT);
- if (lateLoad)
- {
- for (new client = 1; client <= MaxClients; client++)
- {
- if (IsClientInGame(client))
- {
- OnClientPutInServer(client);
- }
- }
- }
- BuildPath(Path_SM, sDataFilePath, sizeof(sDataFilePath), "data/melee_damage_specials_test.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);
- }
- }
- void KvWriteToFile(const char[] path)
- {
- KeyValues kv = new KeyValues("damage_melee");
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_baseball_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_cricket_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_crowbar/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_electric_guitar/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_fireaxe/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_frying_pan/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_golfclub/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_katana/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_machete/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_tonfa/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_knife/damage", 1);
- kv.SetNum("ZOMBIECLASS_SMOKER/weapon_chainsaw/damage", 1);
- // boomer
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_baseball_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_cricket_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_crowbar/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_electric_guitar/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_fireaxe/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_frying_pan/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_golfclub/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_katana/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_machete/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_tonfa/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_knife/damage", 1);
- kv.SetNum("ZOMBIECLASS_BOOMER/weapon_chainsaw/damage", 1);
- // hunter
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_baseball_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_cricket_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_crowbar/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_electric_guitar/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_fireaxe/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_frying_pan/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_golfclub/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_katana/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_machete/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_tonfa/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_knife/damage", 1);
- kv.SetNum("ZOMBIECLASS_HUNTER/weapon_chainsaw/damage", 1);
- // spitter
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_baseball_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_cricket_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_crowbar/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_electric_guitar/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_frying_pan/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_golfclub/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_katana/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_machete/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_tonfa/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_knife/damage", 1);
- kv.SetNum("ZOMBIECLASS_SPITTER/weapon_chainsaw/damage", 1);
- // Jockey
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_baseball_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_cricket_bat/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_crowbar/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_electric_guitar/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_frying_pan/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_golfclub/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_katana/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_machete/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_tonfa/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_knife/damage", 1);
- kv.SetNum("ZOMBIECLASS_JOCKEY/weapon_chainsaw/damage", 1);
- kv.SetNum("ZOMBIECLASS_CHARGER/weapon_chainsaw/damage", 1);
- kv.SetNum("ZOMBIECLASS_TANK/weapon_chainsaw/damage", 1);
- kv.ExportToFile(path);
- delete kv;
- }
- public OnClientPutInServer(client)
- {
- SDKHook(client, SDKHook_TraceAttack, _SI_OnTraceAttack);
- }
- public OnClientDisconnect(client)
- {
- SDKUnhook(client, SDKHook_TraceAttack, _SI_OnTraceAttack);
- }
- public Action:_SI_OnTraceAttack(victim, &attacker, &inflictor, &Float:damage, &damagetype, &ammotype, hitbox, hitgroup)
- {
- decl String:clsname[64];
- GetEdictClassname(inflictor, clsname, 64);
- if (StrEqual(clsname, "weapon_melee") || StrEqual(clsname, "weapon_chainsaw"))
- {
- KeyValues kv = new KeyValues("damage_melee");
- if (kv.ImportFromFile(sDataFilePath))
- {
- decl String:classname[64];
- GetClientWeapon(attacker, classname, sizeof(classname));
- if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 1)
- {
- if (KvJumpToKey(kv, "ZOMBIECLASS_SMOKER", true))
- {
- if (KvJumpToKey(kv, classname, true))
- {
- new num = KvGetNum(kv, "damage", 1);
- damage = (damage * 0) + num;
- if (isChatLog == true)
- {
- int heal = GetClientHealth(victim);
- PrintToChatAll("SmokerHealth=%i", heal);
- }
- return Plugin_Changed;
- }
- }
- }
- else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 2)
- {
- if (KvJumpToKey(kv, "ZOMBIECLASS_BOOMER", true))
- {
- if (KvJumpToKey(kv, classname, true))
- {
- new num = KvGetNum(kv, "damage", 1);
- damage = (damage * 0) + num;
- if(isChatLog == true)
- {
- int heal = GetClientHealth(victim);
- PrintToChatAll("BoomerHealth=%i", heal);
- }
- return Plugin_Changed;
- }
- }
- }
- else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 3)
- {
- if (KvJumpToKey(kv, "ZOMBIECLASS_HUNTER", true))
- {
- if (KvJumpToKey(kv, classname, true))
- {
- new num = KvGetNum(kv, "damage", 1);
- damage = (damage * 0) + num;
- if(isChatLog == true)
- {
- int heal = GetClientHealth(victim);
- PrintToChatAll("HunterHealth=%i", heal);
- }
- return Plugin_Changed;
- }
- }
- }
- else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 4)
- {
- if (KvJumpToKey(kv, "ZOMBIECLASS_SPITTER", true))
- {
- if (KvJumpToKey(kv, classname, true))
- {
- new num = KvGetNum(kv, "damage", 1);
- damage = (damage * 0) + num;
- if(isChatLog == true)
- {
- int heal = GetClientHealth(victim);
- PrintToChatAll("SpitterHealth=%i", heal);
- }
- return Plugin_Changed;
- }
- }
- }
- else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 5)
- {
- if (KvJumpToKey(kv, "ZOMBIECLASS_JOCKEY", true))
- {
- if (KvJumpToKey(kv, classname, true))
- {
- new num = KvGetNum(kv, "damage", 1);
- damage = (damage * 0) + num;
- if(isChatLog == true)
- {
- int heal = GetClientHealth(victim);
- PrintToChatAll("JockeyHealth=%i", heal);
- }
- return Plugin_Changed;
- }
- }
- }
- else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 6)
- {
- if (KvJumpToKey(kv, "ZOMBIECLASS_CHARGER", true))
- {
- if (KvJumpToKey(kv, classname, true))
- {
- new num = KvGetNum(kv, "damage", 1);
- damage = (damage * 0) + num;
- if(isChatLog == true)
- {
- int heal = GetClientHealth(victim);
- PrintToChatAll("ChargerHealth=%i", heal);
- }
- return Plugin_Changed;
- }
- }
- }
- else if(GetEntProp(victim, Prop_Send, "m_zombieClass") == 8)
- {
- if (KvJumpToKey(kv, "ZOMBIECLASS_TANK", true))
- {
- if (KvJumpToKey(kv, classname, true))
- {
- new num = KvGetNum(kv, "damage", 1);
- damage = (damage * 0) + num;
- if(isChatLog == true)
- {
- int heal = GetClientHealth(victim);
- PrintToChatAll("TankHealth=%i", heal);
- }
- return Plugin_Changed;
- }
- }
- }
- }
- }
- return Plugin_Continue;
- }
- public Action:DamageLog(i, args)
- {
- if(isChatLog == false)
- {
- isChatLog = true;
- PrintToChatAll("Логирование урона рукопашным оружеем включено.");
- }
- else if(isChatLog == true)
- {
- isChatLog = false;
- PrintToChatAll("Логирование урона рукопашным оружеем выключено.");
- }
- }
- 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