My final solution, thanks to Stickly Man for the initial answer.
Server-side autorun:
if (SERVER) then
local adminTable = {}
local moderatorTable = {}
hook.Add( "Initialize", "GetStaff", function()
util.AddNetworkString("sendAdmins")
util.AddNetworkString("sendMods")
for _,ply in pairs(ULib.ucl.users) do
if ply["group"] == "superadmin" or ply["group"] == "admin" then
table.insert(adminTable, 1, ply["name"])
elseif ply["group"] == "moderator" then
table.insert(moderatorTable, 1, ply["name"])
end
end
end)
hook.Add( "PlayerAuthed", "sendStaff", function()
print("StaffListing: 20 seconds delay")
timer.Simple( 20, function()
print("StaffListing: sending to clients")
net.Start("sendAdmins")
net.WriteTable(adminTable)
for _,ply in pairs(player.GetAll()) do
net.Send(ply)
end
net.Start("sendMods")
net.WriteTable(moderatorTable)
for _,ply in pairs(player.GetAll()) do
net.Send(ply)
end
end)
end)
end
Client-side autorun:
net.Receive("sendAdmins", function(len)
adminTable = net.ReadTable()
table.sort(adminTable)
end)
net.Receive("sendMods", function(len)
moderatorTable = net.ReadTable()
table.sort(moderatorTable)
end)
Client-side F1 Help Menu: (fonts, colors, etc, are for my custom F1 help screen, if you use this code you'd have to edit it to your needs).
draw.WordBox( 5, 22, 485, " Admin ", "sText", Color( 114, 30, 114 ), Color( 255, 255, 255 ) )
surface.SetTextColor( 0, 0, 0, 255 )
surface.SetFont( "sSmall" )
for i = 1, #adminTable do
surface.SetTextPos(22, 495 + (i*15))
surface.DrawText(adminTable[i])
end
draw.WordBox( 5, 578, 485, " Moderator", "sText", Color( 50, 45, 250 ), Color( 255, 255, 255 ) )
surface.SetTextColor( 0, 0, 0, 255 )
surface.SetFont( "sSmall" )
for i = 1, #moderatorTable do
surface.SetTextPos(578, 495 + (i*15))
surface.DrawText(moderatorTable[i])
end