aboutsummaryrefslogtreecommitdiff
path: root/src/game/Level1.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-02-02 09:50:13 -0600
committermegamage <none@none>2009-02-02 09:50:13 -0600
commitd487e6d0394892634737238faa6f3d87a4718c88 (patch)
tree0bae8d885564b64ed982ddb7cc390d08208d6c3c /src/game/Level1.cpp
parentf6595630c3958b157905fd5debd8b7da2efa3300 (diff)
[7219] Improvements ins shift-links work.
* Implement support 'Hplayer' link type. Mostly as player name highlights in command messages. * Support shift-links parsing withoyt '|c' color prefix * Many related code cleanups. Author: VladimirMangos --HG-- branch : trunk
Diffstat (limited to 'src/game/Level1.cpp')
-rw-r--r--src/game/Level1.cpp144
1 files changed, 75 insertions, 69 deletions
diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp
index 60ef0fc98c9..80bca8c1b2c 100644
--- a/src/game/Level1.cpp
+++ b/src/game/Level1.cpp
@@ -660,16 +660,9 @@ bool ChatHandler::HandleGPSCommand(const char* args)
WorldObject *obj = NULL;
if (*args)
{
- std::string name = args;
- if(normalizePlayerName(name))
- obj = objmgr.GetPlayer(name.c_str());
-
- if(!obj)
- {
- uint64 guid = extractGuidFromLink((char*)args);
- if(guid)
- obj = (WorldObject*)ObjectAccessor::GetObjectByTypeMask(*m_session->GetPlayer(),guid,TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT);
- }
+ uint64 guid = extractGuidFromLink((char*)args);
+ if(guid)
+ obj = (WorldObject*)ObjectAccessor::GetObjectByTypeMask(*m_session->GetPlayer(),guid,TYPEMASK_UNIT|TYPEMASK_GAMEOBJECT);
if(!obj)
{
@@ -747,9 +740,8 @@ bool ChatHandler::HandleNamegoCommand(const char* args)
if(!*args)
return false;
- std::string name = args;
-
- if(!normalizePlayerName(name))
+ std::string name = extractPlayerNameFromLink((char*)args);
+ if(name.empty())
{
SendSysMessage(LANG_PLAYER_NOT_FOUND);
SetSentErrorMessage(true);
@@ -759,13 +751,14 @@ bool ChatHandler::HandleNamegoCommand(const char* args)
Player *chr = objmgr.GetPlayer(name.c_str());
if (chr)
{
+ std::string nameLink = playerLink(chr->GetName());
// check online security
if (HasLowerSecurity(chr, 0))
return false;
if(chr->IsBeingTeleported()==true)
{
- PSendSysMessage(LANG_IS_TELEPORTED, chr->GetName());
+ PSendSysMessage(LANG_IS_TELEPORTED, nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -775,7 +768,7 @@ bool ChatHandler::HandleNamegoCommand(const char* args)
if(pMap->IsBattleGroundOrArena())
{
// cannot summon to bg
- PSendSysMessage(LANG_CANNOT_SUMMON_TO_BG,chr->GetName());
+ PSendSysMessage(LANG_CANNOT_SUMMON_TO_BG,nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -785,7 +778,7 @@ bool ChatHandler::HandleNamegoCommand(const char* args)
if( cMap->Instanceable() && cMap->GetInstanceId() != pMap->GetInstanceId() )
{
// cannot summon from instance to instance
- PSendSysMessage(LANG_CANNOT_SUMMON_TO_INST,chr->GetName());
+ PSendSysMessage(LANG_CANNOT_SUMMON_TO_INST,nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -796,15 +789,15 @@ bool ChatHandler::HandleNamegoCommand(const char* args)
(m_session->GetPlayer()->GetGroup()->GetLeaderGUID() != m_session->GetPlayer()->GetGUID()) )
// the last check is a bit excessive, but let it be, just in case
{
- PSendSysMessage(LANG_CANNOT_SUMMON_TO_INST,chr->GetName());
+ PSendSysMessage(LANG_CANNOT_SUMMON_TO_INST,nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
}
- PSendSysMessage(LANG_SUMMONING, chr->GetName(),"");
+ PSendSysMessage(LANG_SUMMONING, nameLink.c_str(),"");
if (needReportToTarget(chr))
- ChatHandler(chr).PSendSysMessage(LANG_SUMMONED_BY, GetName());
+ ChatHandler(chr).PSendSysMessage(LANG_SUMMONED_BY, nameLink.c_str());
// stop flight if need
if(chr->isInFlight())
@@ -827,7 +820,9 @@ bool ChatHandler::HandleNamegoCommand(const char* args)
if (HasLowerSecurity(NULL, guid))
return false;
- PSendSysMessage(LANG_SUMMONING, name.c_str(),GetTrinityString(LANG_OFFLINE));
+ std::string nameLink = playerLink(name);
+
+ PSendSysMessage(LANG_SUMMONING, nameLink.c_str(),GetMangosString(LANG_OFFLINE));
// in point where GM stay
Player::SavePositionInDB(m_session->GetPlayer()->GetMapId(),
@@ -855,9 +850,8 @@ bool ChatHandler::HandleGonameCommand(const char* args)
Player* _player = m_session->GetPlayer();
- std::string name = args;
-
- if(!normalizePlayerName(name))
+ std::string name = extractPlayerNameFromLink((char*)args);
+ if(name.empty())
{
SendSysMessage(LANG_PLAYER_NOT_FOUND);
SetSentErrorMessage(true);
@@ -871,20 +865,22 @@ bool ChatHandler::HandleGonameCommand(const char* args)
if (HasLowerSecurity(chr, 0))
return false;
+ std::string nameLink = playerLink(name);
+
Map* cMap = chr->GetMap();
if(cMap->IsBattleGroundOrArena())
{
// only allow if gm mode is on
if (!_player->isGameMaster())
{
- PSendSysMessage(LANG_CANNOT_GO_TO_BG_GM,chr->GetName());
+ PSendSysMessage(LANG_CANNOT_GO_TO_BG_GM,nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
// if already in a bg, don't let port to other
else if (_player->GetBattleGroundId())
{
- PSendSysMessage(LANG_CANNOT_GO_TO_BG_FROM_BG,chr->GetName());
+ PSendSysMessage(LANG_CANNOT_GO_TO_BG_FROM_BG,nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -904,7 +900,7 @@ bool ChatHandler::HandleGonameCommand(const char* args)
// we are in group, we can go only if we are in the player group
if (_player->GetGroup() != chr->GetGroup())
{
- PSendSysMessage(LANG_CANNOT_GO_TO_INST_PARTY,chr->GetName());
+ PSendSysMessage(LANG_CANNOT_GO_TO_INST_PARTY,nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -938,10 +934,12 @@ bool ChatHandler::HandleGonameCommand(const char* args)
_player->SetDifficulty(chr->GetDifficulty());
}
- PSendSysMessage(LANG_APPEARING_AT, chr->GetName());
+ PSendSysMessage(LANG_APPEARING_AT, nameLink.c_str());
+
+ std::string plNameLink = playerLink(_player->GetName());
if (_player->IsVisibleGloballyFor(chr))
- ChatHandler(chr).PSendSysMessage(LANG_APPEARING_TO, _player->GetName());
+ ChatHandler(chr).PSendSysMessage(LANG_APPEARING_TO, plNameLink.c_str());
// stop flight if need
if(_player->isInFlight())
@@ -968,7 +966,9 @@ bool ChatHandler::HandleGonameCommand(const char* args)
if (HasLowerSecurity(NULL, guid))
return false;
- PSendSysMessage(LANG_APPEARING_AT, name.c_str());
+ std::string nameLink = playerLink(name);
+
+ PSendSysMessage(LANG_APPEARING_AT, nameLink.c_str());
// to point where player stay (if loaded)
float x,y,z,o;
@@ -1014,9 +1014,8 @@ bool ChatHandler::HandleRecallCommand(const char* args)
}
else
{
- std::string name = args;
-
- if(!normalizePlayerName(name))
+ std::string name = extractPlayerNameFromLink((char*)args);
+ if(name.empty())
{
SendSysMessage(LANG_PLAYER_NOT_FOUND);
SetSentErrorMessage(true);
@@ -1039,7 +1038,8 @@ bool ChatHandler::HandleRecallCommand(const char* args)
if(chr->IsBeingTeleported())
{
- PSendSysMessage(LANG_IS_TELEPORTED, chr->GetName());
+ std::string nameLink = playerLink(chr->GetName());
+ PSendSysMessage(LANG_IS_TELEPORTED, nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -2399,9 +2399,13 @@ bool ChatHandler::HandleSendMailCommand(const char* args)
// format: name "subject text" "mail text"
- char* pName = strtok((char*)args, " ");
- if(!pName)
+ std::string name = extractPlayerNameFromLink((char*)args);
+ if(name.empty())
+ {
+ SendSysMessage(LANG_PLAYER_NOT_FOUND);
+ SetSentErrorMessage(true);
return false;
+ }
char* tail1 = strtok(NULL, "");
if(!tail1)
@@ -2439,18 +2443,10 @@ bool ChatHandler::HandleSendMailCommand(const char* args)
if (!msgText)
return false;
- // pName, msgSubject, msgText isn't NUL after prev. check
- std::string name = pName;
+ // msgSubject, msgText isn't NUL after prev. check
std::string subject = msgSubject;
std::string text = msgText;
- if(!normalizePlayerName(name))
- {
- SendSysMessage(LANG_PLAYER_NOT_FOUND);
- SetSentErrorMessage(true);
- return false;
- }
-
uint64 receiver_guid = objmgr.GetPlayerGUIDByName(name);
if(!receiver_guid)
{
@@ -2470,7 +2466,8 @@ bool ChatHandler::HandleSendMailCommand(const char* args)
WorldSession::SendMailTo(receiver,messagetype, stationery, sender_guidlo, GUID_LOPART(receiver_guid), subject, itemTextId, NULL, 0, 0, MAIL_CHECK_MASK_NONE);
- PSendSysMessage(LANG_MAIL_SENT, name.c_str());
+ std::string nameLink = playerLink(name);
+ PSendSysMessage(LANG_MAIL_SENT, nameLink.c_str());
return true;
}
@@ -2480,14 +2477,8 @@ bool ChatHandler::HandleNameTeleCommand(const char * args)
if(!*args)
return false;
- char* pName = strtok((char*)args, " ");
-
- if(!pName)
- return false;
-
- std::string name = pName;
-
- if(!normalizePlayerName(name))
+ std::string name = extractPlayerNameFromLink((char*)args);
+ if(name.empty())
{
SendSysMessage(LANG_PLAYER_NOT_FOUND);
SetSentErrorMessage(true);
@@ -2522,16 +2513,21 @@ bool ChatHandler::HandleNameTeleCommand(const char * args)
if (HasLowerSecurity(chr, 0))
return false;
+ std::string nameLink = playerLink(name);
+
if(chr->IsBeingTeleported()==true)
{
- PSendSysMessage(LANG_IS_TELEPORTED, chr->GetName());
+ PSendSysMessage(LANG_IS_TELEPORTED, nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
PSendSysMessage(LANG_TELEPORTING_TO, chr->GetName(),"", tele->name.c_str());
if (needReportToTarget(chr))
- ChatHandler(chr).PSendSysMessage(LANG_TELEPORTED_TO_BY, GetName());
+ {
+ std::string plNameLink = playerLink(GetName());
+ ChatHandler(chr).PSendSysMessage(LANG_TELEPORTED_TO_BY, plNameLink.c_str());
+ }
// stop flight if need
if(chr->isInFlight())
@@ -2545,13 +2541,15 @@ bool ChatHandler::HandleNameTeleCommand(const char * args)
chr->TeleportTo(tele->mapId,tele->position_x,tele->position_y,tele->position_z,tele->orientation);
}
- else if (uint64 guid = objmgr.GetPlayerGUIDByName(name.c_str()))
+ else if (uint64 guid = objmgr.GetPlayerGUIDByName(name))
{
// check offline security
if (HasLowerSecurity(NULL, guid))
return false;
- PSendSysMessage(LANG_TELEPORTING_TO, name.c_str(), GetTrinityString(LANG_OFFLINE), tele->name.c_str());
+ std::string nameLink = playerLink(name);
+
+ PSendSysMessage(LANG_TELEPORTING_TO, nameLink.c_str(), GetMangosString(LANG_OFFLINE), tele->name.c_str());
Player::SavePositionInDB(tele->mapId,tele->position_x,tele->position_y,tele->position_z,tele->orientation,
MapManager::Instance().GetZoneId(tele->mapId,tele->position_x,tele->position_y,tele->position_z),guid);
}
@@ -2595,10 +2593,13 @@ bool ChatHandler::HandleGroupTeleCommand(const char * args)
SetSentErrorMessage(true);
return false;
}
+
+ std::string nameLink = playerLink(player->GetName());
+
Group *grp = player->GetGroup();
if(!grp)
{
- PSendSysMessage(LANG_NOT_IN_GROUP,player->GetName());
+ PSendSysMessage(LANG_NOT_IN_GROUP,nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -2614,15 +2615,17 @@ bool ChatHandler::HandleGroupTeleCommand(const char * args)
if (HasLowerSecurity(pl, 0))
return false;
+ std::string plNameLink = playerLink(pl->GetName());
+
if(pl->IsBeingTeleported())
{
- PSendSysMessage(LANG_IS_TELEPORTED, pl->GetName());
+ PSendSysMessage(LANG_IS_TELEPORTED, plNameLink.c_str());
continue;
}
- PSendSysMessage(LANG_TELEPORTING_TO, pl->GetName(),"", tele->name.c_str());
+ PSendSysMessage(LANG_TELEPORTING_TO, plNameLink.c_str(),"", tele->name.c_str());
if (needReportToTarget(pl))
- ChatHandler(pl).PSendSysMessage(LANG_TELEPORTED_TO_BY, GetName());
+ ChatHandler(pl).PSendSysMessage(LANG_TELEPORTED_TO_BY, nameLink.c_str());
// stop flight if need
if(pl->isInFlight())
@@ -2646,9 +2649,8 @@ bool ChatHandler::HandleGroupgoCommand(const char* args)
if(!*args)
return false;
- std::string name = args;
-
- if(!normalizePlayerName(name))
+ std::string name = extractPlayerNameFromLink((char*)args);
+ if(name.empty())
{
SendSysMessage(LANG_PLAYER_NOT_FOUND);
SetSentErrorMessage(true);
@@ -2669,9 +2671,11 @@ bool ChatHandler::HandleGroupgoCommand(const char* args)
Group *grp = player->GetGroup();
+ std::string nameLink = playerLink(name);
+
if(!grp)
{
- PSendSysMessage(LANG_NOT_IN_GROUP,player->GetName());
+ PSendSysMessage(LANG_NOT_IN_GROUP,nameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -2701,9 +2705,11 @@ bool ChatHandler::HandleGroupgoCommand(const char* args)
if (HasLowerSecurity(pl, 0))
return false;
+ std::string plNameLink = playerLink(name);
+
if(pl->IsBeingTeleported()==true)
{
- PSendSysMessage(LANG_IS_TELEPORTED, pl->GetName());
+ PSendSysMessage(LANG_IS_TELEPORTED, plNameLink.c_str());
SetSentErrorMessage(true);
return false;
}
@@ -2715,15 +2721,15 @@ bool ChatHandler::HandleGroupgoCommand(const char* args)
if ( plMap->Instanceable() && plMap->GetInstanceId() != gmMap->GetInstanceId() )
{
// cannot summon from instance to instance
- PSendSysMessage(LANG_CANNOT_SUMMON_TO_INST,pl->GetName());
+ PSendSysMessage(LANG_CANNOT_SUMMON_TO_INST,plNameLink.c_str());
SetSentErrorMessage(true);
return false;
}
}
- PSendSysMessage(LANG_SUMMONING, pl->GetName(),"");
+ PSendSysMessage(LANG_SUMMONING, plNameLink.c_str(),"");
if (needReportToTarget(pl))
- ChatHandler(pl).PSendSysMessage(LANG_SUMMONED_BY, GetName());
+ ChatHandler(pl).PSendSysMessage(LANG_SUMMONED_BY, nameLink.c_str());
// stop flight if need
if(pl->isInFlight())