I have modified lastx to show the ip addresses of people that have left the servers before getting banned to help the ZM admins here in N/U.
below is the sp code
See Nats post below for the compiled plugin
thanks
siosios
below is the sp code
Code:
/** * Modified by siosios @ www.n00bunlimited.net * lastx.sp by HomicidalApe * Gives admins a list of the last players to disconnect, with their steam IDs. * * Credits go to whoever made a very similar plugin for SourceForts. This is based off that. * * Thanks to teame06, since he tore apart so much of this code showing me how to do things. * */ #include <sourcemod> public Plugin:myinfo = { name = "LastX - modded by siosios", author = "HomicidalApe", description = "Shows the last x users that disconnected, their steam IDs, and IP's.", version = "1.2", url = "http://www.homicidalape.mybigspoon.com/mapsite/" }; new Handle:PlayerName; new Handle:PlayerAuthid; new Handle:PlayerIp; new count; new lastxhistory = 10; // default history length new bool:logbots = false; public OnPluginStart() { PlayerName = CreateArray(64, lastxhistory); PlayerAuthid = CreateArray(64, lastxhistory); PlayerIp = CreateArray(64, lastxhistory) RegAdminCmd("lastx", List, ADMFLAG_GENERIC, "Lists the last x players to disconnect."); RegAdminCmd("sm_lastxhistory", SetHistory, ADMFLAG_GENERIC, "sm_lastxhistory <#> : Sets how many player names+IDs to remember for lastx command."); RegAdminCmd("sm_lastxbots", SetBots, ADMFLAG_GENERIC, "sm_lastxhistory <#> : Determines if lastx will log bots."); } public OnClientDisconnect(client) { decl String:playername[64], String:playerid[64], String:playerIP[64] GetClientName(client, playername, sizeof(playername)); GetClientAuthString(client, playerid, sizeof(playerid)); GetClientIP(client, playerIP, sizeof(playerIP)) if (!strcmp(playerid, "BOT")) { if (!logbots) { return; } } if (++count >= lastxhistory) { count = lastxhistory; RemoveFromArray(PlayerName, lastxhistory - 1); RemoveFromArray(PlayerAuthid, lastxhistory - 1); RemoveFromArray(PlayerIp, lastxhistory - 1); } if (count) { ShiftArrayUp(PlayerAuthid, 0); ShiftArrayUp(PlayerName, 0); ShiftArrayUp(PlayerIp, 0); } SetArrayString(PlayerName, 0, playername); SetArrayString(PlayerAuthid, 0, playerid); SetArrayString(PlayerIp, 0, playerIP); return; } public Action:List(client, args) { PrintToConsole(client, "Last %i players to disconnect:", count); decl String:clientIP[64], String:Auth[64], String:Name[64]; for (new i = 0; i < count; i++) { GetArrayString(PlayerName, i, Name, sizeof(Name)); GetArrayString(PlayerAuthid, i, Auth, sizeof(Auth)); GetArrayString(PlayerIp, i, clientIP, sizeof(clientIP)) PrintToConsole(client, "%d. %s - %s - %s", i+1, Name, Auth, clientIP); } return Plugin_Handled; } public Action:SetHistory(client, args) { if (args < 1) { ReplyToCommand(client, "Current Value: %i \n[SM] Usage: sm_lastxhistory <#> : min 1.0 max 64.0", lastxhistory); return Plugin_Handled; } decl String:history[64]; GetCmdArg(1, history, sizeof(history)); new value = StringToInt(history) if (0 < value < 65) { if(value < count) { count = value; } lastxhistory = value; ResizeArray(PlayerName, lastxhistory); ResizeArray(PlayerAuthid, lastxhistory); ResizeArray(PlayerIp, lastxhistory); return Plugin_Handled; } else { ReplyToCommand(client, "Current Value: %i \n[SM] Usage: sm_lastxhistory <#> : min 1 max 64", lastxhistory); return Plugin_Handled; } } public Action:SetBots(client, args) { if (args < 1) { ReplyToCommand(client, "Current Value: %i \n[SM] Usage: sm_lastxbots <0 or 1>", logbots); return Plugin_Handled; } decl String:bots[64]; GetCmdArg(1, bots, sizeof(bots)); new value = StringToInt(bots) if (value == 1) { logbots = true; return Plugin_Handled; } if (value == 0) { logbots = false; return Plugin_Handled; } else { ReplyToCommand(client, "Current Value: %i \n[SM] Usage: sm_lastxhistory <#> : min 1.0 max 64.0", lastxhistory); return Plugin_Handled; } }
thanks
siosios
Comment