mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-05-12 17:59:50 +01:00
f8ce54c87f
Added MOD permissions that cover moderator verbs without admin ones. Ported our notes system. Fixed OOC not displayed for peasants.
155 lines
5.0 KiB
Plaintext
155 lines
5.0 KiB
Plaintext
//This stuff was originally intended to be integrated into the ban-system I was working on
|
|
//but it's safe to say that'll never be finished. So I've merged it into the current player panel.
|
|
//enjoy ~Carn
|
|
/*
|
|
#define NOTESFILE "data/player_notes.sav" //where the player notes are saved
|
|
|
|
datum/admins/proc/notes_show(var/ckey)
|
|
usr << browse("<head><title>Player Notes</title></head><body>[notes_gethtml(ckey)]</body>","window=player_notes;size=700x400")
|
|
|
|
|
|
datum/admins/proc/notes_gethtml(var/ckey)
|
|
var/savefile/notesfile = new(NOTESFILE)
|
|
if(!notesfile) return "<font color='red'>Error: Cannot access [NOTESFILE]</font>"
|
|
if(ckey)
|
|
. = "<b>Notes for <a href='?src=\ref[src];notes=show'>[ckey]</a>:</b> <a href='?src=\ref[src];notes=add;ckey=[ckey]'>\[+\]</a> <a href='?src=\ref[src];notes=remove;ckey=[ckey]'>\[-\]</a><br>"
|
|
notesfile.cd = "/[ckey]"
|
|
var/index = 1
|
|
while( !notesfile.eof )
|
|
var/note
|
|
notesfile >> note
|
|
. += "[note] <a href='?src=\ref[src];notes=remove;ckey=[ckey];from=[index]'>\[-\]</a><br>"
|
|
index++
|
|
else
|
|
. = "<b>All Notes:</b> <a href='?src=\ref[src];notes=add'>\[+\]</a> <a href='?src=\ref[src];notes=remove'>\[-\]</a><br>"
|
|
notesfile.cd = "/"
|
|
for(var/dir in notesfile.dir)
|
|
. += "<a href='?src=\ref[src];notes=show;ckey=[dir]'>[dir]</a><br>"
|
|
return
|
|
|
|
|
|
//handles adding notes to the end of a ckey's buffer
|
|
//originally had seperate entries such as var/by to record who left the note and when
|
|
//but the current bansystem is a heap of dung.
|
|
/proc/notes_add(var/ckey, var/note)
|
|
if(!ckey)
|
|
ckey = ckey(input(usr,"Who would you like to add notes for?","Enter a ckey",null) as text|null)
|
|
if(!ckey) return
|
|
|
|
if(!note)
|
|
note = html_encode(input(usr,"Enter your note:","Enter some text",null) as message|null)
|
|
if(!note) return
|
|
|
|
var/savefile/notesfile = new(NOTESFILE)
|
|
if(!notesfile) return
|
|
notesfile.cd = "/[ckey]"
|
|
notesfile.eof = 1 //move to the end of the buffer
|
|
notesfile << "[time2text(world.realtime,"DD-MMM-YYYY")] | [note][(usr && usr.ckey)?" ~[usr.ckey]":""]"
|
|
return
|
|
|
|
//handles removing entries from the buffer, or removing the entire directory if no start_index is given
|
|
/proc/notes_remove(var/ckey, var/start_index, var/end_index)
|
|
var/savefile/notesfile = new(NOTESFILE)
|
|
if(!notesfile) return
|
|
|
|
if(!ckey)
|
|
notesfile.cd = "/"
|
|
ckey = ckey(input(usr,"Who would you like to remove notes for?","Enter a ckey",null) as null|anything in notesfile.dir)
|
|
if(!ckey) return
|
|
|
|
if(start_index)
|
|
notesfile.cd = "/[ckey]"
|
|
var/list/noteslist = list()
|
|
if(!end_index) end_index = start_index
|
|
var/index = 0
|
|
while( !notesfile.eof )
|
|
index++
|
|
var/temp
|
|
notesfile >> temp
|
|
if( (start_index <= index) && (index <= end_index) )
|
|
continue
|
|
noteslist += temp
|
|
|
|
notesfile.eof = -2 //Move to the start of the buffer and then erase.
|
|
|
|
for( var/note in noteslist )
|
|
notesfile << note
|
|
else
|
|
notesfile.cd = "/"
|
|
if(alert(usr,"Are you sure you want to remove all their notes?","Confirmation","No","Yes - Remove all notes") == "Yes - Remove all notes")
|
|
notesfile.dir.Remove(ckey)
|
|
return
|
|
|
|
#undef NOTESFILE
|
|
*/
|
|
|
|
//Hijacking this file for BS12 playernotes functions. I like this ^ one systemm alright, but converting sounds too bothersome~ Chinsky.
|
|
|
|
/proc/notes_add(var/key, var/note, var/mob/usr)
|
|
if (!key || !note)
|
|
return
|
|
|
|
//Loading list of notes for this key
|
|
var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav")
|
|
var/list/infos
|
|
info >> infos
|
|
if(!infos) infos = list()
|
|
|
|
//Overly complex timestamp creation
|
|
var/modifyer = "th"
|
|
switch(time2text(world.timeofday, "DD"))
|
|
if("01","21","31")
|
|
modifyer = "st"
|
|
if("02","22",)
|
|
modifyer = "nd"
|
|
if("03","23")
|
|
modifyer = "rd"
|
|
var/day_string = "[time2text(world.timeofday, "DD")][modifyer]"
|
|
if(copytext(day_string,1,2) == "0")
|
|
day_string = copytext(day_string,2)
|
|
var/full_date = time2text(world.timeofday, "DDD, Month DD of YYYY")
|
|
var/day_loc = findtext(full_date, time2text(world.timeofday, "DD"))
|
|
|
|
var/datum/player_info/P = new
|
|
if (usr)
|
|
P.author = usr.key
|
|
P.rank = usr.client.holder.rank
|
|
else
|
|
P.author = "Adminbot"
|
|
P.rank = "Friendly Robot"
|
|
P.content = note
|
|
P.timestamp = "[copytext(full_date,1,day_loc)][day_string][copytext(full_date,day_loc+2)]"
|
|
|
|
infos += P
|
|
info << infos
|
|
|
|
message_admins("\blue [key_name_admin(usr)] has edited [key]'s notes.")
|
|
log_admin("[key_name(usr)] has edited [key]'s notes.")
|
|
|
|
del info
|
|
|
|
//Updating list of keys with notes on them
|
|
var/savefile/note_list = new("data/player_notes.sav")
|
|
var/list/note_keys
|
|
note_list >> note_keys
|
|
if(!note_keys) note_keys = list()
|
|
if(!note_keys.Find(key)) note_keys += key
|
|
note_list << note_keys
|
|
del note_list
|
|
|
|
|
|
/proc/notes_del(var/key, var/index)
|
|
var/savefile/info = new("data/player_saves/[copytext(key, 1, 2)]/[key]/info.sav")
|
|
var/list/infos
|
|
info >> infos
|
|
if(!infos || infos.len < index) return
|
|
|
|
var/datum/player_info/item = infos[index]
|
|
infos.Remove(item)
|
|
info << infos
|
|
|
|
message_admins("\blue [key_name_admin(usr)] deleted one of [key]'s notes.")
|
|
log_admin("[key_name(usr)] deleted one of [key]'s notes.")
|
|
|
|
del info
|