Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sdktools>
- #include <sdkhooks>
- #pragma newdecls required
- #pragma semicolon 1
- #pragma tabsize 0
- bool lateLoad;
- float ForAllMelees = 5.0;
- float KatanaAndTopor = 20.0;
- float CrowbarAndMachete = 9.0;
- float knife = 7.0;
- float ForAllMeleesT = 0.0;
- float KatanaAndToporT = 1.0;
- float CrowbarAndMacheteT = 0.5;
- float knifeT = 0.3;
- float ForAllMeleesC = 0.0;
- float KatanaAndToporC = 3.0;
- float CrowbarAndMacheteC = 2.0;
- float knifeC = 1.0;
- float ForAllMeleesHead = 5.0;
- float KatanaAndToporHead = 20.0;
- float CrowbarAndMacheteHead = 9.0;
- float knifeHead = 7.0;
- float ForAllMeleesTHead = 0.0;
- float KatanaAndToporTHead = 12.0;
- float CrowbarAndMacheteTHead = 6.0;
- float knifeTHead = 3.7;
- float ForAllMeleesCHead = 0.5;
- float KatanaAndToporCHead = 3.0;
- float CrowbarAndMacheteCHead = 2.0;
- float knifeCHead = 1.0;
- public APLRes AskPluginLoad2(Handle plugin, bool late, char[] erro, int errMax)
- {
- lateLoad = late;
- return APLRes_Success;
- }
- public void OnPluginStart()
- {
- if (lateLoad)
- {
- for (int client = 1; client <= MaxClients; client++)
- {
- if (IsClientInGame(client))
- {
- OnClientPutInServer(client);
- }
- }
- }
- }
- public void OnClientPutInServer(int client)
- {
- SDKHook(client, SDKHook_TraceAttack, OnTakeDamage);
- }
- public void OnClientDisconnect(int client)
- {
- SDKUnhook(client, SDKHook_TraceAttack, OnTakeDamage);
- }
- public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &ammotype, int hitbox, int hitgroup)
- {
- if (!(damagetype & DMG_BURN || damagetype & DMG_BLAST))
- {
- if (IsValidClient(attacker) && GetClientTeam(attacker) == 2)
- {
- if(IsValidClient(victim) && GetClientTeam(victim) == 3)
- {
- char classname[64];
- GetClientWeapon(attacker, classname, sizeof(classname));
- if(StrEqual(classname, "weapon_melee"))
- {
- GetEntPropString(GetPlayerWeaponSlot(attacker, 1), Prop_Data, "m_strMapSetScriptName", classname, sizeof(classname));
- }
- else return Plugin_Continue;
- int vClass = GetEntProp(victim, Prop_Send, "m_zombieClass");
- switch(vClass)
- {
- case 6:
- {
- if(StrEqual(classname, "knife"))
- {
- damage = knifeC;
- if(hitgroup == 1) damage = knifeCHead;
- return Plugin_Changed;
- }
- else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
- {
- damage = KatanaAndToporC;
- if(hitgroup == 1) damage = KatanaAndToporCHead;
- return Plugin_Changed;
- }
- else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
- {
- damage = CrowbarAndMacheteC;
- if(hitgroup == 1) damage = CrowbarAndMacheteCHead;
- return Plugin_Changed;
- }
- else
- {
- damage = ForAllMeleesC;
- if(hitgroup == 1) damage = ForAllMeleesCHead;
- return Plugin_Changed;
- }
- }
- case 8:
- {
- if(StrEqual(classname, "knife"))
- {
- damage = knifeT;
- if(hitgroup == 1) damage = knifeTHead;
- return Plugin_Changed;
- }
- else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
- {
- damage = KatanaAndToporT;
- if(hitgroup == 1) damage = KatanaAndToporTHead;
- return Plugin_Changed;
- }
- else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
- {
- damage = CrowbarAndMacheteT;
- if(hitgroup == 1) damage = CrowbarAndMacheteTHead;
- return Plugin_Changed;
- }
- else
- {
- damage = ForAllMeleesT;
- if(hitgroup == 1) damage = ForAllMeleesTHead;
- return Plugin_Changed;
- }
- }
- default:
- {
- if(StrEqual(classname, "knife"))
- {
- damage = knife;
- if(hitgroup == 1) damage = knifeHead;
- return Plugin_Changed;
- }
- else if(StrEqual(classname, "katana") || StrEqual(classname, "fireaxe"))
- {
- damage = KatanaAndTopor;
- if(hitgroup == 1) damage = KatanaAndToporHead;
- return Plugin_Changed;
- }
- else if(StrEqual(classname, "machete") || StrEqual(classname, "crowbar"))
- {
- damage = CrowbarAndMachete;
- if(hitgroup == 1) damage = CrowbarAndMacheteHead;
- return Plugin_Changed;
- }
- else
- {
- damage = ForAllMelees;
- if(hitgroup == 1) damage = ForAllMeleesHead;
- return Plugin_Changed;
- }
- }
- }
- }
- }
- }
- return Plugin_Continue;
- }
- public bool IsValidClient(int 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