aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-09-20 03:31:54 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-27 20:59:19 +0100
commit46d4e2fa8378eed414c07eb161a19b772c474735 (patch)
treed075a9e3b907399fd4216a2f03e020959c4301a6
parent3fd2eb126cbed36292fa5defc024c2b93e8d8671 (diff)
1eca51b follow-up, nuke `command`.`permission` from orbit; it was only duplicating data already stored in the core.
(cherry picked from commit 991dc8e050777b5e33ff22b008ab2125bae22437)
-rw-r--r--sql/updates/world/master/2022_02_27_29_world_2020_09_20_01_world.sql11
-rw-r--r--src/server/database/Database/Implementation/WorldDatabase.cpp2
-rw-r--r--src/server/game/Accounts/RBAC.h2
-rw-r--r--src/server/game/Chat/ChatCommands/ChatCommand.cpp11
-rw-r--r--src/server/scripts/Commands/cs_gm.cpp36
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp2
-rw-r--r--src/server/scripts/Commands/cs_reload.cpp13
7 files changed, 29 insertions, 48 deletions
diff --git a/sql/updates/world/master/2022_02_27_29_world_2020_09_20_01_world.sql b/sql/updates/world/master/2022_02_27_29_world_2020_09_20_01_world.sql
new file mode 100644
index 00000000000..989f603c547
--- /dev/null
+++ b/sql/updates/world/master/2022_02_27_29_world_2020_09_20_01_world.sql
@@ -0,0 +1,11 @@
+--
+ALTER TABLE `command` DROP COLUMN `permission`;
+DELETE FROM `command` WHERE `name` IN ('reload command', 'gm', 'gm off', 'gm on');
+INSERT INTO `command` (`name`,`help`) VALUES
+('gm on', 'Syntax: .gm on
+
+Enables in-game GM mode. This makes you exempt from most game mechanics.
+Among other things, it makes creatures unable to attack you, and makes you untargetable by most spells. It also makes creatures in all phases, as well as invisible creatures, visible to you.'),
+('gm off', 'Syntax: .gm off
+
+Disables in-game GM mode.');
diff --git a/src/server/database/Database/Implementation/WorldDatabase.cpp b/src/server/database/Database/Implementation/WorldDatabase.cpp
index bcf3df6c980..3c87a79111e 100644
--- a/src/server/database/Database/Implementation/WorldDatabase.cpp
+++ b/src/server/database/Database/Implementation/WorldDatabase.cpp
@@ -76,7 +76,7 @@ void WorldDatabaseConnection::DoPrepareStatements()
PrepareStatement(WORLD_UPD_WAYPOINT_SCRIPT_O, "UPDATE waypoint_scripts SET o = ? WHERE guid = ?", CONNECTION_ASYNC);
PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_ID_BY_GUID, "SELECT id FROM waypoint_scripts WHERE guid = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_DEL_CREATURE, "DELETE FROM creature WHERE guid = ?", CONNECTION_ASYNC);
- PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, permission, help FROM command", CONNECTION_SYNCH);
+ PrepareStatement(WORLD_SEL_COMMANDS, "SELECT name, help FROM command", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_CREATURE_TEMPLATE, "SELECT entry, difficulty_entry_1, difficulty_entry_2, difficulty_entry_3, KillCredit1, KillCredit2, name, femaleName, subname, TitleAlt, IconName, gossip_menu_id, minlevel, maxlevel, HealthScalingExpansion, RequiredExpansion, VignetteID, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, unit_flags3, dynamicflags, family, trainer_class, type, type_flags, type_flags2, lootid, pickpocketloot, skinloot, VehicleId, mingold, maxgold, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, HoverHeight, HealthModifier, HealthModifierExtra, ManaModifier, ManaModifierExtra, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, CreatureDifficultyID, WidgetSetID, WidgetSetUnitConditionID, RegenHealth, mechanic_immune_mask, spell_school_immune_mask, flags_extra, ScriptName FROM creature_template ct LEFT JOIN creature_template_movement ctm ON ct.entry = ctm.CreatureId WHERE entry = ? OR 1 = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_WAYPOINT_SCRIPT_BY_ID, "SELECT guid, delay, command, datalong, datalong2, dataint, x, y, z, o FROM waypoint_scripts WHERE id = ?", CONNECTION_SYNCH);
PrepareStatement(WORLD_SEL_CREATURE_BY_ID, "SELECT guid FROM creature WHERE id = ?", CONNECTION_SYNCH);
diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h
index 408da2515dc..22250b95c50 100644
--- a/src/server/game/Accounts/RBAC.h
+++ b/src/server/game/Accounts/RBAC.h
@@ -497,7 +497,7 @@ enum RBACPermissions
RBAC_PERM_COMMAND_RELOAD_AREATRIGGER_TELEPORT = 625,
RBAC_PERM_COMMAND_RELOAD_AUCTIONS = 626,
RBAC_PERM_COMMAND_RELOAD_AUTOBROADCAST = 627,
- RBAC_PERM_COMMAND_RELOAD_COMMAND = 628,
+ // 628 previously used, do not reuse
RBAC_PERM_COMMAND_RELOAD_CONDITIONS = 629,
RBAC_PERM_COMMAND_RELOAD_CONFIG = 630,
RBAC_PERM_COMMAND_RELOAD_BATTLEGROUND_TEMPLATE = 631,
diff --git a/src/server/game/Chat/ChatCommands/ChatCommand.cpp b/src/server/game/Chat/ChatCommands/ChatCommand.cpp
index 865979999d7..e0f997b71ee 100644
--- a/src/server/game/Chat/ChatCommands/ChatCommand.cpp
+++ b/src/server/game/Chat/ChatCommands/ChatCommand.cpp
@@ -80,8 +80,7 @@ static ChatSubCommandMap COMMAND_MAP;
{
Field* fields = result->Fetch();
std::string_view const name = fields[0].GetStringView();
- uint16 const permission = fields[1].GetUInt16();
- std::string_view const help = fields[2].GetStringView();
+ std::string_view const help = fields[1].GetStringView();
ChatCommandNode* cmd = nullptr;
ChatSubCommandMap* map = &COMMAND_MAP;
@@ -104,14 +103,6 @@ static ChatSubCommandMap COMMAND_MAP;
if (!cmd)
continue;
- if (cmd->_invoker && (cmd->_permission.RequiredPermission != permission))
- {
- TC_LOG_WARN("sql.sql", "Table `command` has permission %u for '" STRING_VIEW_FMT "' which does not match the core (%u). Overriding.",
- permission, STRING_VIEW_FMT_ARG(name), cmd->_permission.RequiredPermission);
-
- cmd->_permission.RequiredPermission = static_cast<rbac::RBACPermissions>(permission);
- }
-
cmd->_help.assign(help);
} while (result->NextRow());
}
diff --git a/src/server/scripts/Commands/cs_gm.cpp b/src/server/scripts/Commands/cs_gm.cpp
index 17b7889b64a..54078045b85 100644
--- a/src/server/scripts/Commands/cs_gm.cpp
+++ b/src/server/scripts/Commands/cs_gm.cpp
@@ -50,7 +50,8 @@ public:
{ "ingame", HandleGMListIngameCommand, rbac::RBAC_PERM_COMMAND_GM_INGAME, Console::Yes },
{ "list", HandleGMListFullCommand, rbac::RBAC_PERM_COMMAND_GM_LIST, Console::Yes },
{ "visible", HandleGMVisibleCommand, rbac::RBAC_PERM_COMMAND_GM_VISIBLE, Console::No },
- { "", HandleGMCommand, rbac::RBAC_PERM_COMMAND_GM, Console::No },
+ { "on", HandleGMOnCommand, rbac::RBAC_PERM_COMMAND_GM, Console::No },
+ { "off", HandleGMOffCommand, rbac::RBAC_PERM_COMMAND_GM, Console::No },
};
static ChatCommandTable commandTable =
{
@@ -222,30 +223,19 @@ public:
return true;
}
- //Enable\Disable GM Mode
- static bool HandleGMCommand(ChatHandler* handler, Optional<bool> enableArg)
+ static bool HandleGMOnCommand(ChatHandler* handler)
{
- Player* _player = handler->GetSession()->GetPlayer();
-
- if (!enableArg)
- {
- handler->GetSession()->SendNotification(_player->IsGameMaster() ? LANG_GM_ON : LANG_GM_OFF);
- return true;
- }
-
- if (*enableArg)
- {
- _player->SetGameMaster(true);
- handler->GetSession()->SendNotification(LANG_GM_ON);
- _player->UpdateTriggerVisibility();
- }
- else
- {
- _player->SetGameMaster(false);
- handler->GetSession()->SendNotification(LANG_GM_OFF);
- _player->UpdateTriggerVisibility();
- }
+ handler->GetPlayer()->SetGameMaster(true);
+ handler->GetPlayer()->UpdateTriggerVisibility();
+ handler->GetSession()->SendNotification(LANG_GM_ON);
+ return true;
+ }
+ static bool HandleGMOffCommand(ChatHandler* handler)
+ {
+ handler->GetPlayer()->SetGameMaster(false);
+ handler->GetPlayer()->UpdateTriggerVisibility();
+ handler->GetSession()->SendNotification(LANG_GM_OFF);
return true;
}
};
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 7985a1ad5bb..c89360972f2 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -701,6 +701,8 @@ public:
static bool HandleHelpCommand(ChatHandler* handler, Tail cmd)
{
Trinity::ChatCommands::SendCommandHelpFor(*handler, cmd);
+ if (cmd.empty())
+ Trinity::ChatCommands::SendCommandHelpFor(*handler, "help");
return true;
}
diff --git a/src/server/scripts/Commands/cs_reload.cpp b/src/server/scripts/Commands/cs_reload.cpp
index 9efb9155dce..eac2eb77640 100644
--- a/src/server/scripts/Commands/cs_reload.cpp
+++ b/src/server/scripts/Commands/cs_reload.cpp
@@ -89,7 +89,6 @@ public:
{ "autobroadcast", rbac::RBAC_PERM_COMMAND_RELOAD_AUTOBROADCAST, true, &HandleReloadAutobroadcastCommand, "" },
{ "battleground_template", rbac::RBAC_PERM_COMMAND_RELOAD_BATTLEGROUND_TEMPLATE, true, &HandleReloadBattlegroundTemplate, "" },
{ "character_template", rbac::RBAC_PERM_COMMAND_RELOAD_CHARACTER_TEMPLATE, true, &HandleReloadCharacterTemplate, "" },
- { "command", rbac::RBAC_PERM_COMMAND_RELOAD_COMMAND, true, &HandleReloadCommandCommand, "" },
{ "conditions", rbac::RBAC_PERM_COMMAND_RELOAD_CONDITIONS, true, &HandleReloadConditions, "" },
{ "config", rbac::RBAC_PERM_COMMAND_RELOAD_CONFIG, true, &HandleReloadConfigCommand, "" },
{ "conversation_template", rbac::RBAC_PERM_COMMAND_RELOAD_CONVERSATION_TEMPLATE, true, &HandleReloadConversationTemplateCommand, "" },
@@ -204,7 +203,6 @@ public:
HandleReloadAccessRequirementCommand(handler, "");
HandleReloadMailLevelRewardCommand(handler, "");
- HandleReloadCommandCommand(handler, "");
HandleReloadReservedNameCommand(handler, "");
HandleReloadTrinityStringCommand(handler, "");
HandleReloadGameTeleCommand(handler, "");
@@ -410,17 +408,6 @@ public:
return true;
}
- static bool HandleReloadCommandCommand(ChatHandler* handler, char const* /*args*/)
- {
- TC_LOG_INFO("misc", "Reloading .command information...");
- Trinity::ChatCommands::LoadCommandMap();
- handler->SendGlobalGMSysMessage("DB table `command` reloaded.");
-
- // do not log this invocation, otherwise we might crash (the command table we used to get here is no longer valid!)
- handler->SetSentErrorMessage(true);
- return false;
- }
-
static bool HandleReloadOnKillReputationCommand(ChatHandler* handler, char const* /*args*/)
{
TC_LOG_INFO("misc", "Re-Loading creature award reputation definitions...");