refactor(Core/Achievement): Achivement earned message will use broadc… (#8485)
* refactor(Core/Achievement): Achivement earned message will use broadcast text instead of acore_string * cherry-pick commit (https://github.com/TrinityCore/TrinityCore/commit/465e4a0b0f11cca568666e860584c5b9f761d4ba) Co-Authored-By: joschiwald <736792+joschiwald@users.noreply.github.com> * sql * fix build * build * restore gender
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1634135727616655800');
|
||||||
|
|
||||||
|
DELETE FROM `acore_string` WHERE `entry` = 810;
|
||||||
@@ -48,20 +48,26 @@ namespace Acore
|
|||||||
class AchievementChatBuilder
|
class AchievementChatBuilder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AchievementChatBuilder(Player const& player, ChatMsg msgtype, int32 textId, uint32 ach_id)
|
AchievementChatBuilder(Player const* player, ChatMsg msgType, uint32 textId, uint32 achievementId)
|
||||||
: i_player(player), i_msgtype(msgtype), i_textId(textId), i_achievementId(ach_id) {}
|
: _player(player), _msgType(msgType), _textId(textId), _achievementId(achievementId) { }
|
||||||
|
|
||||||
void operator()(WorldPacket& data, LocaleConstant loc_idx)
|
void operator()(WorldPacket& data, LocaleConstant locale)
|
||||||
{
|
{
|
||||||
std::string text = sObjectMgr->GetAcoreString(i_textId, loc_idx);
|
std::string text = "";
|
||||||
ChatHandler::BuildChatPacket(data, i_msgtype, LANG_UNIVERSAL, &i_player, &i_player, text, i_achievementId);
|
BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId);
|
||||||
|
if (bct)
|
||||||
|
{
|
||||||
|
ObjectMgr::GetLocaleString(_player->getGender() == GENDER_MALE ? bct->MaleText : bct->FemaleText, locale, text);
|
||||||
|
}
|
||||||
|
|
||||||
|
ChatHandler::BuildChatPacket(data, _msgType, LANG_UNIVERSAL, _player, _player, text, _achievementId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Player const& i_player;
|
Player const* _player;
|
||||||
ChatMsg i_msgtype;
|
ChatMsg _msgType;
|
||||||
int32 i_textId;
|
int32 _textId;
|
||||||
uint32 i_achievementId;
|
uint32 _achievementId;
|
||||||
};
|
};
|
||||||
} // namespace Acore
|
} // namespace Acore
|
||||||
|
|
||||||
@@ -696,9 +702,9 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
|
|||||||
Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId());
|
Guild* guild = sGuildMgr->GetGuildById(GetPlayer()->GetGuildId());
|
||||||
if (guild)
|
if (guild)
|
||||||
{
|
{
|
||||||
Acore::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID);
|
Acore::AchievementChatBuilder _builder(GetPlayer(), CHAT_MSG_GUILD_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID);
|
||||||
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> say_do(say_builder);
|
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> _localizer(_builder);
|
||||||
guild->BroadcastWorker(say_do, GetPlayer());
|
guild->BroadcastWorker(_localizer, GetPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH))
|
if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH))
|
||||||
@@ -739,11 +745,10 @@ void AchievementMgr::SendAchievementEarned(AchievementEntry const* achievement)
|
|||||||
Cell cell(p);
|
Cell cell(p);
|
||||||
cell.SetNoCreate();
|
cell.SetNoCreate();
|
||||||
|
|
||||||
Acore::AchievementChatBuilder say_builder(*GetPlayer(), CHAT_MSG_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID);
|
Acore::AchievementChatBuilder _builder(GetPlayer(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID);
|
||||||
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> say_do(say_builder);
|
Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> _localizer(_builder);
|
||||||
Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> > say_worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), say_do);
|
Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> > _worker(GetPlayer(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _localizer);
|
||||||
TypeContainerVisitor<Acore::PlayerDistWorker<Acore::LocalizedPacketDo<Acore::AchievementChatBuilder> >, WorldTypeMapContainer > message(say_worker);
|
Cell::VisitWorldObjects(GetPlayer(), _worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY));
|
||||||
Cell::VisitWorldObjects(GetPlayer(), say_worker, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WorldPacket data(SMSG_ACHIEVEMENT_EARNED, 8 + 4 + 8);
|
WorldPacket data(SMSG_ACHIEVEMENT_EARNED, 8 + 4 + 8);
|
||||||
|
|||||||
@@ -18,6 +18,11 @@
|
|||||||
#ifndef __ACORE_LANGUAGE_H
|
#ifndef __ACORE_LANGUAGE_H
|
||||||
#define __ACORE_LANGUAGE_H
|
#define __ACORE_LANGUAGE_H
|
||||||
|
|
||||||
|
enum BroadcastTextIds
|
||||||
|
{
|
||||||
|
BROADCAST_TEXT_ACHIEVEMENT_EARNED = 29245,
|
||||||
|
};
|
||||||
|
|
||||||
enum AcoreStrings
|
enum AcoreStrings
|
||||||
{
|
{
|
||||||
// for chat commands
|
// for chat commands
|
||||||
@@ -779,7 +784,7 @@ enum AcoreStrings
|
|||||||
LANG_NEED_CHARACTER_NAME = 807,
|
LANG_NEED_CHARACTER_NAME = 807,
|
||||||
LANG_PLAYER_NOT_EXIST_OR_OFFLINE = 808,
|
LANG_PLAYER_NOT_EXIST_OR_OFFLINE = 808,
|
||||||
LANG_ACCOUNT_FOR_PLAYER_NOT_FOUND = 809,
|
LANG_ACCOUNT_FOR_PLAYER_NOT_FOUND = 809,
|
||||||
LANG_ACHIEVEMENT_EARNED = 810,
|
// unused = 810,
|
||||||
LANG_GUILD_MASTER = 811,
|
LANG_GUILD_MASTER = 811,
|
||||||
LANG_GUILD_OFFICER = 812,
|
LANG_GUILD_OFFICER = 812,
|
||||||
LANG_GUILD_VETERAN = 813,
|
LANG_GUILD_VETERAN = 813,
|
||||||
|
|||||||
@@ -29,9 +29,7 @@ class CreatureTextBuilder
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CreatureTextBuilder(WorldObject* obj, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
|
CreatureTextBuilder(WorldObject* obj, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
|
||||||
: _source(obj), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target)
|
: _source(obj), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { }
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t operator()(WorldPacket* data, LocaleConstant locale) const
|
size_t operator()(WorldPacket* data, LocaleConstant locale) const
|
||||||
{
|
{
|
||||||
@@ -40,6 +38,7 @@ public:
|
|||||||
return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _source, _target, text, 0, "", locale);
|
return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _source, _target, text, 0, "", locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
WorldObject* _source;
|
WorldObject* _source;
|
||||||
uint8 _gender;
|
uint8 _gender;
|
||||||
ChatMsg _msgType;
|
ChatMsg _msgType;
|
||||||
@@ -53,9 +52,7 @@ class PlayerTextBuilder
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlayerTextBuilder(WorldObject* obj, WorldObject* speaker, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
|
PlayerTextBuilder(WorldObject* obj, WorldObject* speaker, uint8 gender, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target)
|
||||||
: _source(obj), _talker(speaker), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target)
|
: _source(obj), _talker(speaker), _gender(gender), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { }
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t operator()(WorldPacket* data, LocaleConstant locale) const
|
size_t operator()(WorldPacket* data, LocaleConstant locale) const
|
||||||
{
|
{
|
||||||
@@ -64,6 +61,7 @@ public:
|
|||||||
return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _talker, _target, text, 0, "", locale);
|
return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _talker, _target, text, 0, "", locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
WorldObject* _source;
|
WorldObject* _source;
|
||||||
WorldObject* _talker;
|
WorldObject* _talker;
|
||||||
uint8 _gender;
|
uint8 _gender;
|
||||||
|
|||||||
Reference in New Issue
Block a user