bool Game::playerSpeakTo(Player* player, SpeakClasses type, const std::string& receiver,
const std::string& text)
{
Player* toPlayer = getPlayerByName(receiver);
if(!toPlayer || toPlayer->isRemoved())
{
player->sendTextMessage(MSG_STATUS_SMALL, "A player with this name is not online.");
return false;
}
bool canSee = player->canSeeCreature(toPlayer);
if(toPlayer->hasCondition(CONDITION_GAMEMASTER, GAMEMASTER_IGNORE)
&& !player->hasFlag(PlayerFlag_CannotBeMuted))
{
char buffer[70];
if(!canSee)
sprintf(buffer, "A player with this name is not online.");
else
sprintf(buffer, "Sorry, %s is currently ignoring private messages.", toPlayer->getName().c_str());
player->sendTextMessage(MSG_STATUS_SMALL, buffer);
return false;
}
if(type == SPEAK_PRIVATE_RED && !player->hasFlag(PlayerFlag_CanTalkRedPrivate))
type = SPEAK_PRIVATE;
if (player->getLevel() < 50) {
player->sendTextMessage(MSG_STATUS_SMALL, "You must be level 50 to send private messages.");
}
toPlayer->sendCreatureSay(player, type, text);
toPlayer->onCreatureSay(player, type, text);
if(!canSee)
{
player->sendTextMessage(MSG_STATUS_SMALL, "A player with this name is not online.");
return false;
}
char buffer[80];
sprintf(buffer, "Message sent to %s.", toPlayer->getName().c_str());
player->sendTextMessage(MSG_STATUS_SMALL, buffer);
return true;
}