diff options
| -rw-r--r-- | sql/updates/world/3.3.5/2020_09_20_01_world.sql | 11 | ||||
| -rw-r--r-- | src/server/database/Database/Implementation/WorldDatabase.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Accounts/RBAC.h | 2 | ||||
| -rw-r--r-- | src/server/game/Chat/ChatCommands/ChatCommand.cpp | 11 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_gm.cpp | 36 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 2 | ||||
| -rw-r--r-- | src/server/scripts/Commands/cs_reload.cpp | 13 |
7 files changed, 29 insertions, 48 deletions
diff --git a/sql/updates/world/3.3.5/2020_09_20_01_world.sql b/sql/updates/world/3.3.5/2020_09_20_01_world.sql new file mode 100644 index 00000000000..989f603c547 --- /dev/null +++ b/sql/updates/world/3.3.5/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 469a201308c..5d36783dbc2 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, modelid1, modelid2, modelid3, modelid4, name, subname, IconName, gossip_menu_id, minlevel, maxlevel, exp, faction, npcflag, speed_walk, speed_run, scale, `rank`, dmgschool, BaseAttackTime, RangeAttackTime, BaseVariance, RangeVariance, unit_class, unit_flags, unit_flags2, dynamicflags, family, type, type_flags, lootid, pickpocketloot, skinloot, PetSpellDataId, VehicleId, mingold, maxgold, AIName, MovementType, ctm.Ground, ctm.Swim, ctm.Flight, ctm.Rooted, ctm.Chase, ctm.Random, HoverHeight, HealthModifier, ManaModifier, ArmorModifier, DamageModifier, ExperienceModifier, RacialLeader, movementId, 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 = ?", 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_ITEM_TEMPLATE_BY_NAME, "SELECT entry FROM item_template WHERE name = ?", CONNECTION_SYNCH); diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index c1bff3f8f77..4895fba28fa 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -493,7 +493,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 4a3feac41ad..e4da5a04644 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 a2206d37737..c7aea3765f1 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 = { @@ -220,30 +221,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 c4bad133ddf..5e386d53474 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -695,6 +695,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 5b7dc280a56..84b22033d80 100644 --- a/src/server/scripts/Commands/cs_reload.cpp +++ b/src/server/scripts/Commands/cs_reload.cpp @@ -85,7 +85,6 @@ public: { "autobroadcast", rbac::RBAC_PERM_COMMAND_RELOAD_AUTOBROADCAST, true, &HandleReloadAutobroadcastCommand, "" }, { "battleground_template", rbac::RBAC_PERM_COMMAND_RELOAD_BATTLEGROUND_TEMPLATE, true, &HandleReloadBattlegroundTemplate, "" }, { "broadcast_text", rbac::RBAC_PERM_COMMAND_RELOAD_BROADCAST_TEXT, true, &HandleReloadBroadcastTextCommand, "" }, - { "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, "" }, { "creature_text", rbac::RBAC_PERM_COMMAND_RELOAD_CREATURE_TEXT, true, &HandleReloadCreatureText, "" }, @@ -197,7 +196,6 @@ public: HandleReloadAccessRequirementCommand(handler, ""); HandleReloadMailLevelRewardCommand(handler, ""); - HandleReloadCommandCommand(handler, ""); HandleReloadReservedNameCommand(handler, ""); HandleReloadTrinityStringCommand(handler, ""); HandleReloadGameTeleCommand(handler, ""); @@ -405,17 +403,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..."); |
