ID:151399
 
mob
Login()
..()
var
//Vars, so everything works right
Muted = 0//Change this var to the mute var in your game
BlockList = list()
PM = 1
Topic(href,href_list[])
switch(href_list["action"])
if("PM")//action, if its PM it goes on, if its not it just does nothing
if(usr.Muted) {usr<<output("<font color=silver>You cannot do this while muted</font color>","Other"); return}
if(!src.PM) {usr<<"<font color=red>[src] has turned off their PM</font color>"; return}
if(!usr.PM) {usr<<"<font color=red>You have your PM turned off</font color>"; return}
if(usr.key in src.BlockList){usr<<"<font color=red>[src] has blocked your key</font color>"; return}
if(src.key in usr.BlockList){usr<<"<font color=red>You have [src] blocked</font color>"; return}
var/msg = input("What would you like to privately say to [src] ([src.key])?","Private Message") as text|null
if(!msg) return
//sends the message and tells the user the message they sent
usr<<"<font color=red>(PM)</font color><font color=blue><--- To: <a href=?src=\ref[src];action=PM>[src]</a>:</font color> [html_encode(msg)]"
src<<"<font color=red>(PM)</font color><font color=blue>---> From: <a href=?src=\ref[usr];action=PM>[usr]</a>:</font color> [html_encode(msg)]"
. = ..()
verb
Whisper()
set category = "Commands"
if(usr.Muted) {usr<<output("<font color=silver>You cannot do this while muted</font color>","Other"); return}
var/list/players = list()
for(var/mob/M in world)
if(M.client && M.PM) players += M
if(M == usr) players-=M
var/mob/M = input("Who would you like to privately message?","Whisper")as null|anything in players
if(!M) return
var/msg = input("What would you like to privately say to [M] ([M.key])?","Private Message") as text|null
if(!msg) return
if(!M.PM) {usr<<"<font color=red>[M] has turned off their PM</font color>"; return}
if(usr.key in M.BlockList){usr<<"<font color=red>[M] has blocked your key</font color>"; return}
if(M.key in usr.BlockList){usr<<"<font color=red>You have [M] blocked</font color>"; return}
//sends message freely
usr<<"<font color=red>(PM)</font color><font color=blue><--- To: <a href=?src=\ref[M];action=PM>[M]</a>:</font color> [html_encode(msg)]"
M<<"<font color=red>(PM)</font color><font color=blue>---> From: <a href=?src=\ref[usr];action=PM>[usr]</a>:</font color> [html_encode(msg)]"
Options()
set category = "Commands"
switch(input("Private Message Options","Options")\
in list("PM On/Off","Block Someone","Unblock Someone","View Blocked List","Cancel"))
if("PM On/Off")//PM toggle, turns off and on just incase you dont want people messaging you
if(usr.PM)
usr.PM = 0
usr<<"<font color=red>PM Off/font color>"
else
usr.PM = 1
usr<<"<font color=red>PM On</font color>"
if("Block Someone")
var/list/players = list()
for(var/mob/M in world)
if(M.client) players+=M
if(M == usr) players-=M
if(M.key in usr.BlockList) players-=M
var/mob/M = input("Who would you like to block?\n- This will block their key","PM Block")as null|anything in players
if(!M) return
usr.BlockList+="[M.key]"
usr<<"<font color=green>You have fully blocked [M] ([M.key])</font color>"
if("Unblock Someone")//You can unblock a person that is offline that you have blocked!
var/list/players = list()
for(var/M in usr.BlockList)
players+=M
var/mob/M = input("Who would you like to unblock?\n- This will unblock their key","PM Unblock")as null|anything in players
if(!M) return
usr.BlockList-="[M]"
usr<<"<font color=green>You have fully Unblocked \"[M]\"</font color>"
if("View Blocked List")//View your block list, so you know who is or isn't blocked
usr<<"<font color=red><big>[usr] Block List</big></font color>"
var/Blocked = 0
for(var/B in usr.BlockList)
Blocked++
usr<<"<font color=yellow>[B]</font color>"
usr<<"<font color=red>People Blocked: [Blocked]</font color>"//tells them how many ppl are blocked
if("Cancel")
return

Two things:
No one wants to sort through all that code. Why not test it (hint, you can load DreamDaemon up and log two keys in), it might be easier for you to do it that way.
This should be posted in code problems (assuming there's a problem with it).
In response to DivineTraveller
How do I add other keys through dream daemon?
In response to Bigmnm
Log in as one key, relog onto another key, and login as that.
In response to Thelavaking
well i am no expert but why did you null you text