Client :
local screenW, screenH = guiGetScreenSize ( )
GUIEditor = {
gridlist = {}
}
addEventHandler ( "onClientResourceStart", resourceRoot, function ( )
wind = guiCreateWindow((screenW - 315) / 2, (screenH - 375) / 2, 315, 375, "Online staffs", false)
guiWindowSetSizable(wind, false)
guiSetVisible(wind, false)
GUIEditor.gridlist[1] = guiCreateGridList(9, 23, 296, 292, false, wind)
guiGridListAddColumn(GUIEditor.gridlist[1], "Name", 0.5)
guiGridListAddColumn(GUIEditor.gridlist[1], "Rank", 0.5)
close_btn = guiCreateButton(113, 325, 87, 31, "Close", false, wind)
end )
function Open ( )
guiSetVisible ( wind, not guiGetVisible(wind) )
showCursor ( guiGetVisible(wind) )
if guiGetVisible ( wind ) then
triggerServerEvent ( "getOnlineAdmins", localPlayer )
end
end
bindKey ( "F5", "down", Open )
addEventHandler ( "onClientGUIClick",root, function ( )
if source == close_btn then
guiSetVisible ( wind,false )
showCursor ( false )
end
end )
addEvent ( "returnOnlineAdmins",true )
addEventHandler ( "returnOnlineAdmins", root, function ( AdminsTable )
guiGridListClear ( GUIEditor.gridlist[1] )
for k,v in ipairs ( AdminsTable ) do
local row = guiGridListAddRow ( GUIEditor.gridlist[1] )
guiGridListSetItemText ( GUIEditor.gridlist[1], row, 1, v.name,false,false )
guiGridListSetItemText ( GUIEditor.gridlist[1],row,2,v.rank,false,false)
if v.state == "online" then
guiGridListSetItemColor ( GUIEditor.gridlist[1], row, 1, 0, 255, 0 )
else
guiGridListSetItemColor ( GUIEditor.gridlist[1], row, 1, 255, 0, 0 )
end
end
end )
Server :
local admins = {
"Admin",
"Moderator",
}
function isAccountUserOnline ( accName )
local acc = getAccount ( accName )
if not acc then return "account not found" end
local p = getAccountPlayer ( acc )
if ( p ) then
return "online"
end
return "offline"
end
addEvent ( "getOnlineAdmins",true )
addEventHandler ( "getOnlineAdmins", root, function ( )
local AdminsTable = { }
for i = 1,#admins do
g_ = aclGetGroup ( admins [ i ] )
if g_ then
for k, o in ipairs ( aclGroupListObjects ( g_ ) ) do
local Check = gettok( o, 1, string.byte('.') )
if ( Check == "user" ) then
local uName = gettok( o, 2, string.byte('.') )
table.insert( AdminsTable, { rank=admins [ i ], name=uName, state=isAccountUserOnline ( uName ) } )
end
end
end
end
triggerClientEvent ( source, "returnOnlineAdmins", source, AdminsTable )
end )