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.
This commit is contained in:
VladimirMangos 2008-10-28 13:27:40 +03:00
parent 58bc947ef9
commit 6169f57ab9
7 changed files with 84 additions and 73 deletions

View file

@ -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),

View file

@ -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);

View file

@ -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;
}

View file

@ -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;

View file

@ -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,

View file

@ -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()] : "<unknown>" ),
zone_id, (zoneEntry ? zoneEntry->area_name[sWorld.GetDefaultDbcLocale()] : "<unknown>" ),
@ -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())

View file

@ -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++)