I posted the word censoring bit in the announcement thread. This might help you with the PM part:
$spaceFix="_"; //<--- This is the character you want people type in place of a space for people's names.
function serverCmdPM(%client,%string)
{
%name=strReplace(firstWord(%string),$spaceFix," ");
%msg=restWords(%string);
for(%i=0;%i<clientGroup.getCount();%i++)
{
%c=clientGroup.getObject(%i);
if(isObject(%c) && %c.name $= %name)
{
messageClient(%c,'PM','\c3%1[PM]: %2',%client.name,%msg);
}
else if(isObject(%c) && %c.name $= %client.name)
{
messageClient(%c,'PM','\c3You[PM - %1]: %2',%name,%msg);
}
}
messageClient(%client,'Warning','That player does not exist!');
}