aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Chat.cpp18
-rw-r--r--src/game/Chat.h3
-rw-r--r--src/game/Language.h5
-rw-r--r--src/game/Level1.cpp26
-rw-r--r--src/game/Level3.cpp116
-rw-r--r--src/game/World.cpp71
-rw-r--r--src/game/World.h2
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);