 |
|
Senior Member
|

10-04-2022
, 09:44
Re: [L4D2] Damage Reduction when equip riotshield
|
#7
|
Quote:
Originally Posted by moschinovac
Here's "Lazy" version modify from that plugin. Haven't tested
PHP Code:
#include <sourcemod> #include <sdktools> #include <sdkhooks> #pragma semicolon 1
Handle l4d_shield_damage_from_ci; Handle l4d_shield_damage_from_si; Handle l4d_shield_damage_from_tankwitch;
public void OnPluginStart() { l4d_shield_damage_from_ci = CreateConVar("l4d_shield_damage_from_ci", "0.0", "ci damage to survivor with shield[0.0, 100.0]" ); l4d_shield_damage_from_si = CreateConVar("l4d_shield_damage_from_si", "10.0", "si damage to survivor with shield[0.0, 100.0]" ); l4d_shield_damage_from_tankwitch = CreateConVar("l4d_shield_damage_from_tankwitch", "20.0", "tank or witch damage to survivor with shield[0.0, 100.0]" );
AutoExecConfig(true, "shield_l4d_snipset"); }
public void OnClientPutInServer(int client) { if(IsValidClient(client)) { SDKHook(client, SDKHook_OnTakeDamage, PlayerOnTakeDamage); } }
HoldShieldWeapon(client) { int ent=GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon"); if(ent>0) { decl String:item[64]; GetEdictClassname(ent, item, sizeof(item)); if(StrEqual(item, "weapon_melee")) { GetEntPropString(ent, Prop_Data, "m_ModelName", item, sizeof(item)); if(StrContains(item, "shield")>0) { return ent; } } } return 0; }
public Action PlayerOnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype) { if(victim<=0)return Plugin_Continue; if(GetClientTeam(victim) != 2) return Plugin_Continue; if(!HoldShieldWeapon(victim)) return Plugin_Continue; float damageFactor=100.0; if(attacker>0 && attacker<=MaxClients) { if(GetEntProp(attacker, Prop_Send, "m_zombieClass") == 8) { damageFactor=GetConVarFloat(l4d_shield_damage_from_tankwitch); } else damageFactor=GetConVarFloat(l4d_shield_damage_from_si); } else { char name[64]; GetEdictClassname(attacker, name, 64); if(StrEqual(name, "infected")) { damageFactor=GetConVarFloat(l4d_shield_damage_from_ci); } else if(StrEqual(name, "tank_rock")) { damageFactor=GetConVarFloat(l4d_shield_damage_from_tankwitch); } else return Plugin_Continue; }
damageFactor=damageFactor*0.01;
damage=damage*damageFactor;
return Plugin_Changed; }
bool IsValidClient(int client) { if (client < 1 || client > MaxClients) return false; if (!IsClientConnected(client)) return false; if (!IsClientInGame(client)) return false; return true; }
|
Thank you very much for a modify plugin moschinovac! Tested and it work looking fine!
Last edited by ddd123; 10-04-2022 at 09:44.
|
|
|
|