Changed some global_list stuff:

>tried to make the comments less confusing.
>Removed the procs for rebuilding the lists (they weren't meant to be used and half were broken anyway).
>added a directory. It maps ckey to client like so directory[ckey] = client. It could be used for PMs, banning, and various other admin tools rather than using \ref[]
>var/list/admins is now a list of clients whom are admins.
>var/list/admin_datums is what var/list/admins used to be. A map from ckey -> admin datum
Most of this is so I can add modular admin ranks in a non-horrendous way and fix some existing issues.
>var/list/client_list is now var/list/clients (laziness sorry)
>removed some needless loops and stuff.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@4951 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
elly1989@rocketmail.com
2012-10-24 20:11:39 +00:00
parent ca59c9fde9
commit b1fdee2e32
27 changed files with 123 additions and 261 deletions
+43 -56
View File
@@ -1,44 +1,24 @@
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/client/C in admin_list)
clients += C
return clients
/mob/verb/who()
/client/verb/who()
set name = "Who"
set category = "OOC"
usr << "<b>Current Players:</b>"
var/msg = "<b>Current Players:</b>\n"
var/list/peeps = list()
var/list/Lines = list()
for (var/client/C in client_list)
var/entry = "\t"
if(usr.client.holder && usr.client.holder.level >= 0) //Everything above admin-observers get this.
entry += "[C.key]"
if(holder && holder.level >= 0) //Everything above admin-observers get this.
for(var/client/C in clients)
var/entry = "\t[C.key]"
if(C.holder && C.holder.fakekey)
entry += " <i>(as [C.holder.fakekey])</i>"
var/mob/M = C.mob
entry += " - Playing as [M.real_name]"
switch(M.stat)
entry += " - Playing as [C.mob.real_name]"
switch(C.mob.stat)
if(UNCONSCIOUS)
entry += " - <font color='darkgray'><b>Unconscious</b></font>"
if(DEAD)
if(isobserver(M))
var/mob/dead/observer/O = M
if(isobserver(C.mob))
var/mob/dead/observer/O = C.mob
if(O.started_as_observer)
entry += " - <font color='gray'>Observing</font>"
else
@@ -47,39 +27,46 @@ proc/get_all_admin_clients()
entry += " - <font color='black'><b>DEAD</b></font>"
if(is_special_character(C.mob))
entry += " - <b><font color='red'>Antagonist</font></b>"
entry += " (<A HREF='?src=\ref[src.client.holder];adminmoreinfo=\ref[M]'>?</A>)"
else
entry += " (<A HREF='?src=\ref[holder];adminmoreinfo=\ref[C.mob]'>?</A>)"
Lines += entry
else
for(var/client/C in clients)
if(C.holder && C.holder.fakekey)
entry += "[C.holder.fakekey]"
Lines += C.holder.fakekey
else
entry += "[C.key]"
Lines += C.key
peeps += entry
for(var/line in sortList(Lines))
msg += "[line]\n"
peeps = sortList(peeps)
for (var/p in peeps)
usr << p
usr << "<b>Total Players: [length(peeps)]</b>"
msg += "<b>Total Players: [length(Lines)]</b>"
src << msg
/client/verb/adminwho()
set category = "Admin"
set name = "Adminwho"
usr << "<b>Current Admins:</b>"
var/msg = "<b>Current Admins:</b>\n"
if(holder)
for(var/client/C in admins)
msg += "\t[C] is a [C.holder.rank]"
for (var/client/C in admin_list)
if(C && C.holder)
if(usr.client && usr.client.holder)
var/afk = 0
if(C.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(C.mob))
usr << "\t[C] is a [C.holder.rank][C.holder.fakekey ? " <i>(as [C.holder.fakekey])</i>" : ""] - Observing [afk ? "(AFK)" : ""]"
else if(istype(C.mob,/mob/new_player))
usr << "\t[C] is a [C.holder.rank][C.holder.fakekey ? " <i>(as [C.holder.fakekey])</i>" : ""] - Has not entered [afk ? "(AFK)" : ""]"
else if(istype(C.mob,/mob/living))
usr << "\t[C] is a [C.holder.rank][C.holder.fakekey ? " <i>(as [C.holder.fakekey])</i>" : ""] - Playing [afk ? "(AFK)" : ""]"
else if(!C.holder.fakekey)
usr << "\t[C] is a [C.holder.rank]"
if(C.holder.fakekey)
msg += " <i>(as [C.holder.fakekey])</i>"
if(isobserver(C.mob))
msg += " - Observing"
else if(istype(C.mob,/mob/new_player))
msg += " - Lobby"
else
msg += " - Playing"
if(C.inactivity > AFK_THRESHOLD)
msg += " (AFK)"
msg += "\n"
else
for(var/client/C in admins)
if(!C.holder.fakekey)
msg += "\t[C] is a [C.holder.rank]\n"
src << msg