Well if it's simple then try doing it yourself and get back to us.. maybe it is.. but you will never know until you tryHi community,
I need script for allow send private message if player have level 50 or more.
I abelive that its simple.
Thank's
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;
}
Below this:game.cpp, replace this
with this
C++: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; }
player->sendTextMessage(MSG_STATUS_SMALL, "You must be level 50 to send private messages.");
you're right, forgot to stop execution if the player's level doesn't meet the requirementBelow this:
you should write "return false;", shouldn't you?Code:player->sendTextMessage(MSG_STATUS_SMALL, "You must be level 50 to send private messages.");
(I'm not criticizing, just reporting a possibly mistake
)
changeI will test. Thanks.
if (player->getLevel() < 50) {
player->sendTextMessage(MSG_STATUS_SMALL, "You must be level 50 to send private messages.");
}
if (player->getLevel() < 50) {
player->sendTextMessage(MSG_STATUS_SMALL, "You must be level 50 to send private messages.");
return false;
}