mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 19:37:03 +00:00
[7413] Fixed finally problems with node names localization in BattleGroundAB messages.
Also fix build at some platforms.
This commit is contained in:
parent
42f579f280
commit
722395be75
12 changed files with 81 additions and 43 deletions
|
|
@ -78,8 +78,50 @@ namespace MaNGOS
|
|||
Player const* i_source;
|
||||
va_list* i_args;
|
||||
};
|
||||
|
||||
class BattleGround2ChatBuilder
|
||||
{
|
||||
public:
|
||||
BattleGround2ChatBuilder(ChatMsg msgtype, int32 textId, Player const* source, int32 arg1, int32 arg2)
|
||||
: i_msgtype(msgtype), i_textId(textId), i_source(source), i_arg1(arg1), i_arg2(arg2) {}
|
||||
void operator()(WorldPacket& data, int32 loc_idx)
|
||||
{
|
||||
char const* text = objmgr.GetMangosString(i_textId,loc_idx);
|
||||
char const* arg1str = i_arg1 ? objmgr.GetMangosString(i_arg1,loc_idx) : "";
|
||||
char const* arg2str = i_arg2 ? objmgr.GetMangosString(i_arg2,loc_idx) : "";
|
||||
|
||||
char str [2048];
|
||||
snprintf(str,2048,text, arg1str, arg2str );
|
||||
|
||||
uint64 target_guid = i_source ? i_source ->GetGUID() : 0;
|
||||
|
||||
data << uint8(i_msgtype);
|
||||
data << uint32(LANG_UNIVERSAL);
|
||||
data << uint64(target_guid); // there 0 for BG messages
|
||||
data << uint32(0); // can be chat msg group or something
|
||||
data << uint64(target_guid);
|
||||
data << uint32(strlen(str)+1);
|
||||
data << str;
|
||||
data << uint8(i_source ? i_source->chatTag() : uint8(0));
|
||||
}
|
||||
private:
|
||||
|
||||
ChatMsg i_msgtype;
|
||||
int32 i_textId;
|
||||
Player const* i_source;
|
||||
int32 i_arg1;
|
||||
int32 i_arg2;
|
||||
};
|
||||
} // namespace MaNGOS
|
||||
|
||||
template<class Do>
|
||||
void BattleGround::BroadcastWorker(Do& _do)
|
||||
{
|
||||
for(std::map<uint64, BattleGroundPlayer>::iterator itr = m_Players.begin(); itr != m_Players.end(); ++itr)
|
||||
if(Player *plr = ObjectAccessor::FindPlayer(MAKE_NEW_GUID(itr->first, 0, HIGHGUID_PLAYER)))
|
||||
_do(plr);
|
||||
}
|
||||
|
||||
BattleGround::BattleGround()
|
||||
{
|
||||
m_TypeID = BattleGroundTypeId(0);
|
||||
|
|
@ -1529,6 +1571,13 @@ void BattleGround::PSendMessageToAll(int32 entry, ChatMsg type, Player const* so
|
|||
va_end(ap);
|
||||
}
|
||||
|
||||
void BattleGround::SendMessage2ToAll(int32 entry, ChatMsg type, Player const* source, int32 arg1, int32 arg2)
|
||||
{
|
||||
MaNGOS::BattleGround2ChatBuilder bg_builder(type, entry, source, arg1, arg2);
|
||||
MaNGOS::LocalizedPacketDo<MaNGOS::BattleGround2ChatBuilder> bg_do(bg_builder);
|
||||
BroadcastWorker(bg_do);
|
||||
}
|
||||
|
||||
void BattleGround::EndNow()
|
||||
{
|
||||
RemoveFromBGFreeSlotQueue();
|
||||
|
|
@ -1538,13 +1587,6 @@ void BattleGround::EndNow()
|
|||
sBattleGroundMgr.m_BattleGroundQueues[BattleGroundMgr::BGQueueTypeId(GetTypeID(), GetArenaType())].BGEndedRemoveInvites(this);
|
||||
}
|
||||
|
||||
// Battleground messages are localized using the dbc lang, they are not client language dependent
|
||||
const char *BattleGround::GetMangosString(int32 entry)
|
||||
{
|
||||
// FIXME: now we have different DBC locales and need localized message for each target client
|
||||
return objmgr.GetMangosStringForDBCLocale(entry);
|
||||
}
|
||||
|
||||
/*
|
||||
important notice:
|
||||
buffs aren't spawned/despawned when players captures anything
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue