PHP Code:
#pragma semicolon 1
#define DEBUG
#define PLUGIN_AUTHOR "Skyler"
#define PLUGIN_VERSION "1.0.1"
#define PREFIX "SkylerAdmins"
#include <sourcemod>
#include <clientprefs>
Handle g_hAdminStatus;
public Plugin myinfo = {
name = "[ANY] Admins Online",
author = PLUGIN_AUTHOR,
description = "Made aspecailly by Skyler",
version = PLUGIN_VERSION,
url = "https://forums.alliedmods.net/showthread.php?t=308606"
};
public void OnPluginStart(){
RegConsoleCmd("sm_admins", Cmd_Admins);
g_hAdminStatus = RegClientCookie("sm_admins_status", "Sets the admin visibility on the online admin list", CookieAccess_Protected);
}
public Action Cmd_Admins(int client, int args){
if (IsValidClient(client)){
char szArg[32];
GetCmdArg(1, szArg, sizeof(szArg));
if (args == 1 && CheckForAdmin(client)){
if (StrEqual(szArg, "0")){
PrintToChat(client, " \x0E[\x0C%s\x0E]\x04 You have changed your admin visibility to \x07off\x01.", PREFIX);
SetClientCookie(client, g_hAdminStatus, "0");
} else if (StrEqual(szArg, "1")){
PrintToChat(client, " \x0E[\x0C%s\x0E]\x04 You have changed your admin visibility to \x04on\x01.", PREFIX);
SetClientCookie(client, g_hAdminStatus, "1");
} else {
PrintToChat(client, " \x0E[\x0C%s\x0E]\x04 You can only the admin visibility status to \x041\x01/\x070\x01.", PREFIX);
return Plugin_Handled;
}
} else if (args == 0){
Menu_Admins(client);
}
}
return Plugin_Handled;
}
void Menu_Admins(int client){
Menu menu = new Menu(MenuCallBack_Admins);
menu.SetTitle("[%s] Online Admins", PREFIX);
char szStatus[512];
char szName[MAX_NAME_LENGTH];
for (int i = 1; i <= MaxClients; i++){
GetClientCookie(i, g_hAdminStatus, szStatus, sizeof(szStatus));
if (IsValidClient(i) && CheckForAdmin(i) && StrEqual(szStatus, "1")){
Format(szName, sizeof(szName), "%N", i);
menu.AddItem("", szName);
}
}
menu.ExitButton = true;
menu.Display(client, MENU_TIME_FOREVER);
}
public int MenuCallBack_Admins(Menu menu, MenuAction mAction, int param1, int param2){
if (mAction == MenuAction_Select){
Menu_Admins(param1);
} else if (mAction == MenuAction_End){
delete menu;
}
}
stock bool CheckForAdmin(int client){
if (client >= 1 && client <= MaxClients && CheckCommandAccess(client, "", ADMFLAG_SLAY)){
return true;
}
return false;
}
stock bool IsValidClient(int client){
if (client >= 1 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client) && !IsFakeClient(client) && !IsClientSourceTV(client) && !IsClientReplay(client)){
return true;
}
return false;
}
I think it's much easier