Awesome sio, this will be very helpful. +1
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 pluginCode:/** * 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
Awesome sio, this will be very helpful. +1
there seems to be a problem with it so me and nat are looking over the code. will update the first post with any changes.
siosios
Okay, here's the final updated version:
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; } }
[img]http://unix.org.au/~brett/gif/waldioaw1.gif[/img]
[color=royalblue][b]Forum and Server Administrator[/b][/color]
PasTieZ: I am scared now thanks nat
natalyaaf: D:
PasTieZ: sio is going to ass rape me
NatalyaAF ウラヌス: i am the baninator :D
word jackd ת/ύ: ha the baninator and the pwninator
ALL ZM ADMINS:
You can now type lastx in console to find the ip of players that had left before you could serve justice on them.
W00t!!!![]()
![]()
![]()
Very nice!!!I'm sure this will help out admins very good.
Thank you sio. This im glad i could help =D
There are currently 10 users browsing this thread. (0 members and 10 guests)
Bookmarks