-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathkill feed.sp
44 lines (37 loc) · 1.27 KB
/
kill feed.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
#include <sourcemod>
#pragma newdecls required
public void OnPluginStart()
{
HookEvent("player_death", Event_PlayerDeath, EventHookMode_Pre);
}
public void Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast)
{
int victim = GetClientOfUserId(event.GetInt("userid"));
int attacker = GetClientOfUserId(event.GetInt("attacker"));
char sWeapon[128];
event.GetString("weapon", sWeapon, 128);
bool headshot = event.GetBool("headshot");
CreateDeathEvent(victim, attacker, sWeapon, headshot);
SetEventBroadcast(event, true);
}
public void CreateDeathEvent(int victim, int attacker, char[] sWeapon, bool headshot)
{
Event event = CreateEvent("player_death");
event.SetInt("userid", GetClientUserId(victim));
event.SetInt("attacker", GetClientUserId(attacker));
event.SetString("weapon", sWeapon);
event.SetBool("headshot", headshot);
if(IsValidClient(victim))
event.FireToClient(victim);
if(IsValidClient(attacker) && victim != attacker)
event.FireToClient(attacker);
delete event; //cause memory leak ?
}
stock bool IsValidClient(int client)
{
if(client <= 0 || client > MaxClients)
return false;
if(!IsClientInGame(client) || !IsClientConnected(client) || IsFakeClient(client))
return false;
return true;
}