From 6169f57ab95cb0e38c5d1339da4a99ff0a398df9 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Tue, 28 Oct 2008 13:27:40 +0300 Subject: [PATCH] Simplify check requirement report command results to target and output command user name. * Provided ChatHandler::GetName for player name/"console command" output dependent from chat/console command call. * New function for check when command work result send to command target. * Remove unrequired complexy in mangos string usage in some commands. --- sql/mangos.sql | 2 +- .../2008_10_28_01_mangos_mangos_string.sql | 5 + src/game/Chat.cpp | 22 ++++ src/game/Chat.h | 4 + src/game/Language.h | 5 +- src/game/Level1.cpp | 109 +++++++----------- src/game/Level3.cpp | 10 +- 7 files changed, 84 insertions(+), 73 deletions(-) create mode 100644 sql/updates/2008_10_28_01_mangos_mangos_string.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index 47c30e301..ece5eccee 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -2266,7 +2266,7 @@ INSERT INTO `mangos_string` VALUES (168,'Locations found are:\n %s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (169,'Mail sent to %s',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (170,'You try to hear sound %u but it doesn\'t exist.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), -(171,'You are being teleported by server console command.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), +(172,'server console command',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (200,'No selection.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (201,'Object GUID is: lowpart %u highpart %X',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), (202,'The name was too long by %i characters.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), diff --git a/sql/updates/2008_10_28_01_mangos_mangos_string.sql b/sql/updates/2008_10_28_01_mangos_mangos_string.sql new file mode 100644 index 000000000..fa325bb94 --- /dev/null +++ b/sql/updates/2008_10_28_01_mangos_mangos_string.sql @@ -0,0 +1,5 @@ +DELETE FROM mangos_string WHERE entry IN (171,172); + +INSERT INTO mangos_string VALUES +(172,'server console command',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); + diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 625788f8a..72f060399 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -1194,6 +1194,17 @@ GameTele const* ChatHandler::extractGameTeleFromLink(char* text) return objmgr.GetGameTele(cId); } +const char *ChatHandler::GetName() const +{ + return m_session->GetPlayer()->GetName(); +} + +bool ChatHandler::needReportToTarget(Player* chr) const +{ + Player* pl = m_session->GetPlayer(); + return pl != chr && pl->IsVisibleGloballyFor(chr); +} + const char *CliHandler::GetMangosString(int32 entry) const { return objmgr.GetMangosStringForDBCLocale(entry); @@ -1210,3 +1221,14 @@ void CliHandler::SendSysMessage(const char *str) m_print(str); m_print("\r\n"); } + +const char *CliHandler::GetName() const +{ + return GetMangosString(LANG_CONSOLE_COMMAND); +} + +bool CliHandler::needReportToTarget(Player* /*chr*/) const +{ + return true; +} + diff --git a/src/game/Chat.h b/src/game/Chat.h index 6006bfa76..dbdd4b5c5 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -69,12 +69,14 @@ class ChatHandler int ParseCommands(const char* text); + virtual char const* GetName() const; protected: explicit ChatHandler() : m_session(NULL) {} // for CLI subclass bool hasStringAbbr(const char* name, const char* part); virtual bool isAvailable(ChatCommand const& cmd) const; + virtual bool needReportToTarget(Player* chr) const; void SendGlobalSysMessage(const char *str); @@ -455,6 +457,8 @@ class CliHandler : public ChatHandler const char *GetMangosString(int32 entry) const; bool isAvailable(ChatCommand const& cmd) const; void SendSysMessage(const char *str); + char const* GetName() const; + bool needReportToTarget(Player* chr) const; private: Print* m_print; diff --git a/src/game/Language.h b/src/game/Language.h index e512d297b..4815a6e8d 100644 --- a/src/game/Language.h +++ b/src/game/Language.h @@ -166,8 +166,9 @@ enum MangosStrings LANG_MAIL_SENT = 169, LANG_SOUND_NOT_EXIST = 170, - LANG_TELEPORTED_TO_BY_CONSOLE = 171, - // Room for more level 1 172-199 not used + // 171, // not used + LANG_CONSOLE_COMMAND = 172, + // Room for more level 1 173-199 not used // level 2 chat LANG_NO_SELECTION = 200, diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp index 243e39340..56e805f5b 100644 --- a/src/game/Level1.cpp +++ b/src/game/Level1.cpp @@ -309,9 +309,10 @@ bool ChatHandler::HandleGPSCommand(const char* args) zone_x, zone_y, ground_z, floor_z, have_map, have_vmap ); sLog.outDebug("Player %s GPS call for %s '%s' (%s: %u):", - m_session->GetPlayer()->GetName(), + GetName(), (obj->GetTypeId() == TYPEID_PLAYER ? "player" : "creature"), obj->GetName(), (obj->GetTypeId() == TYPEID_PLAYER ? "GUID" : "Entry"), (obj->GetTypeId() == TYPEID_PLAYER ? obj->GetGUIDLow(): obj->GetEntry()) ); + sLog.outDebug(GetMangosString(LANG_MAP_POSITION), obj->GetMapId(), (mapEntry ? mapEntry->name[sWorld.GetDefaultDbcLocale()] : "" ), zone_id, (zoneEntry ? zoneEntry->area_name[sWorld.GetDefaultDbcLocale()] : "" ), @@ -374,9 +375,8 @@ bool ChatHandler::HandleNamegoCommand(const char* args) } PSendSysMessage(LANG_SUMMONING, chr->GetName(),""); - - if (m_session->GetPlayer()->IsVisibleGloballyFor(chr)) - ChatHandler(chr).PSendSysMessage(LANG_SUMMONED_BY, m_session->GetPlayer()->GetName()); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_SUMMONED_BY, GetName()); // stop flight if need if(chr->isInFlight()) @@ -655,7 +655,8 @@ bool ChatHandler::HandleModifyHPCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_HP, chr->GetName(), hp, hpm); - ChatHandler(chr).PSendSysMessage(LANG_YOURS_HP_CHANGED, m_session->GetPlayer()->GetName(), hp, hpm); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_HP_CHANGED, GetName(), hp, hpm); chr->SetMaxHealth( hpm ); chr->SetHealth( hp ); @@ -698,7 +699,8 @@ bool ChatHandler::HandleModifyManaCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_MANA, chr->GetName(), mana, manam); - ChatHandler(chr).PSendSysMessage(LANG_YOURS_MANA_CHANGED, m_session->GetPlayer()->GetName(), mana, manam); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_MANA_CHANGED, GetName(), mana, manam); chr->SetMaxPower(POWER_MANA,manam ); chr->SetPower(POWER_MANA, mana ); @@ -742,7 +744,8 @@ bool ChatHandler::HandleModifyEnergyCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_ENERGY, chr->GetName(), energy/10, energym/10); - ChatHandler(chr).PSendSysMessage(LANG_YOURS_ENERGY_CHANGED, m_session->GetPlayer()->GetName(), energy/10, energym/10); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_ENERGY_CHANGED, GetName(), energy/10, energym/10); chr->SetMaxPower(POWER_ENERGY,energym ); chr->SetPower(POWER_ENERGY, energy ); @@ -788,8 +791,8 @@ bool ChatHandler::HandleModifyRageCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_RAGE, chr->GetName(), rage/10, ragem/10); - // Special case: I use GetMangosString here to get local of destination char ;) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_RAGE_CHANGED), m_session->GetPlayer()->GetName(), rage/10, ragem/10); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_RAGE_CHANGED, GetName(), rage/10, ragem/10); chr->SetMaxPower(POWER_RAGE,ragem ); chr->SetPower(POWER_RAGE, rage ); @@ -867,11 +870,6 @@ bool ChatHandler::HandleModifyFactionCommand(const char* args) PSendSysMessage(LANG_YOU_CHANGE_FACTION, chr->GetGUIDLow(),factionid,flag,npcflag,dyflag); - //sprintf((char*)buf,"%s changed your Faction to %i.", m_session->GetPlayer()->GetName(), factionid); - //FillSystemMessageData(&data, m_session, buf); - - //chr->GetSession()->SendPacket(&data); - chr->setFaction(factionid); chr->SetUInt32Value(UNIT_FIELD_FLAGS,flag); chr->SetUInt32Value(UNIT_NPC_FLAGS,npcflag); @@ -917,8 +915,8 @@ bool ChatHandler::HandleModifySpellCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_SPELLFLATID, spellflatid, val, mark, chr->GetName()); - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_SPELLFLATID_CHANGED, m_session->GetPlayer()->GetName(), spellflatid, val, mark); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_SPELLFLATID_CHANGED, GetName(), spellflatid, val, mark); WorldPacket data(SMSG_SET_FLAT_SPELL_MODIFIER, (1+1+2+2)); data << uint8(spellflatid); @@ -974,10 +972,8 @@ bool ChatHandler::HandleTaxiCheatCommand(const char* args) { chr->SetTaxiCheater(true); PSendSysMessage(LANG_YOU_GIVE_TAXIS, chr->GetName()); - - if(chr != m_session->GetPlayer()) - // to send localized data to target - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_TAXIS_ADDED), m_session->GetPlayer()->GetName()); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_TAXIS_ADDED, GetName()); return true; } @@ -985,9 +981,8 @@ bool ChatHandler::HandleTaxiCheatCommand(const char* args) { chr->SetTaxiCheater(false); PSendSysMessage(LANG_YOU_REMOVE_TAXIS, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_TAXIS_REMOVED), m_session->GetPlayer()->GetName()); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_TAXIS_REMOVED, GetName()); return true; } @@ -1028,9 +1023,8 @@ bool ChatHandler::HandleModifyASpeedCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_ASPEED, ASpeed, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_ASPEED_CHANGED), m_session->GetPlayer()->GetName(), ASpeed); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_ASPEED_CHANGED, GetName(), ASpeed); chr->SetSpeed(MOVE_WALK, ASpeed,true); chr->SetSpeed(MOVE_RUN, ASpeed,true); @@ -1071,9 +1065,8 @@ bool ChatHandler::HandleModifySpeedCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_SPEED, Speed, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_SPEED_CHANGED), m_session->GetPlayer()->GetName(), Speed); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_SPEED_CHANGED, GetName(), Speed); chr->SetSpeed(MOVE_RUN,Speed,true); @@ -1111,9 +1104,8 @@ bool ChatHandler::HandleModifySwimCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_SWIM_SPEED, Swim, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_SWIM_SPEED_CHANGED), m_session->GetPlayer()->GetName(), Swim); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_SWIM_SPEED_CHANGED, GetName(), Swim); chr->SetSpeed(MOVE_SWIM,Swim,true); @@ -1151,9 +1143,8 @@ bool ChatHandler::HandleModifyBWalkCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_BACK_SPEED, BSpeed, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_BACK_SPEED_CHANGED), m_session->GetPlayer()->GetName(), BSpeed); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_BACK_SPEED_CHANGED, GetName(), BSpeed); chr->SetSpeed(MOVE_WALKBACK,BSpeed,true); @@ -1184,9 +1175,8 @@ bool ChatHandler::HandleModifyFlyCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_FLY_SPEED, FSpeed, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_FLY_SPEED_CHANGED), m_session->GetPlayer()->GetName(), FSpeed); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_FLY_SPEED_CHANGED, GetName(), FSpeed); chr->SetSpeed(MOVE_FLY,FSpeed,true); @@ -1216,9 +1206,8 @@ bool ChatHandler::HandleModifyScaleCommand(const char* args) } PSendSysMessage(LANG_YOU_CHANGE_SIZE, Scale, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_SIZE_CHANGED), m_session->GetPlayer()->GetName(), Scale); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_SIZE_CHANGED, GetName(), Scale); chr->SetFloatValue(OBJECT_FIELD_SCALE_X, Scale); @@ -1460,9 +1449,8 @@ bool ChatHandler::HandleModifyMountCommand(const char* args) } PSendSysMessage(LANG_YOU_GIVE_MOUNT, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_MOUNT_GIVED), m_session->GetPlayer()->GetName()); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_MOUNT_GIVED, GetName()); chr->SetUInt32Value( UNIT_FIELD_FLAGS , 0x001000 ); chr->Mount(mId); @@ -1509,25 +1497,24 @@ bool ChatHandler::HandleModifyMoneyCommand(const char* args) if(newmoney <= 0 ) { PSendSysMessage(LANG_YOU_TAKE_ALL_MONEY, chr->GetName()); - - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_ALL_MONEY_GONE), m_session->GetPlayer()->GetName()); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_ALL_MONEY_GONE, GetName()); chr->SetMoney(0); } else { PSendSysMessage(LANG_YOU_TAKE_MONEY, abs(addmoney), chr->GetName()); - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_MONEY_TAKEN), m_session->GetPlayer()->GetName(), abs(addmoney)); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_MONEY_TAKEN, GetName(), abs(addmoney)); chr->SetMoney( newmoney ); } } else { PSendSysMessage(LANG_YOU_GIVE_MONEY, addmoney, chr->GetName()); - if(chr != m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(ChatHandler(chr).GetMangosString(LANG_YOURS_MONEY_GIVEN), m_session->GetPlayer()->GetName(), addmoney); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_MONEY_GIVEN, GetName(), addmoney); chr->ModifyMoney( addmoney ); } @@ -2020,14 +2007,8 @@ bool ChatHandler::HandleNameTeleCommand(const char * args) } PSendSysMessage(LANG_TELEPORTING_TO, chr->GetName(),"", tele->name.c_str()); - - if (m_session) - { - if(m_session->GetPlayer()->IsVisibleGloballyFor(chr)) - ChatHandler(chr).PSendSysMessage(LANG_TELEPORTED_TO_BY, m_session->GetPlayer()->GetName()); - } - else - ChatHandler(chr).SendSysMessage(LANG_TELEPORTED_TO_BY_CONSOLE); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_TELEPORTED_TO_BY, GetName()); // stop flight if need if(chr->isInFlight()) @@ -2097,9 +2078,8 @@ bool ChatHandler::HandleGroupTeleCommand(const char * args) } PSendSysMessage(LANG_TELEPORTING_TO, pl->GetName(),"", tele->name.c_str()); - - if (m_session->GetPlayer() != pl && m_session->GetPlayer()->IsVisibleGloballyFor(pl)) - ChatHandler(pl).PSendSysMessage(LANG_TELEPORTED_TO_BY, m_session->GetPlayer()->GetName()); + if (needReportToTarget(pl)) + ChatHandler(pl).PSendSysMessage(LANG_TELEPORTED_TO_BY, GetName()); // stop flight if need if(pl->isInFlight()) @@ -2191,9 +2171,8 @@ bool ChatHandler::HandleGroupgoCommand(const char* args) } PSendSysMessage(LANG_SUMMONING, pl->GetName(),""); - - if (m_session->GetPlayer()->IsVisibleGloballyFor(pl)) - ChatHandler(pl).PSendSysMessage(LANG_SUMMONED_BY, m_session->GetPlayer()->GetName()); + if (needReportToTarget(pl)) + ChatHandler(pl).PSendSysMessage(LANG_SUMMONED_BY, GetName()); // stop flight if need if(pl->isInFlight()) diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 71e67ecdf..cdd22d478 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -741,7 +741,7 @@ bool ChatHandler::HandleAccountSetGmLevelCommand(const char* args) if(targetPlayer) { - ChatHandler(targetPlayer).PSendSysMessage(LANG_YOURS_SECURITY_CHANGED,m_session->GetPlayer()->GetName(), gm); + ChatHandler(targetPlayer).PSendSysMessage(LANG_YOURS_SECURITY_CHANGED,GetName(), gm); targetPlayer->GetSession()->SetSecurity(gm); } @@ -3680,14 +3680,14 @@ bool ChatHandler::HandleExploreCheatCommand(const char* args) if (flag != 0) { PSendSysMessage(LANG_YOU_SET_EXPLORE_ALL, chr->GetName()); - if(chr!=m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_EXPLORE_SET_ALL,m_session->GetPlayer()->GetName()); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_EXPLORE_SET_ALL,GetName()); } else { PSendSysMessage(LANG_YOU_SET_EXPLORE_NOTHING, chr->GetName()); - if(chr!=m_session->GetPlayer()) - ChatHandler(chr).PSendSysMessage(LANG_YOURS_EXPLORE_SET_NOTHING,m_session->GetPlayer()->GetName()); + if (needReportToTarget(chr)) + ChatHandler(chr).PSendSysMessage(LANG_YOURS_EXPLORE_SET_NOTHING,GetName()); } for (uint8 i=0; i<128; i++)