If you modify Activate() to take a Tokenizer object instead of StringClass, you could write commands in a similar way to this:
void Ping::Activate(int ID, int Type, Tokenizer Msg)
{
if (Msg.Size() > 1)
{
int Count = Functions::Get_Part_Names_Fixed(Msg[2]);
if (Count < 1)
{
Functions::Page(ID,"Player not found.");
}
else if (Count > 1)
{
Functions::Page(ID, "Multiple players found.");
}
else
{
int OtherID = Get_Player_ID(Functions::Get_Part_Name_Fixed(Msg[2]));
Player_t* p = Player::Get(OtherID);
Functions::Page(ID,"%s's ping is %d.", p->Nick, Get_Ping(p->PlayerId));
}
}
else
{
Functions::Page(ID,"Your ping is %d.", Get_Ping(ID));
}
}