Member
|
11-28-2020
, 15:15
I need help in (player_disconnect)
|
#1
|
Good time of day
Need help with the player_disconnect event
Little is known about the events themselves
Can someone provide a sample code to study and understand
1. How to find out why a player left the server?
Attempt 1:
Code:
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
char sg_log[160];
public void OnPluginStart()
{
HookEvent("player_disconnect", Event_PlayerDisconnect);
BuildPath(Path_SM, sg_log, sizeof(sg_log)-1, "logs/hm_disconnect.log");
}
public Action Event_PlayerDisconnect(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt("userid"));
if ((client != 0) && !IsFakeClient(client))
{
char reason[100];
event.GetString("reason", reason, sizeof(reason));
if (StrContains(reason, "self", false) != -1)
{
strcopy(reason, sizeof(reason), "self");
LogToFileEx(sg_log, "self");
}
else if (StrContains(reason, "kick", false) != -1)
{
strcopy(reason, sizeof(reason), "kick");
LogToFileEx(sg_log, "Kicked");
}
else if (StrContains(reason, "ban", false) != -1)
{
strcopy(reason, sizeof(reason), "ban");
LogToFileEx(sg_log, "ban");
}
else if (StrContains(reason, "cheat", false) != -1)
{
strcopy(reason, sizeof(reason), "cheat");
LogToFileEx(sg_log, "cheat");
}
else if (StrContains(reason, "error", false) != -1)
{
strcopy(reason, sizeof(reason), "error");
LogToFileEx(sg_log, "error");
}
else
{
strcopy(reason, sizeof(reason), "???");
LogToFileEx(sg_log, "???");
}
char player_name[MAX_NAME_LENGTH];
event.GetString("name", player_name, sizeof(player_name));
LogToFileEx(sg_log, "[%s] Disconnect (%s)", player_name, reason);
if (!dontBroadcast)
{
SetEventBroadcast(event, true);
}
}
return Plugin_Continue;
}
Attempt 2:
Code:
#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
char sg_log[160];
public void OnPluginStart()
{
HookEvent("player_disconnect", Event_PlayerDisconnect);
BuildPath(Path_SM, sg_log, sizeof(sg_log)-1, "logs/hm_disconnect.log");
}
public Action Event_PlayerDisconnect(Event event, const char[] name, bool dontBroadcast)
{
int client = GetClientOfUserId(event.GetInt("userid"));
if ((client != 0) && !IsFakeClient(client))
{
char reason[100];
event.GetString("reason", reason, sizeof(reason));
if(StrContains(reason, "connection rejected", false) != -1)
{
strcopy(reason, sizeof(reason), "connection rejected");
}
else if(StrContains(reason, "timed out", false) != -1)
{
strcopy(reason, sizeof(reason), "timed out");
}
else if(StrContains(reason, "by console", false) != -1)
{
strcopy(reason, sizeof(reason), "by console");
}
else if(StrContains(reason, "by user", false) != -1)
{
strcopy(reason, sizeof(reason), "by user");
}
else if(StrContains(reason, "ping is too high", false) != -1)
{
strcopy(reason, sizeof(reason), "ping is too high");
}
else if(StrContains(reason, "No Steam logon", false) != -1)
{
strcopy(reason, sizeof(reason), "No Steam logon);
}
else if(StrContains(reason, "Steam account is being used in another", false) != -1)
{
strcopy(reason, sizeof(reason), "Steam account is being used in another");
}
else if(StrContains(reason, "Steam Connection lost", false) != -1)
{
strcopy(reason, sizeof(reason), "Steam Connection lost");
}
else if(StrContains(reason, "This Steam account does not own this game", false) != -1)
{
strcopy(reason, sizeof(reason), "This Steam account does not own this game");
}
else if(StrContains(reason, "Validation Rejected", false) != -1)
{
strcopy(reason, sizeof(reason), "Validation Rejected");
}
else if(StrContains(reason, "Certificate Length", false) != -1)
{
strcopy(reason, sizeof(reason), "Certificate Length");
}
else if(StrContains(reason, "Pure server", false) != -1)
{
strcopy(reason, sizeof(reason), "Pure server");
}
else
{
strcopy(reason, sizeof(reason), "???");
}
char player_name[MAX_NAME_LENGTH];
event.GetString("name", player_name, sizeof(player_name));
LogToFileEx(sg_log, "[%s] Disconnect (%s)", player_name, reason);
if (!dontBroadcast)
{
SetEventBroadcast(event, true);
}
}
return Plugin_Continue;
}
2. How to know player xvid?
Code:
"xuid" "uint64" // player xuid
__________________
Last edited by dr_lex; 11-30-2020 at 10:25.
|
|