proc/get_all_clients() var/list/client/clients = list() for (var/mob/M in player_list) clients += M.client return clients proc/get_all_admin_clients() var/list/client/clients = list() for (var/mob/M in admin_list) clients += M.client return clients /mob/verb/who() set name = "Who" set category = "OOC" usr << "Current Players:" var/list/peeps = list() for (var/client/C in client_list) if (C.stealth && !usr.client.holder) peeps += "\t[C.fakekey]" else peeps += "\t[C.key][C.stealth ? " (as [C.fakekey])" : ""]" peeps = sortList(peeps) for (var/p in peeps) usr << p usr << "Total Players: [length(peeps)]" /client/verb/adminwho() set category = "Admin" set name = "Adminwho" usr << "Current Admins:" for (var/mob/M in admin_list) if(M && M.client) if(usr.client) var/afk = 0 if( M.client.inactivity > AFK_THRESHOLD ) //When I made this, the AFK_THRESHOLD was 3000ds = 300s = 5m, see setup.dm for the new one. afk = 1 if(isobserver(M)) usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " (as [M.client.fakekey])" : ""] - Observing [afk ? "(AFK)" : ""]" else if(istype(M,/mob/new_player)) usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " (as [M.client.fakekey])" : ""] - Has not entered [afk ? "(AFK)" : ""]" else if(istype(M,/mob/living)) usr << "[M.key] is a [M.client.holder.rank][M.client.stealth ? " (as [M.client.fakekey])" : ""] - Playing [afk ? "(AFK)" : ""]" else if(!M.client.stealth) usr << "\t[M.client] is a [M.client.holder.rank]"