diff options
author | azazel <none@none> | 2010-11-18 10:26:34 +0600 |
---|---|---|
committer | azazel <none@none> | 2010-11-18 10:26:34 +0600 |
commit | 87d723405e5d34bc9b16656f6bf30a48d010c50d (patch) | |
tree | 6127913e7484bf36b50bfd6e10f0170f8410772f | |
parent | 3de2f6af01d938e5d5c91a4da7ffef2728ec9d21 (diff) |
Core/Scripts: return const modifier to Player methods back (should restore compilation for those with custom scripts).
NOTE: The main idea of original change is to allow scripts change content of message so that calling method sends modified message to client.
For example, moderating script which cuts illegal words from message.
--HG--
branch : trunk
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 56 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.h | 8 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp | 6 | ||||
-rw-r--r-- | src/server/scripts/World/item_scripts.cpp | 5 |
5 files changed, 40 insertions, 37 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index bb5eeb2e71b..2116b0b3e05 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -18804,74 +18804,76 @@ void Player::StopCastingCharm() } } -void Player::BuildPlayerChat(WorldPacket *data, uint8 msgtype, const std::string& text, uint32 language) const -{ - *data << (uint8)msgtype; - *data << (uint32)language; - *data << (uint64)GetGUID(); - *data << (uint32)language; //language 2.1.0 ? - *data << (uint64)GetGUID(); - *data << (uint32)(text.length()+1); +inline void Player::BuildPlayerChat(WorldPacket *data, uint8 msgtype, const std::string& text, uint32 language) const +{ + *data << uint8(msgtype); + *data << uint32(language); + *data << uint64(GetGUID()); + *data << uint32(language); //language 2.1.0 ? + *data << uint64(GetGUID()); + *data << uint32(text.length() + 1); *data << text; - *data << (uint8)chatTag(); + *data << uint8(chatTag()); } -void Player::Say(std::string& text, const uint32 language) +void Player::Say(const std::string& text, const uint32 language) { - sScriptMgr.OnPlayerChat(this, CHAT_MSG_SAY, language, text); + std::string _text(text); + sScriptMgr.OnPlayerChat(this, CHAT_MSG_SAY, language, _text); WorldPacket data(SMSG_MESSAGECHAT, 200); - BuildPlayerChat(&data, CHAT_MSG_SAY, text, language); - SendMessageToSetInRange(&data,sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_SAY),true); + BuildPlayerChat(&data, CHAT_MSG_SAY, _text, language); + SendMessageToSetInRange(&data, sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_SAY), true); } -void Player::Yell(std::string& text, const uint32 language) +void Player::Yell(const std::string& text, const uint32 language) { - sScriptMgr.OnPlayerChat(this, CHAT_MSG_YELL, language, text); + std::string _text(text); + sScriptMgr.OnPlayerChat(this, CHAT_MSG_YELL, language, _text); WorldPacket data(SMSG_MESSAGECHAT, 200); - BuildPlayerChat(&data, CHAT_MSG_YELL, text, language); - SendMessageToSetInRange(&data,sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_YELL),true); + BuildPlayerChat(&data, CHAT_MSG_YELL, _text, language); + SendMessageToSetInRange(&data, sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_YELL), true); } -void Player::TextEmote(std::string& text) +void Player::TextEmote(const std::string& text) { - sScriptMgr.OnPlayerChat(this, CHAT_MSG_EMOTE, LANG_UNIVERSAL, text); + std::string _text(text); + sScriptMgr.OnPlayerChat(this, CHAT_MSG_EMOTE, LANG_UNIVERSAL, _text); WorldPacket data(SMSG_MESSAGECHAT, 200); - BuildPlayerChat(&data, CHAT_MSG_EMOTE, text, LANG_UNIVERSAL); - SendMessageToSetInRange(&data,sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE),true, !sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT)); + BuildPlayerChat(&data, CHAT_MSG_EMOTE, _text, LANG_UNIVERSAL); + SendMessageToSetInRange(&data, sWorld.getFloatConfig(CONFIG_LISTEN_RANGE_TEXTEMOTE), true, !sWorld.getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_CHAT)); } -void Player::Whisper(std::string& text, uint32 language,uint64 receiver) +void Player::Whisper(const std::string& text, uint32 language, uint64 receiver) { if (language != LANG_ADDON) // if not addon data language = LANG_UNIVERSAL; // whispers should always be readable Player *rPlayer = sObjectMgr.GetPlayer(receiver); - sScriptMgr.OnPlayerChat(this, CHAT_MSG_WHISPER, language, text, rPlayer); + std::string _text(text); + sScriptMgr.OnPlayerChat(this, CHAT_MSG_WHISPER, language, _text, rPlayer); // when player you are whispering to is dnd, he cannot receive your message, unless you are in gm mode if (!rPlayer->isDND() || isGameMaster()) { WorldPacket data(SMSG_MESSAGECHAT, 200); - BuildPlayerChat(&data, CHAT_MSG_WHISPER, text, language); + BuildPlayerChat(&data, CHAT_MSG_WHISPER, _text, language); rPlayer->GetSession()->SendPacket(&data); // not send confirmation for addon messages if (language != LANG_ADDON) { data.Initialize(SMSG_MESSAGECHAT, 200); - rPlayer->BuildPlayerChat(&data, CHAT_MSG_WHISPER_INFORM, text, language); + rPlayer->BuildPlayerChat(&data, CHAT_MSG_WHISPER_INFORM, _text, language); GetSession()->SendPacket(&data); } } else - { // announce to player that player he is whispering to is dnd and cannot receive his message ChatHandler(this).PSendSysMessage(LANG_PLAYER_DND, rPlayer->GetName(), rPlayer->dndMsg.c_str()); - } if (!isAcceptWhispers() && !isGameMaster() && !rPlayer->isGameMaster()) { diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 11c3f1cee4a..7e151769810 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1113,10 +1113,10 @@ class Player : public Unit, public GridObject<Player> void RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent = false); uint32 GetPhaseMaskForSpawn() const; // used for proper set phase for DB at GM-mode creature/GO spawn - void Say(std::string& text, const uint32 language); - void Yell(std::string& text, const uint32 language); - void TextEmote(std::string& text); - void Whisper(std::string& text, const uint32 language,uint64 receiver); + void Say(const std::string& text, const uint32 language); + void Yell(const std::string& text, const uint32 language); + void TextEmote(const std::string& text); + void Whisper(const std::string& text, const uint32 language,uint64 receiver); void BuildPlayerChat(WorldPacket *data, uint8 msgtype, const std::string& text, uint32 language) const; /*********************************************************/ diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 0a89700c001..e5291f28271 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5458,7 +5458,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger target = this; if (roll_chance_i(10)) - this->ToPlayer()->Say(std::string("This is Madness!"), LANG_UNIVERSAL); + this->ToPlayer()->Say("This is Madness!", LANG_UNIVERSAL); // TODO: It should be moved to database, shouldn't it? break; } // Sunwell Exalted Caster Neck (??? neck) diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 71d896fc914..4dd7081d836 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -625,18 +625,18 @@ public: if (say_timer <= diff) { say_timer = 3000; - Player *plr = SelectRandomPlayer(100.0f,false); + Player *plr = SelectRandomPlayer(100.0f, false); if (count < 3) { if (plr) - plr->Say(std::string(Text[count]),0); + plr->Say(Text[count], 0); } else { DoCast(me, SPELL_RHYME_BIG); if (plr) { - plr->Say(std::string(Text[count]),0); + plr->Say(Text[count], 0); plr->HandleEmoteCommand(ANIM_EMOTE_SHOUT); } wp_reached = true; diff --git a/src/server/scripts/World/item_scripts.cpp b/src/server/scripts/World/item_scripts.cpp index 9f0b5cbf6c0..8500c289119 100644 --- a/src/server/scripts/World/item_scripts.cpp +++ b/src/server/scripts/World/item_scripts.cpp @@ -270,8 +270,9 @@ public: return false; else { - //This should be sent to the player as red text. - pPlayer->Say(std::string("You have created enough ghouls. Return to Gothik the Harvester at Death's Breach."), LANG_UNIVERSAL); + // This should be sent to the player as red text. + // TODO: Text should be moved to DB + pPlayer->Say("You have created enough ghouls. Return to Gothik the Harvester at Death's Breach.", LANG_UNIVERSAL); return true; } } |