// #pragma semicolon 1
#include <sourcemod>
new bool:g_bIsAdmin[MAXPLAYERS+1];
char sFile[40]
public Plugin:myinfo =
{
name = "Connect_info",
author = "R1KO",
version = "2.0",
url = "
Сообщество администраторов игровых серверов HLmod.ru"
};
public OnPluginStart(){
HookEvent("player_disconnect", Event_PlayerDisconnect);
HookEvent("round_start", Event_RoundStart);
}
public void Event_RoundStart(Handle event, char[] name, bool dbc)
{
FormatTime(sFile, 40, "connectinfo_y%ym%yd%d.txt", GetTime())
}
public OnClientPostAdminCheck(iClient)
{
if (iClient > 0 && !IsFakeClient(iClient))
{
g_bIsAdmin[iClient] = GetUserAdmin(iClient) != INVALID_ADMIN_ID ? true:false;
PrintConnect(iClient, true);
}
}
public Event_PlayerDisconnect(Handle:hEvent, const String:sName[], bool:dontBroadcast)
{
if (!dontBroadcast) SetEventBroadcast(hEvent, true);
new iClient = GetClientOfUserId(GetEventInt(hEvent,"userid"));
if (iClient > 0 && !IsFakeClient(iClient)) PrintConnect(iClient, false);
}
stock PrintConnect(iClient, bool:IsConnect)
{
decl String:sAuth[32], String:sIp[32], String:sAdmMsg[255], String:sMsg[255];
GetClientAuthId(iClient, AuthId_Steam2, sAuth, sizeof(sAuth));
GetClientIP(iClient, sIp, sizeof(sIp));
FormatEx(sAdmMsg, sizeof(sAdmMsg), "\x03• \x01Игрок \x04%N \x01| \x04%s \x01| \x04%s \x01%s.", iClient, sAuth, sIp, (IsConnect) ? "подключился":"отключился");
FormatEx(sMsg, sizeof(sMsg), "\x03• \x01Игрок \x04%N \x01| \x04%s \x01%s.", iClient, (IsConnect) ? "подключился":"отключился");
char sTime[12]
FormatTime(sTime, 12, "%X")
if(!sFile[0]) Event_RoundStart(INVALID_HANDLE, "", false)
LogToFileEx(sFile, "%s | Join: %b | AuthID: %s | IP: %s | Name: %N", sTime, IsConnect, sAuth, sIp, iClient)
for(new i=1; i <= MaxClients; i++)
{
if(IsClientInGame(i)) PrintToChat(i, (g_bIsAdmin
&& ~GetUserFlagBits(iClient) & ADMFLAG_ROOT) ? sAdmMsg:sMsg);
}
}