diff options
author | Blaymoira <none@none> | 2008-12-22 21:56:16 +0100 |
---|---|---|
committer | Blaymoira <none@none> | 2008-12-22 21:56:16 +0100 |
commit | 5ca3aacaaf1919863ec1c63f7ee8370f41c5dcbb (patch) | |
tree | 0c8ca7560e528ca0b517f5363381e4196eea15a1 | |
parent | 5313601ea60bc00eaf484dd642230b6182460433 (diff) |
* Various functions to broadcast output to GMs only - Patch by Machiavelli
--HG--
branch : trunk
-rw-r--r-- | src/game/Chat.cpp | 18 | ||||
-rw-r--r-- | src/game/Chat.h | 3 | ||||
-rw-r--r-- | src/game/Language.h | 5 | ||||
-rw-r--r-- | src/game/Level1.cpp | 26 | ||||
-rw-r--r-- | src/game/Level3.cpp | 116 | ||||
-rw-r--r-- | src/game/World.cpp | 71 | ||||
-rw-r--r-- | src/game/World.h | 2 |
7 files changed, 182 insertions, 59 deletions
diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 0a646c93e83..30946f7b7da 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -533,7 +533,9 @@ ChatCommand * ChatHandler::getCommandTable() { "unaura", SEC_ADMINISTRATOR, false, &ChatHandler::HandleUnAuraCommand, "", NULL }, { "nameannounce", SEC_MODERATOR, false, &ChatHandler::HandleNameAnnounceCommand, "", NULL }, { "announce", SEC_MODERATOR, true, &ChatHandler::HandleAnnounceCommand, "", NULL }, + { "gmannounce", SEC_MODERATOR, true, &ChatHandler::HandleGMAnnounceCommand, "", NULL }, { "notify", SEC_MODERATOR, true, &ChatHandler::HandleNotifyCommand, "", NULL }, + { "gmnotify", SEC_MODERATOR, true, &ChatHandler::HandleGMNotifyCommand, "", NULL }, { "goname", SEC_MODERATOR, false, &ChatHandler::HandleGonameCommand, "", NULL }, { "namego", SEC_MODERATOR, false, &ChatHandler::HandleNamegoCommand, "", NULL }, { "groupgo", SEC_MODERATOR, false, &ChatHandler::HandleGroupgoCommand, "", NULL }, @@ -722,6 +724,22 @@ void ChatHandler::SendGlobalSysMessage(const char *str) free(buf); } +void ChatHandler::SendGlobalGMSysMessage(const char *str) +{ + // Chat output + WorldPacket data; + + // need copy to prevent corruption by strtok call in LineFromMessage original string + char* buf = strdup(str); + char* pos = buf; + + while(char* line = LineFromMessage(pos)) + { + FillSystemMessageData(&data, line); + sWorld.SendGlobalGMMessage(&data); + } +} + void ChatHandler::SendSysMessage(int32 entry) { SendSysMessage(GetTrinityString(entry)); diff --git a/src/game/Chat.h b/src/game/Chat.h index 7356835bfb8..b62a0dd793a 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -81,6 +81,7 @@ class ChatHandler virtual bool needReportToTarget(Player* chr) const; void SendGlobalSysMessage(const char *str); + void SendGlobalGMSysMessage(const char *str); bool ExecuteCommandInTable(ChatCommand *table, const char* text, const std::string& fullcommand); bool ShowHelpForCommand(ChatCommand *table, const char* cmd); @@ -110,7 +111,9 @@ class ChatHandler bool HandleRecallCommand(const char* args); bool HandleNameAnnounceCommand(const char* args); bool HandleAnnounceCommand(const char* args); + bool HandleGMAnnounceCommand(const char* args); bool HandleNotifyCommand(const char* args); + bool HandleGMNotifyCommand(const char* args); bool HandleGMmodeCommand(const char* args); bool HandleGMChatCommand(const char* args); bool HandleVisibleCommand(const char* args); diff --git a/src/game/Language.h b/src/game/Language.h index 0adaabea88c..a36bde5f439 100644 --- a/src/game/Language.h +++ b/src/game/Language.h @@ -776,7 +776,10 @@ enum TrinityStrings LANG_INSTANCE_MUST_RAID_GRP = 5007, LANG_INSTANCE_NOT_AS_GHOST = 5008, LANG_COMMAND_PLAYED_TO_ALL = 5009, - // Room for more Trinity strings 5009-9999 + // Room for more Trinity strings 5010-9999 + // Used for GM Announcements + LANG_GM_BROADCAST = 6613, + LANG_GM_NOTIFY = 6614, // Use for not-in-offcial-sources patches // 10000-10999 diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp index 002b7c9aa3a..e1af5f0b08e 100644 --- a/src/game/Level1.cpp +++ b/src/game/Level1.cpp @@ -139,6 +139,16 @@ bool ChatHandler::HandleAnnounceCommand(const char* args) return true; } +// announce to logged in GMs +bool ChatHandler::HandleGMAnnounceCommand(const char* args) +{ + if(!*args) + return false; + + sWorld.SendGMText(LANG_GM_BROADCAST,args); + return true; +} + //notification player at the screen bool ChatHandler::HandleNotifyCommand(const char* args) { @@ -155,6 +165,22 @@ bool ChatHandler::HandleNotifyCommand(const char* args) return true; } +//notification GM at the screen +bool ChatHandler::HandleGMNotifyCommand(const char* args) +{ + if(!*args) + return false; + + std::string str = GetTrinityString(LANG_GM_NOTIFY); + str += args; + + WorldPacket data(SMSG_NOTIFICATION, (str.size()+1)); + data << str; + sWorld.SendGlobalGMMessage(&data); + + return true; +} + //Enable\Dissable GM Mode bool ChatHandler::HandleGMmodeCommand(const char* args) { diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 34a3592db8e..f8bcce11608 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -95,7 +95,7 @@ bool ChatHandler::HandleReloadAllLootCommand(const char*) { sLog.outString( "Re-Loading Loot Tables..." ); LoadLootTables(); - SendGlobalSysMessage("DB tables `*_loot_template` reloaded."); + SendGlobalGMSysMessage("DB tables `*_loot_template` reloaded."); return true; } @@ -115,7 +115,7 @@ bool ChatHandler::HandleReloadAllQuestCommand(const char* /*args*/) sLog.outString( "Re-Loading Quests Relations..." ); objmgr.LoadQuestRelations(); - SendGlobalSysMessage("DB tables `*_questrelation` and `*_involvedrelation` reloaded."); + SendGlobalGMSysMessage("DB tables `*_questrelation` and `*_involvedrelation` reloaded."); return true; } @@ -134,7 +134,7 @@ bool ChatHandler::HandleReloadAllScriptsCommand(const char*) HandleReloadQuestEndScriptsCommand("a"); HandleReloadQuestStartScriptsCommand("a"); HandleReloadSpellScriptsCommand("a"); - SendGlobalSysMessage("DB tables `*_scripts` reloaded."); + SendGlobalGMSysMessage("DB tables `*_scripts` reloaded."); HandleReloadDbScriptStringCommand("a"); HandleReloadWpScriptsCommand("a"); return true; @@ -179,7 +179,7 @@ bool ChatHandler::HandleReloadConfigCommand(const char* /*args*/) { sLog.outString( "Re-Loading config settings..." ); sWorld.LoadConfigSettings(true); - SendGlobalSysMessage("World config settings reloaded."); + SendGlobalGMSysMessage("World config settings reloaded."); return true; } @@ -187,7 +187,7 @@ bool ChatHandler::HandleReloadAreaTriggerTavernCommand(const char*) { sLog.outString( "Re-Loading Tavern Area Triggers..." ); objmgr.LoadTavernAreaTriggers(); - SendGlobalSysMessage("DB table `areatrigger_tavern` reloaded."); + SendGlobalGMSysMessage("DB table `areatrigger_tavern` reloaded."); return true; } @@ -195,14 +195,14 @@ bool ChatHandler::HandleReloadAreaTriggerTeleportCommand(const char*) { sLog.outString( "Re-Loading AreaTrigger teleport definitions..." ); objmgr.LoadAreaTriggerTeleports(); - SendGlobalSysMessage("DB table `areatrigger_teleport` reloaded."); + SendGlobalGMSysMessage("DB table `areatrigger_teleport` reloaded."); return true; } bool ChatHandler::HandleReloadCommandCommand(const char*) { load_command_table = true; - SendGlobalSysMessage("DB table `command` will be reloaded at next chat command use."); + SendGlobalGMSysMessage("DB table `command` will be reloaded at next chat command use."); return true; } @@ -210,7 +210,7 @@ bool ChatHandler::HandleReloadCreatureQuestRelationsCommand(const char*) { sLog.outString( "Loading Quests Relations... (`creature_questrelation`)" ); objmgr.LoadCreatureQuestRelations(); - SendGlobalSysMessage("DB table `creature_questrelation` (creature quest givers) reloaded."); + SendGlobalGMSysMessage("DB table `creature_questrelation` (creature quest givers) reloaded."); return true; } @@ -218,7 +218,7 @@ bool ChatHandler::HandleReloadCreatureQuestInvRelationsCommand(const char*) { sLog.outString( "Loading Quests Relations... (`creature_involvedrelation`)" ); objmgr.LoadCreatureInvolvedRelations(); - SendGlobalSysMessage("DB table `creature_involvedrelation` (creature quest takers) reloaded."); + SendGlobalGMSysMessage("DB table `creature_involvedrelation` (creature quest takers) reloaded."); return true; } @@ -226,7 +226,7 @@ bool ChatHandler::HandleReloadGOQuestRelationsCommand(const char*) { sLog.outString( "Loading Quests Relations... (`gameobject_questrelation`)" ); objmgr.LoadGameobjectQuestRelations(); - SendGlobalSysMessage("DB table `gameobject_questrelation` (gameobject quest givers) reloaded."); + SendGlobalGMSysMessage("DB table `gameobject_questrelation` (gameobject quest givers) reloaded."); return true; } @@ -234,7 +234,7 @@ bool ChatHandler::HandleReloadGOQuestInvRelationsCommand(const char*) { sLog.outString( "Loading Quests Relations... (`gameobject_involvedrelation`)" ); objmgr.LoadGameobjectInvolvedRelations(); - SendGlobalSysMessage("DB table `gameobject_involvedrelation` (gameobject quest takers) reloaded."); + SendGlobalGMSysMessage("DB table `gameobject_involvedrelation` (gameobject quest takers) reloaded."); return true; } @@ -242,7 +242,7 @@ bool ChatHandler::HandleReloadQuestAreaTriggersCommand(const char*) { sLog.outString( "Re-Loading Quest Area Triggers..." ); objmgr.LoadQuestAreaTriggers(); - SendGlobalSysMessage("DB table `areatrigger_involvedrelation` (quest area triggers) reloaded."); + SendGlobalGMSysMessage("DB table `areatrigger_involvedrelation` (quest area triggers) reloaded."); return true; } @@ -250,7 +250,7 @@ bool ChatHandler::HandleReloadQuestTemplateCommand(const char*) { sLog.outString( "Re-Loading Quest Templates..." ); objmgr.LoadQuests(); - SendGlobalSysMessage("DB table `quest_template` (quest definitions) reloaded."); + SendGlobalGMSysMessage("DB table `quest_template` (quest definitions) reloaded."); return true; } @@ -259,7 +259,7 @@ bool ChatHandler::HandleReloadLootTemplatesCreatureCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`creature_loot_template`)" ); LoadLootTemplates_Creature(); LootTemplates_Creature.CheckLootRefs(); - SendGlobalSysMessage("DB table `creature_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `creature_loot_template` reloaded."); return true; } @@ -268,7 +268,7 @@ bool ChatHandler::HandleReloadLootTemplatesDisenchantCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`disenchant_loot_template`)" ); LoadLootTemplates_Disenchant(); LootTemplates_Disenchant.CheckLootRefs(); - SendGlobalSysMessage("DB table `disenchant_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `disenchant_loot_template` reloaded."); return true; } @@ -277,7 +277,7 @@ bool ChatHandler::HandleReloadLootTemplatesFishingCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`fishing_loot_template`)" ); LoadLootTemplates_Fishing(); LootTemplates_Fishing.CheckLootRefs(); - SendGlobalSysMessage("DB table `fishing_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `fishing_loot_template` reloaded."); return true; } @@ -286,7 +286,7 @@ bool ChatHandler::HandleReloadLootTemplatesGameobjectCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`gameobject_loot_template`)" ); LoadLootTemplates_Gameobject(); LootTemplates_Gameobject.CheckLootRefs(); - SendGlobalSysMessage("DB table `gameobject_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `gameobject_loot_template` reloaded."); return true; } @@ -295,7 +295,7 @@ bool ChatHandler::HandleReloadLootTemplatesItemCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`item_loot_template`)" ); LoadLootTemplates_Item(); LootTemplates_Item.CheckLootRefs(); - SendGlobalSysMessage("DB table `item_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `item_loot_template` reloaded."); return true; } @@ -304,7 +304,7 @@ bool ChatHandler::HandleReloadLootTemplatesPickpocketingCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`pickpocketing_loot_template`)" ); LoadLootTemplates_Pickpocketing(); LootTemplates_Pickpocketing.CheckLootRefs(); - SendGlobalSysMessage("DB table `pickpocketing_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `pickpocketing_loot_template` reloaded."); return true; } @@ -313,7 +313,7 @@ bool ChatHandler::HandleReloadLootTemplatesProspectingCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`prospecting_loot_template`)" ); LoadLootTemplates_Prospecting(); LootTemplates_Prospecting.CheckLootRefs(); - SendGlobalSysMessage("DB table `prospecting_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `prospecting_loot_template` reloaded."); return true; } @@ -322,7 +322,7 @@ bool ChatHandler::HandleReloadLootTemplatesQuestMailCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`quest_mail_loot_template`)" ); LoadLootTemplates_QuestMail(); LootTemplates_QuestMail.CheckLootRefs(); - SendGlobalSysMessage("DB table `quest_mail_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `quest_mail_loot_template` reloaded."); return true; } @@ -330,7 +330,7 @@ bool ChatHandler::HandleReloadLootTemplatesReferenceCommand(const char*) { sLog.outString( "Re-Loading Loot Tables... (`reference_loot_template`)" ); LoadLootTemplates_Reference(); - SendGlobalSysMessage("DB table `reference_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `reference_loot_template` reloaded."); return true; } @@ -339,7 +339,7 @@ bool ChatHandler::HandleReloadLootTemplatesSkinningCommand(const char*) sLog.outString( "Re-Loading Loot Tables... (`skinning_loot_template`)" ); LoadLootTemplates_Skinning(); LootTemplates_Skinning.CheckLootRefs(); - SendGlobalSysMessage("DB table `skinning_loot_template` reloaded."); + SendGlobalGMSysMessage("DB table `skinning_loot_template` reloaded."); return true; } @@ -347,7 +347,7 @@ bool ChatHandler::HandleReloadTrinityStringCommand(const char*) { sLog.outString( "Re-Loading trinity_string Table!" ); objmgr.LoadTrinityStrings(); - SendGlobalSysMessage("DB table `trinity_string` reloaded."); + SendGlobalGMSysMessage("DB table `trinity_string` reloaded."); return true; } @@ -355,7 +355,7 @@ bool ChatHandler::HandleReloadNpcOptionCommand(const char*) { sLog.outString( "Re-Loading `npc_option` Table!" ); objmgr.LoadNpcOptions(); - SendGlobalSysMessage("DB table `npc_option` reloaded."); + SendGlobalGMSysMessage("DB table `npc_option` reloaded."); return true; } @@ -363,7 +363,7 @@ bool ChatHandler::HandleReloadNpcGossipCommand(const char*) { sLog.outString( "Re-Loading `npc_gossip` Table!" ); objmgr.LoadNpcTextId(); - SendGlobalSysMessage("DB table `npc_gossip` reloaded."); + SendGlobalGMSysMessage("DB table `npc_gossip` reloaded."); return true; } @@ -371,7 +371,7 @@ bool ChatHandler::HandleReloadNpcTrainerCommand(const char*) { sLog.outString( "Re-Loading `npc_trainer` Table!" ); objmgr.LoadTrainerSpell(); - SendGlobalSysMessage("DB table `npc_trainer` reloaded."); + SendGlobalGMSysMessage("DB table `npc_trainer` reloaded."); return true; } @@ -379,7 +379,7 @@ bool ChatHandler::HandleReloadNpcVendorCommand(const char*) { sLog.outString( "Re-Loading `npc_vendor` Table!" ); objmgr.LoadVendors(); - SendGlobalSysMessage("DB table `npc_vendor` reloaded."); + SendGlobalGMSysMessage("DB table `npc_vendor` reloaded."); return true; } @@ -387,7 +387,7 @@ bool ChatHandler::HandleReloadReservedNameCommand(const char*) { sLog.outString( "Loading ReservedNames... (`reserved_name`)" ); objmgr.LoadReservedPlayersNames(); - SendGlobalSysMessage("DB table `reserved_name` (player reserved names) reloaded."); + SendGlobalGMSysMessage("DB table `reserved_name` (player reserved names) reloaded."); return true; } @@ -395,7 +395,7 @@ bool ChatHandler::HandleReloadSkillDiscoveryTemplateCommand(const char* /*args*/ { sLog.outString( "Re-Loading Skill Discovery Table..." ); LoadSkillDiscoveryTable(); - SendGlobalSysMessage("DB table `skill_discovery_template` (recipes discovered at crafting) reloaded."); + SendGlobalGMSysMessage("DB table `skill_discovery_template` (recipes discovered at crafting) reloaded."); return true; } @@ -403,7 +403,7 @@ bool ChatHandler::HandleReloadSkillExtraItemTemplateCommand(const char* /*args*/ { sLog.outString( "Re-Loading Skill Extra Item Table..." ); LoadSkillExtraItemTable(); - SendGlobalSysMessage("DB table `skill_extra_item_template` (extra item creation when crafting) reloaded."); + SendGlobalGMSysMessage("DB table `skill_extra_item_template` (extra item creation when crafting) reloaded."); return true; } @@ -411,7 +411,7 @@ bool ChatHandler::HandleReloadSkillFishingBaseLevelCommand(const char* /*args*/) { sLog.outString( "Re-Loading Skill Fishing base level requirements..." ); objmgr.LoadFishingBaseSkillLevel(); - SendGlobalSysMessage("DB table `skill_fishing_base_level` (fishing base level for zone/subzone) reloaded."); + SendGlobalGMSysMessage("DB table `skill_fishing_base_level` (fishing base level for zone/subzone) reloaded."); return true; } @@ -419,7 +419,7 @@ bool ChatHandler::HandleReloadSpellAffectCommand(const char*) { sLog.outString( "Re-Loading SpellAffect definitions..." ); spellmgr.LoadSpellAffects(); - SendGlobalSysMessage("DB table `spell_affect` (spell mods apply requirements) reloaded."); + SendGlobalGMSysMessage("DB table `spell_affect` (spell mods apply requirements) reloaded."); return true; } @@ -427,7 +427,7 @@ bool ChatHandler::HandleReloadSpellRequiredCommand(const char*) { sLog.outString( "Re-Loading Spell Required Data... " ); spellmgr.LoadSpellRequired(); - SendGlobalSysMessage("DB table `spell_required` reloaded."); + SendGlobalGMSysMessage("DB table `spell_required` reloaded."); return true; } @@ -435,7 +435,7 @@ bool ChatHandler::HandleReloadSpellElixirCommand(const char*) { sLog.outString( "Re-Loading Spell Elixir types..." ); spellmgr.LoadSpellElixirs(); - SendGlobalSysMessage("DB table `spell_elixir` (spell elixir types) reloaded."); + SendGlobalGMSysMessage("DB table `spell_elixir` (spell elixir types) reloaded."); return true; } @@ -443,7 +443,7 @@ bool ChatHandler::HandleReloadSpellLearnSpellCommand(const char*) { sLog.outString( "Re-Loading Spell Learn Spells..." ); spellmgr.LoadSpellLearnSpells(); - SendGlobalSysMessage("DB table `spell_learn_spell` reloaded."); + SendGlobalGMSysMessage("DB table `spell_learn_spell` reloaded."); return true; } @@ -451,7 +451,7 @@ bool ChatHandler::HandleReloadSpellProcEventCommand(const char*) { sLog.outString( "Re-Loading Spell Proc Event conditions..." ); spellmgr.LoadSpellProcEvents(); - SendGlobalSysMessage("DB table `spell_proc_event` (spell proc trigger requirements) reloaded."); + SendGlobalGMSysMessage("DB table `spell_proc_event` (spell proc trigger requirements) reloaded."); return true; } @@ -459,7 +459,7 @@ bool ChatHandler::HandleReloadSpellScriptTargetCommand(const char*) { sLog.outString( "Re-Loading SpellsScriptTarget..." ); spellmgr.LoadSpellScriptTarget(); - SendGlobalSysMessage("DB table `spell_script_target` (spell targets selection in case specific creature/GO requirements) reloaded."); + SendGlobalGMSysMessage("DB table `spell_script_target` (spell targets selection in case specific creature/GO requirements) reloaded."); return true; } @@ -467,7 +467,7 @@ bool ChatHandler::HandleReloadSpellTargetPositionCommand(const char*) { sLog.outString( "Re-Loading Spell target coordinates..." ); spellmgr.LoadSpellTargetPositions(); - SendGlobalSysMessage("DB table `spell_target_position` (destination coordinates for spell targets) reloaded."); + SendGlobalGMSysMessage("DB table `spell_target_position` (destination coordinates for spell targets) reloaded."); return true; } @@ -475,7 +475,7 @@ bool ChatHandler::HandleReloadSpellThreatsCommand(const char*) { sLog.outString( "Re-Loading Aggro Spells Definitions..."); spellmgr.LoadSpellThreats(); - SendGlobalSysMessage("DB table `spell_threat` (spell aggro definitions) reloaded."); + SendGlobalGMSysMessage("DB table `spell_threat` (spell aggro definitions) reloaded."); return true; } @@ -483,7 +483,7 @@ bool ChatHandler::HandleReloadSpellPetAurasCommand(const char*) { sLog.outString( "Re-Loading Spell pet auras..."); spellmgr.LoadSpellPetAuras(); - SendGlobalSysMessage("DB table `spell_pet_auras` reloaded."); + SendGlobalGMSysMessage("DB table `spell_pet_auras` reloaded."); return true; } @@ -491,7 +491,7 @@ bool ChatHandler::HandleReloadPageTextsCommand(const char*) { sLog.outString( "Re-Loading Page Texts..." ); objmgr.LoadPageTexts(); - SendGlobalSysMessage("DB table `page_texts` reloaded."); + SendGlobalGMSysMessage("DB table `page_texts` reloaded."); return true; } @@ -499,7 +499,7 @@ bool ChatHandler::HandleReloadItemEnchantementsCommand(const char*) { sLog.outString( "Re-Loading Item Random Enchantments Table..." ); LoadRandomEnchantmentsTable(); - SendGlobalSysMessage("DB table `item_enchantment_template` reloaded."); + SendGlobalGMSysMessage("DB table `item_enchantment_template` reloaded."); return true; } @@ -518,7 +518,7 @@ bool ChatHandler::HandleReloadGameObjectScriptsCommand(const char* arg) objmgr.LoadGameObjectScripts(); if(*arg!='a') - SendGlobalSysMessage("DB table `gameobject_scripts` reloaded."); + SendGlobalGMSysMessage("DB table `gameobject_scripts` reloaded."); return true; } @@ -538,7 +538,7 @@ bool ChatHandler::HandleReloadEventScriptsCommand(const char* arg) objmgr.LoadEventScripts(); if(*arg!='a') - SendGlobalSysMessage("DB table `event_scripts` reloaded."); + SendGlobalGMSysMessage("DB table `event_scripts` reloaded."); return true; } @@ -578,7 +578,7 @@ bool ChatHandler::HandleReloadQuestEndScriptsCommand(const char* arg) objmgr.LoadQuestEndScripts(); if(*arg!='a') - SendGlobalSysMessage("DB table `quest_end_scripts` reloaded."); + SendGlobalGMSysMessage("DB table `quest_end_scripts` reloaded."); return true; } @@ -598,7 +598,7 @@ bool ChatHandler::HandleReloadQuestStartScriptsCommand(const char* arg) objmgr.LoadQuestStartScripts(); if(*arg!='a') - SendGlobalSysMessage("DB table `quest_start_scripts` reloaded."); + SendGlobalGMSysMessage("DB table `quest_start_scripts` reloaded."); return true; } @@ -618,7 +618,7 @@ bool ChatHandler::HandleReloadSpellScriptsCommand(const char* arg) objmgr.LoadSpellScripts(); if(*arg!='a') - SendGlobalSysMessage("DB table `spell_scripts` reloaded."); + SendGlobalGMSysMessage("DB table `spell_scripts` reloaded."); return true; } @@ -627,7 +627,7 @@ bool ChatHandler::HandleReloadDbScriptStringCommand(const char* arg) { sLog.outString( "Re-Loading Script strings from `db_script_string`..."); objmgr.LoadDbScriptStrings(); - SendGlobalSysMessage("DB table `db_script_string` reloaded."); + SendGlobalGMSysMessage("DB table `db_script_string` reloaded."); return true; } @@ -637,7 +637,7 @@ bool ChatHandler::HandleReloadGameGraveyardZoneCommand(const char* /*arg*/) objmgr.LoadGraveyardZones(); - SendGlobalSysMessage("DB table `game_graveyard_zone` reloaded."); + SendGlobalGMSysMessage("DB table `game_graveyard_zone` reloaded."); return true; } @@ -648,7 +648,7 @@ bool ChatHandler::HandleReloadGameTeleCommand(const char* /*arg*/) objmgr.LoadGameTele(); - SendGlobalSysMessage("DB table `game_tele` reloaded."); + SendGlobalGMSysMessage("DB table `game_tele` reloaded."); return true; } @@ -659,7 +659,7 @@ bool ChatHandler::HandleReloadSpellDisabledCommand(const char* /*arg*/) objmgr.LoadSpellDisabledEntrys(); - SendGlobalSysMessage("DB table `spell_disabled` reloaded."); + SendGlobalGMSysMessage("DB table `spell_disabled` reloaded."); return true; } @@ -668,7 +668,7 @@ bool ChatHandler::HandleReloadLocalesCreatureCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Creature ..."); objmgr.LoadCreatureLocales(); - SendGlobalSysMessage("DB table `locales_creature` reloaded."); + SendGlobalGMSysMessage("DB table `locales_creature` reloaded."); return true; } @@ -676,7 +676,7 @@ bool ChatHandler::HandleReloadLocalesGameobjectCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Gameobject ... "); objmgr.LoadGameObjectLocales(); - SendGlobalSysMessage("DB table `locales_gameobject` reloaded."); + SendGlobalGMSysMessage("DB table `locales_gameobject` reloaded."); return true; } @@ -684,7 +684,7 @@ bool ChatHandler::HandleReloadLocalesItemCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Item ... "); objmgr.LoadItemLocales(); - SendGlobalSysMessage("DB table `locales_item` reloaded."); + SendGlobalGMSysMessage("DB table `locales_item` reloaded."); return true; } @@ -692,7 +692,7 @@ bool ChatHandler::HandleReloadLocalesNpcTextCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales NPC Text ... "); objmgr.LoadNpcTextLocales(); - SendGlobalSysMessage("DB table `locales_npc_text` reloaded."); + SendGlobalGMSysMessage("DB table `locales_npc_text` reloaded."); return true; } @@ -700,7 +700,7 @@ bool ChatHandler::HandleReloadLocalesPageTextCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Page Text ... "); objmgr.LoadPageTextLocales(); - SendGlobalSysMessage("DB table `locales_page_text` reloaded."); + SendGlobalGMSysMessage("DB table `locales_page_text` reloaded."); return true; } @@ -708,7 +708,7 @@ bool ChatHandler::HandleReloadLocalesQuestCommand(const char* /*arg*/) { sLog.outString( "Re-Loading Locales Quest ... "); objmgr.LoadQuestLocales(); - SendGlobalSysMessage("DB table `locales_quest` reloaded."); + SendGlobalGMSysMessage("DB table `locales_quest` reloaded."); return true; } diff --git a/src/game/World.cpp b/src/game/World.cpp index 47598dafc65..5b36e3d4d9c 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -2273,6 +2273,23 @@ void World::SendGlobalMessage(WorldPacket *packet, WorldSession *self, uint32 te } } +void World::SendGlobalGMMessage(WorldPacket *packet, WorldSession *self, uint32 team) +{ + SessionMap::iterator itr; + for (itr = m_sessions.begin(); itr != m_sessions.end(); itr++) + { + if (itr->second && + itr->second->GetPlayer() && + itr->second->GetPlayer()->IsInWorld() && + itr->second != self && + itr->second->GetSecurity() >SEC_PLAYER && + (team == 0 || itr->second->GetPlayer()->GetTeam() == team) ) + { + itr->second->SendPacket(packet); + } + } +} + /// Send a System Message to all players (except self if mentioned) void World::SendWorldText(int32 string_id, ...) { @@ -2327,6 +2344,60 @@ void World::SendWorldText(int32 string_id, ...) delete data_cache[i][j]; } +void World::SendGMText(int32 string_id, ...) +{ + std::vector<std::vector<WorldPacket*> > data_cache; // 0 = default, i => i-1 locale index + + for(SessionMap::iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) + { + if(!itr->second || !itr->second->GetPlayer() || !itr->second->GetPlayer()->IsInWorld() ) + continue; + + uint32 loc_idx = itr->second->GetSessionDbLocaleIndex(); + uint32 cache_idx = loc_idx+1; + + std::vector<WorldPacket*>* data_list; + + // create if not cached yet + if(data_cache.size() < cache_idx+1 || data_cache[cache_idx].empty()) + { + if(data_cache.size() < cache_idx+1) + data_cache.resize(cache_idx+1); + + data_list = &data_cache[cache_idx]; + + char const* text = objmgr.GetTrinityString(string_id,loc_idx); + + char buf[1000]; + + va_list argptr; + va_start( argptr, string_id ); + vsnprintf( buf,1000, text, argptr ); + va_end( argptr ); + + char* pos = &buf[0]; + + while(char* line = ChatHandler::LineFromMessage(pos)) + { + WorldPacket* data = new WorldPacket(); + ChatHandler::FillMessageData(data, NULL, CHAT_MSG_SYSTEM, LANG_UNIVERSAL, NULL, 0, line, NULL); + data_list->push_back(data); + } + } + else + data_list = &data_cache[cache_idx]; + + for(int i = 0; i < data_list->size(); ++i) + if(itr->second->GetSecurity()>0) + itr->second->SendPacket((*data_list)[i]); + } + + // free memory + for(int i = 0; i < data_cache.size(); ++i) + for(int j = 0; j < data_cache[i].size(); ++j) + delete data_cache[i][j]; +} + /// Send a System Message to all players (except self if mentioned) void World::SendGlobalText(const char* text, WorldSession *self) { diff --git a/src/game/World.h b/src/game/World.h index 2edbf7669f9..edf5e22850b 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -419,7 +419,9 @@ class World void SendWorldText(int32 string_id, ...); void SendGlobalText(const char* text, WorldSession *self); + void SendGMText(int32 string_id, ...); void SendGlobalMessage(WorldPacket *packet, WorldSession *self = 0, uint32 team = 0); + void SendGlobalGMMessage(WorldPacket *packet, WorldSession *self = 0, uint32 team = 0); void SendZoneMessage(uint32 zone, WorldPacket *packet, WorldSession *self = 0, uint32 team = 0); void SendZoneText(uint32 zone, const char *text, WorldSession *self = 0, uint32 team = 0); void SendServerMessage(uint32 type, const char *text = "", Player* player = NULL); |