-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathblocker.sp
67 lines (53 loc) · 1.53 KB
/
blocker.sp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#pragma semicolon 1
#include <sourcemod>
#include <sdktools>
#include <sdkhooks>
public void OnPluginStart()
{
for (int i = 1; i <= MaxClients; i++)
{
if (IsValidClient(i))
SDKHook(i, SDKHook_OnTakeDamage, OnTakeDamage);
}
}
public Action OnTakeDamage(int victim, int &attacker, int &inflictor, float &damage, int &damagetype, int &weapon, float damageForce[3], float damagePosition[3], int damagecustom)
{
if (damagetype & DMG_FALL)
return Plugin_Continue;
if(GetClientTeam(victim) == GetClientTeam(attacker) && IsValidClient(victim) && IsValidClient(attacker))
{
char sWeapon[64];
GetEdictClassname( inflictor, sWeapon, sizeof( sWeapon ) );
if( StrEqual( sWeapon, "inferno" ) ) {
return Plugin_Continue;
}
if( StrEqual( sWeapon, "hegrenade_projectile" ) ) {
return Plugin_Continue;
}
if( StrEqual( sWeapon, "weapon_knife_t" ) ) {
return Plugin_Continue;
}
if( StrEqual( sWeapon, "weapon_knife_ct" ) ) {
return Plugin_Continue;
}
if( StrEqual( sWeapon, "decoy_projectile" ) ) {
return Plugin_Continue;
}
if( StrEqual( sWeapon, "smokegrenade_projectile" ) ) {
return Plugin_Continue;
}
return Plugin_Handled;
}
return Plugin_Continue;
}
public void OnClientPutInServer(int client)
{
SDKHook(client, SDKHook_OnTakeDamage, OnTakeDamage);
}
stock bool IsValidClient( client )
{
if ( client < 1 || client > MaxClients ) return false;
if ( !IsClientConnected( client )) return false;
if ( !IsClientInGame( client )) return false;
return true;
}