mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-09 07:57:50 +00:00
406 lines
11 KiB
Plaintext
406 lines
11 KiB
Plaintext
/mob/proc/player_panel_job() //returns the job/
|
|
return "Mob"
|
|
|
|
/mob/living/player_panel_job()
|
|
return "Living"
|
|
|
|
/mob/living/carbon/player_panel_job()
|
|
return "Carbon-Based"
|
|
|
|
/mob/living/carbon/human/player_panel_job()
|
|
return job
|
|
|
|
/mob/living/carbon/slime/player_panel_job()
|
|
return "Slime"
|
|
|
|
/mob/living/carbon/monkey/player_panel_job()
|
|
return "Monkey"
|
|
|
|
/mob/living/carbon/monkey/diona/player_panel_job()
|
|
return "Diona Nymph"
|
|
|
|
/mob/living/carbon/alien/player_panel_job()
|
|
return "Alien"
|
|
|
|
/mob/living/carbon/alien/larva/player_panel_job()
|
|
return "Alien Larva"
|
|
|
|
/mob/living/simple_animal/player_panel_job()
|
|
return "Animal"
|
|
|
|
/mob/living/simple_animal/borer/player_panel_job()
|
|
return "Borer"
|
|
|
|
/mob/living/simple_animal/corgi/player_panel_job()
|
|
return "Corgi"
|
|
|
|
/mob/living/simple_animal/construct/player_panel_job()
|
|
return "Construct"
|
|
|
|
/mob/living/silicon/player_panel_job()
|
|
return "Silicon"
|
|
|
|
/mob/living/silicon/robot/player_panel_job()
|
|
return "Cyborg"
|
|
|
|
/mob/living/silicon/robot/mommi/player_panel_job()
|
|
return "Mobile-MMI"
|
|
|
|
/mob/living/silicon/ai/player_panel_job()
|
|
return "AI"
|
|
|
|
/mob/living/silicon/pai/player_panel_job()
|
|
return "pAI"
|
|
|
|
/mob/dead/observer/player_panel_job()
|
|
return "Ghost"
|
|
|
|
/mob/new_player/player_panel_job()
|
|
return "New Player"
|
|
|
|
/datum/admins/proc/player_panel_new()//The new one
|
|
if (!usr.client.holder)
|
|
return
|
|
var/dat = "<html><head><title>Admin Player Panel</title></head>"
|
|
|
|
//javascript, the part that does most of the work~
|
|
dat += {"
|
|
|
|
<head>
|
|
<script type='text/javascript'>
|
|
|
|
var locked_tabs = new Array();
|
|
|
|
function updateSearch(){
|
|
|
|
|
|
var filter_text = document.getElementById('filter');
|
|
var filter = filter_text.value.toLowerCase();
|
|
|
|
if(complete_list != null && complete_list != "")
|
|
{
|
|
var mtbl = document.getElementById("maintable_data_archive");
|
|
mtbl.innerHTML = complete_list;
|
|
}
|
|
|
|
if(filter.value == "")
|
|
{
|
|
return;
|
|
}else{
|
|
|
|
var maintable_data = document.getElementById('maintable_data');
|
|
var ltr = maintable_data.getElementsByTagName("tr");
|
|
for ( var i = 0; i < ltr.length; ++i )
|
|
{
|
|
try{
|
|
var tr = ltr\[i\];
|
|
if(tr.getAttribute("id").indexOf("data") != 0)
|
|
{
|
|
continue;
|
|
}
|
|
var ltd = tr.getElementsByTagName("td");
|
|
var td = ltd\[0\];
|
|
var lsearch = td.getElementsByTagName("b");
|
|
var search = lsearch\[0\];
|
|
//var inner_span = li.getElementsByTagName("span")\[1\] //Should only ever contain one element.
|
|
//document.write("<p>"+search.innerText+"<br>"+filter+"<br>"+search.innerText.indexOf(filter))
|
|
if ( search.innerText.toLowerCase().indexOf(filter) == -1 )
|
|
{
|
|
//document.write("a");
|
|
tr.parentNode.removeChild(tr);
|
|
td.innerHTML = "";
|
|
i--;
|
|
}
|
|
}catch(err) { }
|
|
}
|
|
}
|
|
|
|
var count = 0;
|
|
var index = -1;
|
|
var debug = document.getElementById("debug");
|
|
|
|
locked_tabs = new Array();
|
|
|
|
}
|
|
|
|
function expand(id,job,name,real_name,image,key,ip,antagonist,ref){
|
|
|
|
clearAll();
|
|
|
|
var span = document.getElementById(id);
|
|
|
|
body = "<table><tr><td>";
|
|
|
|
body += "</td><td align='center'>";
|
|
|
|
body += "<font size='2'><b>"+job+" "+name+"</b><br><b>Real name "+real_name+"</b><br><b>Played by "+key+" ("+ip+")</b></font>"
|
|
|
|
body += "</td><td align='center'>";
|
|
|
|
body += "<a href='?src=\ref[src];adminplayeropts="+ref+"'>PP</a> - "
|
|
body += "<a href='?src=\ref[src];notes=show;mob="+ref+"'>N</a> - "
|
|
body += "<a href='?_src_=vars;Vars="+ref+"'>VV</a> - "
|
|
body += "<a href='?src=\ref[src];traitor="+ref+"'>RP</a> - "
|
|
body += "<a href='?src=\ref[usr];priv_msg=\ref"+ref+"'>PM</a> - "
|
|
body += "<a href='?src=\ref[src];subtlemessage="+ref+"'>SM</a> - "
|
|
body += "<a href='?src=\ref[src];adminplayerobservejump="+ref+"'>JMP</a><br>"
|
|
if(antagonist > 0)
|
|
body += "<font size='2'><a href='?src=\ref[src];check_antagonist=1'><font color='red'><b>Antagonist</b></font></a></font>";
|
|
|
|
body += "</td></tr></table>";
|
|
|
|
|
|
span.innerHTML = body
|
|
}
|
|
|
|
function clearAll(){
|
|
var spans = document.getElementsByTagName('span');
|
|
for(var i = 0; i < spans.length; i++){
|
|
var span = spans\[i\];
|
|
|
|
var id = span.getAttribute("id");
|
|
|
|
if(!(id.indexOf("item")==0))
|
|
continue;
|
|
|
|
var pass = 1;
|
|
|
|
for(var j = 0; j < locked_tabs.length; j++){
|
|
if(locked_tabs\[j\]==id)
|
|
{
|
|
pass = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(pass != 1)
|
|
continue;
|
|
|
|
|
|
|
|
|
|
span.innerHTML = "";
|
|
}
|
|
}
|
|
|
|
function addToLocked(id,link_id,notice_span_id){
|
|
var link = document.getElementById(link_id);
|
|
var decision = link.getAttribute("name");
|
|
if(decision == "1")
|
|
{
|
|
link.setAttribute("name","2");
|
|
}else{
|
|
link.setAttribute("name","1");
|
|
removeFromLocked(id,link_id,notice_span_id);
|
|
return;
|
|
}
|
|
|
|
var pass = 1;
|
|
for(var j = 0; j < locked_tabs.length; j++){
|
|
if(locked_tabs\[j\]==id)
|
|
{
|
|
pass = 0;
|
|
break;
|
|
}
|
|
}
|
|
if(!pass)
|
|
return;
|
|
locked_tabs.push(id);
|
|
var notice_span = document.getElementById(notice_span_id);
|
|
notice_span.innerHTML = "<font color='red'>Locked</font> ";
|
|
//link.setAttribute("onClick","attempt('"+id+"','"+link_id+"','"+notice_span_id+"');");
|
|
//document.write("removeFromLocked('"+id+"','"+link_id+"','"+notice_span_id+"')");
|
|
//document.write("aa - "+link.getAttribute("onClick"));
|
|
}
|
|
|
|
function attempt(ab){
|
|
return ab;
|
|
}
|
|
|
|
function removeFromLocked(id,link_id,notice_span_id){
|
|
//document.write("a");
|
|
var index = 0;
|
|
var pass = 0;
|
|
for(var j = 0; j < locked_tabs.length; j++){
|
|
if(locked_tabs\[j\]==id)
|
|
{
|
|
pass = 1;
|
|
index = j;
|
|
break;
|
|
}
|
|
}
|
|
if(!pass)
|
|
return;
|
|
locked_tabs\[index\] = "";
|
|
var notice_span = document.getElementById(notice_span_id);
|
|
notice_span.innerHTML = "";
|
|
//var link = document.getElementById(link_id);
|
|
//link.setAttribute("onClick","addToLocked('"+id+"','"+link_id+"','"+notice_span_id+"')");
|
|
}
|
|
|
|
function selectTextField(){
|
|
var filter_text = document.getElementById('filter');
|
|
filter_text.focus();
|
|
filter_text.select();
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
|
|
|
|
"}
|
|
|
|
//body tag start + onload and onkeypress (onkeyup) javascript event calls
|
|
dat += "<body onload='selectTextField(); updateSearch();' onkeyup='updateSearch();'>"
|
|
|
|
//title + search bar
|
|
dat += {"
|
|
|
|
<table width='560' align='center' cellspacing='0' cellpadding='5' id='maintable'>
|
|
<tr id='title_tr'>
|
|
<td align='center'>
|
|
<font size='5'><b>Player panel</b></font><br>
|
|
Hover over a line to see more information - <a href='?src=\ref[src];check_antagonist=1'>Check antagonists</a>
|
|
<p>
|
|
</td>
|
|
</tr>
|
|
<tr id='search_tr'>
|
|
<td align='center'>
|
|
<b>Search:</b> <input type='text' id='filter' value='' style='width:300px;'>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
"}
|
|
|
|
//player table header
|
|
dat += {"
|
|
<span id='maintable_data_archive'>
|
|
<table width='560' align='center' cellspacing='0' cellpadding='5' id='maintable_data'>"}
|
|
|
|
var/list/mobs = sortmobs()
|
|
var/i = 1
|
|
for(var/mob/M in mobs)
|
|
if(M.ckey)
|
|
|
|
var/color = "#e6e6e6"
|
|
if(i%2 == 0)
|
|
color = "#f2f2f2"
|
|
var/is_antagonist = is_special_character(M)
|
|
|
|
var/M_job = M.player_panel_job()
|
|
|
|
M_job = replacetext(M_job, "'", "")
|
|
M_job = replacetext(M_job, "\"", "")
|
|
M_job = replacetext(M_job, "\\", "")
|
|
|
|
var/M_name = M.name
|
|
M_name = replacetext(M_name, "'", "")
|
|
M_name = replacetext(M_name, "\"", "")
|
|
M_name = replacetext(M_name, "\\", "")
|
|
var/M_rname = M.real_name
|
|
M_rname = replacetext(M_rname, "'", "")
|
|
M_rname = replacetext(M_rname, "\"", "")
|
|
M_rname = replacetext(M_rname, "\\", "")
|
|
|
|
var/M_key = M.key
|
|
M_key = replacetext(M_key, "'", "")
|
|
M_key = replacetext(M_key, "\"", "")
|
|
M_key = replacetext(M_key, "\\", "")
|
|
|
|
//output for each mob
|
|
dat += {"
|
|
|
|
<tr id='data[i]' name='[i]' onClick="addToLocked('item[i]','data[i]','notice_span[i]')">
|
|
<td align='center' bgcolor='[color]'>
|
|
<span id='notice_span[i]'></span>
|
|
<a id='link[i]'
|
|
onmouseover='expand("item[i]","[M_job]","[M_name]","[M_rname]","--unused--","[M_key]","[M.lastKnownIP]",[is_antagonist],"\ref[M]")'
|
|
>
|
|
<b id='search[i]'>[M_name] - [M_rname] - [M_key] ([M_job])</b>
|
|
</a>
|
|
<br><span id='item[i]'></span>
|
|
</td>
|
|
</tr>
|
|
|
|
"}
|
|
|
|
i++
|
|
|
|
|
|
//player table ending
|
|
dat += {"
|
|
</table>
|
|
</span>
|
|
|
|
<script type='text/javascript'>
|
|
var maintable = document.getElementById("maintable_data_archive");
|
|
var complete_list = maintable.innerHTML;
|
|
</script>
|
|
</body></html>
|
|
"}
|
|
|
|
usr << browse(HTML_SKELETON(dat), "window=players;size=600x480")
|
|
|
|
//The old one
|
|
/datum/admins/proc/player_panel_old()
|
|
if (!usr.client.holder)
|
|
return
|
|
|
|
var/dat = {"<html><head><title>Player Menu</title></head>
|
|
<body><table border=1 cellspacing=5><B><tr><th>Name</th><th>Real Name</th><th>Assigned Job</th><th>Key</th><th>Options</th><th>PM</th><th>Traitor?</th></tr></B>"}
|
|
//add <th>IP:</th> to this if wanting to add back in IP checking
|
|
//add <td>(IP: [M.lastKnownIP])</td> if you want to know their ip to the lists below
|
|
var/list/mobs = sortmobs()
|
|
|
|
for(var/mob/M in mobs)
|
|
if(!M.ckey)
|
|
continue
|
|
|
|
dat += "<tr><td>[M.name]</td>"
|
|
if(isAI(M))
|
|
dat += "<td>AI</td>"
|
|
else if(isrobot(M))
|
|
dat += "<td>Cyborg</td>"
|
|
else if(ishuman(M))
|
|
dat += "<td>[M.real_name]</td>"
|
|
else if(istype(M, /mob/living/silicon/pai))
|
|
dat += "<td>pAI</td>"
|
|
else if(istype(M, /mob/new_player))
|
|
dat += "<td>New Player</td>"
|
|
else if(isobserver(M))
|
|
dat += "<td>Ghost</td>"
|
|
else if(ismonkey(M))
|
|
dat += "<td>Monkey</td>"
|
|
else if(isalien(M))
|
|
dat += "<td>Alien</td>"
|
|
else if(isborer(M))
|
|
dat += "<td>Borer</td>"
|
|
else
|
|
dat += "<td>Unknown</td>"
|
|
|
|
|
|
if(istype(M,/mob/living/carbon/human))
|
|
var/mob/living/carbon/human/H = M
|
|
if(H.mind && H.mind.assigned_role)
|
|
dat += "<td>[H.mind.assigned_role]</td>"
|
|
else
|
|
dat += "<td>NA</td>"
|
|
|
|
|
|
dat += {"<td>[(M.client ? "[M.client]" : "No client")]</td>
|
|
<td align=center><A HREF='?src=\ref[src];adminplayeropts=\ref[M]'>X</A></td>
|
|
<td align=center><A href='?src=\ref[usr];priv_msg=\ref[M]'>PM</A></td>
|
|
"}
|
|
switch(is_special_character(M))
|
|
if(0)
|
|
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'>Traitor?</A></td>"}
|
|
if(1)
|
|
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red>Traitor?</font></A></td>"}
|
|
if(2)
|
|
dat += {"<td align=center><A HREF='?src=\ref[src];traitor=\ref[M]'><font color=red><b>Traitor?</b></font></A></td>"}
|
|
|
|
dat += "</table></body></html>"
|
|
|
|
usr << browse(dat, "window=players;size=640x480")
|