TG: Fixed dust() and gib() leaving invisible overlays everywhere

Fixed deaths at the end of nuke rounds, optimised the code a little

gib() is now hgib() (ie it's specific to humans). gibs.dm() now only spawns
generic gibs that could be from any mob.
Likewise for dust.
Awaiting generic dust() and gib() animations.

Fixed (hopefully, depends if firewalls block this method) getruntimelog.
GameMasters no longer have the getruntimelog verb. Instead they have
.giverutimelog . This allows them to grant a specific client access to the
server's runtime logs. (they can grant themself access this way too). NOTE:
runtime logs can be used to meta, only grant access to coders or people you
trust. It may also be wise to ensure they do not play in the current round.

Introducing .getserverlog . It allows any admin above moderator to access ANY
archived server/attack logs. Should mkae processing forum ban requests a lot
easier since all admins with ban capabilities now have access.

getruntimelog renamed to .getruntimelog . File-request spam prevention increased
to 60seconds to discourage access serverlogs too much! They can reach sizes of
4Mb sometimes so please be responsible with them admins.

runtime logs should now be saved to /data/logs/runtime/ (you may have to create
this folder yourself)

ummm... fixed gibs appearing below shuttle turfs. Trimmed some uneeded fluff
text from the logs.
Revision: r3509
Author: 	 elly1...@rocketmail.com
This commit is contained in:
Erthilo
2012-05-06 18:50:52 +01:00
parent 241dcc742e
commit d21cbab61c
21 changed files with 455 additions and 255 deletions
-41
View File
@@ -3195,47 +3195,6 @@ var/global/BSACooldown = 0
*/
/obj/admins/proc/view_txt_log()
set category = "Admin"
set desc="Shows todays server log in new window"
set name="Show Server Log"
var/path = "data/logs/[time2text(world.realtime,"YYYY")]/[time2text(world.realtime,"MM")]-[time2text(world.realtime,"Month")]/[time2text(world.realtime,"DD")]-[time2text(world.realtime,"Day")].log"
var/output = {"<html>
<head>
<title>[time2text(world.realtime,"Day, MMM DD, YYYY")] - Log</title>
</head>
<body>
<pre>
[file2text(path)]
</pre>
</body>
</html>"}
usr << browse(output,"window=server_logfile")
onclose(usr,"server_logfile")
//feedback_add_details("admin_verb","VTL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
/obj/admins/proc/view_atk_log()
set category = "Admin"
set desc="Shows todays server attack log in new window"
set name="Show Server Attack Log"
var/path = "data/logs/[time2text(world.realtime,"YYYY")]/[time2text(world.realtime,"MM")]-[time2text(world.realtime,"Month")]/[time2text(world.realtime,"DD")]-[time2text(world.realtime,"Day")] Attack.log"
var/output = {"<html>
<head>
<title>[time2text(world.realtime,"Day, MMM DD, YYYY")] - Attack Log</title>
</head>
<body>
<pre>
[file2text(path)]
</pre>
</body>
</html>"}
usr << browse(output,"window=server_logfile")
onclose(usr,"server_logfile")
// feedback_add_details("admin_verb","SSAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
/*/client/proc/unjobban_panel()
set name = "Unjobban Panel"
set category = "Admin"
+6 -6
View File
@@ -183,7 +183,8 @@
verbs += /obj/admins/proc/view_atk_log
verbs += /obj/admins/proc/toggleaban //abandon mob
verbs += /obj/admins/proc/show_traitor_panel
verbs += /client/proc/cmd_admin_remove_plasma
verbs += /client/proc/getserverlog //fetch an old serverlog to look at
//verbs += /client/proc/cmd_admin_remove_plasma --This proc is outdated, does not do anything
verbs += /client/proc/admin_call_shuttle
verbs += /client/proc/admin_cancel_shuttle
verbs += /client/proc/cmd_admin_dress
@@ -289,7 +290,7 @@
verbs += /client/proc/everyone_random
verbs += /client/proc/only_one
verbs += /client/proc/deadmin_self
// verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
verbs += /client/proc/giveruntimelog //used by coders to retrieve runtime logs
verbs += /client/proc/cinematic //used by coders to retrieve runtime logs
verbs += /client/proc/enable_debug_verbs
verbs += /client/proc/kill_air
@@ -419,9 +420,9 @@
verbs -= /client/proc/deadmin_self
verbs -= /client/proc/jumptocoord
verbs -= /client/proc/everyone_random
// verbs -= /client/proc/giveruntimelog //used by coders to retrieve runtime logs
// verbs -= /client/proc/getserverlog
verbs -= /client/proc/cinematic
verbs -= /client/proc/giveruntimelog //used by coders to retrieve runtime logs
verbs -= /client/proc/getserverlog
verbs -= /client/proc/cinematic //show a cinematic sequence
verbs -= /client/proc/cmd_admin_change_custom_event
verbs -= /client/proc/admin_invis
verbs -= /client/proc/callprocgen
@@ -433,7 +434,6 @@
verbs -= /client/proc/rnd_check_designs
verbs -= /client/proc/make_tajaran
verbs -= /client/proc/CarbonCopy
verbs -= /client/proc/getruntimelog //used by coders to retrieve runtime logs
verbs -= /proc/possess
verbs -= /proc/release
//verbs -= /client/proc/give_spell --Merged with view variables
-1
View File
@@ -2,7 +2,6 @@
set category = "Special Verbs"
set name = "Dsay" //Gave this shit a shorter name so you only have to time out "dsay" rather than "dead say" to use it --NeoFite
set hidden = 1
// All admins should be authenticated, but... what if?
if(!src.holder)
src << "Only administrators may use this command."
return
+143
View File
@@ -0,0 +1,143 @@
/*
HOW DO I LOG RUNTIMES?
Firstly, start dreamdeamon if it isn't already running. Then select "world>Log Session" (or press the F3 key)
navigate the popup window to the data/logs/runtime/ folder from where your tgstation .dmb is located.
(you may have to make this folder yourself)
OPTIONAL: you can select the little checkbox down the bottom to make dreamdeamon save the log everytime you
start a world. Just remember to repeat these steps with a new name when you update to a new revision!
Save it with the name of the revision your server uses (e.g. r3459.txt).
Game Masters will now be able to grant access any runtime logs you have archived this way!
This will allow us to gather information on bugs across multiple servers and make maintaining the TG
codebase for the entire /TG/station commuity a TONNE easier :3 Thanks for your help!
*/
#define FTPDELAY 600 //600 tick delay to discourage spam
/*
These procs have failsafes built in to prevent spamming of file requests. As such it can only be used once every
[FTPDELAY] ticks. This can be changed by modifying FTPDELAY's value above.
PLEASE USE RESPONSIBLY, only download from the server if the log isn't already available elsewhere!
Bandwidth is expensive and lags are lame. Some log files canr each sizes of 4MB!
*/
//This proc allows Game Masters to grant a client access to the .getruntimelog verb
//Permissions expire at the end of each round.
//Runtimes can be used to meta or spot game-crashing exploits so it's advised to only grant coders that
//you trust access. Also, it may be wise to ensure that they are not going to play in the current round.
/client/proc/giveruntimelog()
set name = ".giveruntimelog"
set desc = "Give somebody access to any session logfiles saved to the /log/runtime/ folder."
set category = null
if( !src.holder || holder.rank != "Game Master" )
src << "<font color='red'>Only Game Masters may use this command.</font>"
return
var/list/clients = list()
for(var/client/C)
clients += C
var/client/target = input(src,"Choose somebody to grant access to the server's runtime logs (permissions expire at the end of each round):","Grant Permissions",null) as null|anything in clients
if( !target || !istype(target,/client) )
src << "<font color='red'>Error: giveruntimelog(): Client not found.</font>"
return
target.verbs |= /client/proc/getruntimelog
target << "<font color='red'>You have been granted access to runtime logs. Please use them responsibly or risk being banned.</font>"
return
//This proc allows download of runtime logs saved within the data/logs/ folder by dreamdeamon.
//It works similarly to show-server-log.
/client/proc/getruntimelog()
set name = ".getruntimelog"
set desc = "Retrieve any session logfiles saved by dreamdeamon."
set category = null
var/time_to_wait = fileaccess_timer - world.time
if(time_to_wait > 0)
src << "<font color='red'>Error: getruntimelog(): spam prevention. Please wait [round(time_to_wait/10)] seconds.</font>"
return
fileaccess_timer = world.time + FTPDELAY
var/path = "data/logs/runtime/"
var/list/path_list = flist(path)
var/choice = input(src,"Choose a runtime-log to download:","Download",null) as null|anything in path_list
if(!choice) return
path += "[choice]"
if(!fexists(path))
src << "<font color='red'>Error: getruntimelog(): Files not found/Invalid file([path]).</font>"
return
message_admins("[src] accessed runtime log: [path]")
src << run( file(path) )
return
//This proc allows download of past server logs saved within the data/logs/ folder.
//It works similarly to show-server-log.
/client/proc/getserverlog()
set name = ".getserverlog"
set desc = "Like 'Show Server Log' but it fetches old logs if there are any."
set category = null
var/time_to_wait = fileaccess_timer - world.time
if(time_to_wait > 0)
src << "<font color='red'>Error: getserverlog(): spam prevention. Please wait [round(time_to_wait/10)] seconds.</font>"
return
fileaccess_timer = world.time + FTPDELAY
var/path = "data/logs/"
for(var/i=0, i<4, i++) //only bother searching up to 4 sub-directories. If we don't find it by then: give up.
var/list/path_list = flist(path)
if(path_list.len) path_list -= "runtime/"
else break
var/choice = input(src,"Choose a directory to access:","Download",null) as null|anything in path_list
if(!choice) return
path += "[choice]"
if( text2ascii(choice,length(choice)) != 47 ) //not a directory, finish up
if(!fexists(path))
src << "<font color='red'>Error: getserverlog(): File not found/Invalid file([path]).</font>"
return
src << run( file(path) )
return
return
//Other log stuff put here for the sake of organisation
//Shows today's server log
/obj/admins/proc/view_txt_log()
set category = "Admin"
set name = "Show Server Log"
set desc = "Shows today's server log."
var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")].log"
if( fexists(path) )
src << run( file(path) )
else
src << "<font color='red'>Error: view_txt_log(): File not found/Invalid path([path]).</font>"
return
feedback_add_details("admin_verb","VTL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
//Shows today's attack log
/obj/admins/proc/view_atk_log()
set category = "Admin"
set name = "Show Server Attack Log"
set desc = "Shows today's server attack log."
var/path = "data/logs/[time2text(world.realtime,"YYYY/MM-Month/DD-Day")] Attack.log"
if( fexists(path) )
src << run( file(path) )
else
src << "<font color='red'>Error: view_atk_log(): File not found/Invalid path([path]).</font>"
return
usr << run( file(path) )
feedback_add_details("admin_verb","SSAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
-53
View File
@@ -1,53 +0,0 @@
/*
HOW DO I LOG RUNTIMES?
Firstly, start dreamdeamon if it isn't already running. Then select "world>Log Session" (or press the F3 key)
navigate the popup window to the log/runtime/ folder from where your tgstation .dmb is located.
OPTIONAL: you can select the little checkbox down the bottom to make dreamdeamon save the log everytime you
start a world. Just remember to repeat these steps with a new name when you update to a new revision!
Save it with the name of the revision your server uses (e.g. r3459.txt).
Coders with the Game Master rank will now be able to access any runtime logs you have archived this way!
This will allow us to gather information on bugs across multiple servers and make maintaining the TG
codebase for the entire /TG/station commuity a TONNE easier :3 Thanks for your help!
*/
#define FTPDELAY 200 //20 second delay to prevent spam
//This proc allows GameMasters to download txt files saved to the log/runtime/ folder on the server.
//In effect this means the server owner can log game sessions through DreamDeamon to that folder and
//Coders (with access) can download logs (old and current).
//To make life easier on everyone please name logfiles according to the revision number in use!
//This proc has a failsafe built in to prevent spamming of ftp requests. As such it can only be used once every
//20 seconds. This can be changed by modifying FTPDELAY's value.
//PLEASE USE RESPONSIBLY, only download from the server if the log isn't already available elsewhere!
//Bandwidth is expensive and lags are lame. Although txt files of a few kB shouldn't cause problems really ~Carn
/client/proc/getruntimelog()
set name = "getruntimelog"
set desc = "Retrieve any session logfiles saved by dreamdeamon"
set category = "Debug"
set hidden = 1
if( !src.holder || holder.rank != "Game Master" )
src << "<font color='red'>Only Game Masters may use this command.</font>"
return
var/time_to_wait = fileaccess_timer - world.time
if(time_to_wait > 0)
src << "<font color='red'>Error: getruntimelog(): FTP-request spam prevention. Please wait [round(time_to_wait/10)] seconds.</font>"
return
fileaccess_timer = world.time + FTPDELAY
var/list/list_of_runtimelogs = flist("log/runtime/")
var/choice = input(src,"Choose a runtime-log to download:","Download",null) in list_of_runtimelogs
if(!choice || !fexists("log/runtime/[choice]"))
src << "<font color='red'>Error: getruntimelog(): Files not found/Invalid file([choice]).</font>"
return
src << ftp("log/runtime/[choice]")
return