This is pretty cool, although I don't believe you can use a # in a Perl script in the newer revisions of the source, as it comes up as unrecognized command. Here's the C++ for what I'm talking about.
I have personally tried #commands for my server and it doesn't work due to this code.
Code:
case 8:
{ // /say
if(message[0] == COMMAND_CHAR)
{
if(command_dispatch(this, message) == -2)
{
if(parse->PlayerHasQuestSub(EVENT_COMMAND))
{
int i = parse->EventPlayer(EVENT_COMMAND, this, message, 0);
if(i != 0)
{
Message(13, "Command '%s' not recognized.", message);
}
}
else
{
Message(13, "Command '%s' not recognized.", message);
}
}
break;
}
Mob* sender = this;
if (GetPet() && GetPet()->FindType(SE_VoiceGraft))
sender = GetPet();
entity_list.ChannelMessage(sender, chan_num, language, lang_skill, message);
parse->EventPlayer(EVENT_SAY, this, message, language);
if (sender != this)
break;
if(quest_manager.ProximitySayInUse())
entity_list.ProcessProximitySay(message, this, language);
if (GetTarget() != 0 && GetTarget()->IsNPC())
{
if(!GetTarget()->CastToNPC()->IsEngaged())
{
CheckLDoNHail(GetTarget());
CheckEmoteHail(GetTarget(), message);
if(DistNoRootNoZ(*GetTarget()) <= 200)
{
NPC *tar = GetTarget()->CastToNPC();
parse->EventNPC(EVENT_SAY, tar->CastToNPC(), this, message, language);
if(RuleB(TaskSystem, EnableTaskSystem))
{
if(UpdateTasksOnSpeakWith(tar->GetNPCTypeID()))
{
tar->DoQuestPause(this);
}
}
}
}
else
{
if (DistNoRootNoZ(*GetTarget()) <= 200)
{
parse->EventNPC(EVENT_AGGRO_SAY, GetTarget()->CastToNPC(), this, message, language);
}
}
}
break;
}