117 lines
3.3 KiB
SourcePawn
117 lines
3.3 KiB
SourcePawn
|
#include <sourcemod>
|
||
|
#include <loghelper>
|
||
|
|
||
|
#define VERSION "2.2"
|
||
|
|
||
|
public Plugin:myinfo =
|
||
|
{
|
||
|
name = "SuperLogs: CSpromod",
|
||
|
author = "NeoCortex, psychonic",
|
||
|
description = "Rewrites the logs from CSProMod so HLStatsX:CE will understand them",
|
||
|
version = VERSION,
|
||
|
url = "http://www.sourcemod.net/"
|
||
|
};
|
||
|
|
||
|
public OnPluginStart()
|
||
|
{
|
||
|
CreateConVar("superlogs_cspromod_version", VERSION, "SuperLogs: CSpromod", FCVAR_NOTIFY);
|
||
|
|
||
|
HookEvent("player_death", Event_PlayerDeath)
|
||
|
HookEvent("player_connect", Event_PlayerConnect)
|
||
|
HookEvent("player_disconnect", Event_PlayerDisconnect)
|
||
|
HookEvent("player_team", Event_PlayerTeam)
|
||
|
|
||
|
HookEvent("round_start", Event_RoundStart)
|
||
|
HookEvent("round_end", Event_RoundEnd)
|
||
|
|
||
|
CreateTimer(1.0, LogMap);
|
||
|
}
|
||
|
|
||
|
public Action:LogMap(Handle:timer)
|
||
|
{
|
||
|
// Taken from superlogs-generic.sp by psychonic
|
||
|
// Called 1 second after OnPluginStart since srcds does not log the first map loaded. Idea from Stormtrooper's "mapfix.sp" for psychostats
|
||
|
LogMapLoad();
|
||
|
}
|
||
|
|
||
|
public OnMapStart()
|
||
|
{
|
||
|
// For loghelper
|
||
|
GetTeams();
|
||
|
}
|
||
|
|
||
|
public Event_PlayerConnect(Handle:event, const String:name[], bool:dontBroadcast)
|
||
|
{
|
||
|
decl String:cname[MAX_NAME_LENGTH];
|
||
|
GetEventString(event, "name", cname, sizeof(cname));
|
||
|
decl String:steamid[24];
|
||
|
GetEventString(event, "networkid", steamid, sizeof(steamid));
|
||
|
decl String:ip[32];
|
||
|
GetEventString(event, "address", ip, sizeof(ip));
|
||
|
|
||
|
LogToGame("\"%s<%d><%s><>\" connected, address \"%s\"", cname, GetEventInt(event, "userid"), steamid, ip);
|
||
|
}
|
||
|
|
||
|
public Event_PlayerDisconnect(Handle:event, const String:name[], bool:dontBroadcast)
|
||
|
{
|
||
|
new client = GetClientOfUserId(GetEventInt(event, "userid"));
|
||
|
decl String:cname[MAX_NAME_LENGTH];
|
||
|
GetClientName(client, cname, sizeof(cname));
|
||
|
decl String:cauth[32];
|
||
|
GetClientAuthString(client, cauth, 32);
|
||
|
decl String:creason[128];
|
||
|
GetEventString(event, "reason", creason, sizeof(creason));
|
||
|
|
||
|
LogToGame("\"%s<%d><%s><>\" disconnected (reason \"%s\")", cname, client, cauth, creason);
|
||
|
}
|
||
|
|
||
|
public Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast)
|
||
|
{
|
||
|
// Version 2 of this subroutine (using loghelper) is written by psychonic
|
||
|
new victim = GetClientOfUserId(GetEventInt(event, "userid"));
|
||
|
new attacker = GetClientOfUserId(GetEventInt(event, "attacker"));
|
||
|
decl String:AWeapon[64];
|
||
|
GetEventString(event, "weapon", AWeapon, sizeof(AWeapon));
|
||
|
|
||
|
decl String:properties[12] = "";
|
||
|
if (GetEventBool(event, "headshot"))
|
||
|
{
|
||
|
strcopy(properties, sizeof(properties), " (headshot)");
|
||
|
}
|
||
|
|
||
|
// Player_Suicide
|
||
|
if (attacker == victim)
|
||
|
{
|
||
|
LogSuicide(victim, AWeapon, true, properties);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
LogKill(attacker, victim, AWeapon, true, properties);
|
||
|
}
|
||
|
|
||
|
public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
|
||
|
{
|
||
|
LogToGame("World triggered \"Round_Start\"");
|
||
|
}
|
||
|
|
||
|
public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
|
||
|
{
|
||
|
new winner = GetEventInt(event, "winner");
|
||
|
if (winner == 2 || winner == 3)
|
||
|
{
|
||
|
LogTeamEvent(winner, "triggered", "Round_Win");
|
||
|
}
|
||
|
|
||
|
LogToGame("World triggered \"Round_End\"");
|
||
|
}
|
||
|
|
||
|
public Event_PlayerTeam(Handle:event, const String:name[], bool:dontBroadcast)
|
||
|
{
|
||
|
new client = GetClientOfUserId(GetEventInt(event, "userid"));
|
||
|
new NTeam = GetEventInt(event, "team");
|
||
|
decl String:STeam[32];
|
||
|
GetTeamName(NTeam, STeam, sizeof(STeam));
|
||
|
|
||
|
LogPlayerEvent(client, "joined team", STeam, true)
|
||
|
}
|