diff --git a/Source/Game/Chat/Commands/AccountCommands.cs b/Source/Game/Chat/Commands/AccountCommands.cs index 37d68342b..036eed366 100644 --- a/Source/Game/Chat/Commands/AccountCommands.cs +++ b/Source/Game/Chat/Commands/AccountCommands.cs @@ -395,60 +395,6 @@ namespace Game.Chat [CommandGroup("set", RBACPermissions.CommandAccountSet, true)] class SetCommands { - [Command("password", RBACPermissions.CommandAccountSetPassword, true)] - static bool HandleAccountSetPasswordCommand(StringArguments args, CommandHandler handler) - { - if (args.Empty()) - { - handler.SendSysMessage(CypherStrings.CmdSyntax); - return false; - } - - // Get the command line arguments - string accountName = args.NextString(); - string password = args.NextString(); - string passwordConfirmation = args.NextString(); - - if (string.IsNullOrEmpty(accountName) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(passwordConfirmation)) - return false; - - uint targetAccountId = Global.AccountMgr.GetId(accountName); - if (targetAccountId == 0) - { - handler.SendSysMessage(CypherStrings.AccountNotExist, accountName); - return false; - } - - // can set password only for target with less security - // This also restricts setting handler's own password - if (handler.HasLowerSecurityAccount(null, targetAccountId, true)) - return false; - - if (!password.Equals(passwordConfirmation)) - { - handler.SendSysMessage(CypherStrings.NewPasswordsNotMatch); - return false; - } - - AccountOpResult result = Global.AccountMgr.ChangePassword(targetAccountId, password); - switch (result) - { - case AccountOpResult.Ok: - handler.SendSysMessage(CypherStrings.CommandPassword); - break; - case AccountOpResult.NameNotExist: - handler.SendSysMessage(CypherStrings.AccountNotExist, accountName); - return false; - case AccountOpResult.PassTooLong: - handler.SendSysMessage(CypherStrings.PasswordTooLong); - return false; - default: - handler.SendSysMessage(CypherStrings.CommandNotchangepassword); - return false; - } - return true; - } - [Command("addon", RBACPermissions.CommandAccountSetAddon, true)] static bool HandleAccountSetAddonCommand(StringArguments args, CommandHandler handler) { @@ -512,6 +458,65 @@ namespace Game.Chat } [Command("gmlevel", RBACPermissions.CommandAccountSetSecLevel, true)] + static bool HandleAccountSetGmLevelCommand(StringArguments args, CommandHandler handler) + { + return HandleAccountSetSecLevelCommand(args, handler); + } + + [Command("password", RBACPermissions.CommandAccountSetPassword, true)] + static bool HandleAccountSetPasswordCommand(StringArguments args, CommandHandler handler) + { + if (args.Empty()) + { + handler.SendSysMessage(CypherStrings.CmdSyntax); + return false; + } + + // Get the command line arguments + string accountName = args.NextString(); + string password = args.NextString(); + string passwordConfirmation = args.NextString(); + + if (string.IsNullOrEmpty(accountName) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(passwordConfirmation)) + return false; + + uint targetAccountId = Global.AccountMgr.GetId(accountName); + if (targetAccountId == 0) + { + handler.SendSysMessage(CypherStrings.AccountNotExist, accountName); + return false; + } + + // can set password only for target with less security + // This also restricts setting handler's own password + if (handler.HasLowerSecurityAccount(null, targetAccountId, true)) + return false; + + if (!password.Equals(passwordConfirmation)) + { + handler.SendSysMessage(CypherStrings.NewPasswordsNotMatch); + return false; + } + + AccountOpResult result = Global.AccountMgr.ChangePassword(targetAccountId, password); + switch (result) + { + case AccountOpResult.Ok: + handler.SendSysMessage(CypherStrings.CommandPassword); + break; + case AccountOpResult.NameNotExist: + handler.SendSysMessage(CypherStrings.AccountNotExist, accountName); + return false; + case AccountOpResult.PassTooLong: + handler.SendSysMessage(CypherStrings.PasswordTooLong); + return false; + default: + handler.SendSysMessage(CypherStrings.CommandNotchangepassword); + return false; + } + return true; + } + [Command("seclevel", RBACPermissions.CommandAccountSetSecLevel, true)] static bool HandleAccountSetSecLevelCommand(StringArguments args, CommandHandler handler) { diff --git a/Source/Game/Chat/Commands/GameObjectCommands.cs b/Source/Game/Chat/Commands/GameObjectCommands.cs index ab135763d..40017ec18 100644 --- a/Source/Game/Chat/Commands/GameObjectCommands.cs +++ b/Source/Game/Chat/Commands/GameObjectCommands.cs @@ -107,7 +107,36 @@ namespace Game.Chat [Command("despawngroup", RBACPermissions.CommandGobjectDespawngroup)] static bool HandleGameObjectDespawnGroup(StringArguments args, CommandHandler handler) { - return NPCCommands.HandleNpcDespawnGroup(args, handler); + if (args.Empty()) + return false; + + bool deleteRespawnTimes = false; + uint groupId = 0; + + // Decode arguments + string arg = args.NextString(); + while (!arg.IsEmpty()) + { + string thisArg = arg.ToLower(); + if (thisArg == "removerespawntime") + deleteRespawnTimes = true; + else if (thisArg.IsEmpty() || !thisArg.IsNumber()) + return false; + else + groupId = uint.Parse(thisArg); + + arg = args.NextString(); + } + + Player player = handler.GetSession().GetPlayer(); + + if (!player.GetMap().SpawnGroupDespawn(groupId, deleteRespawnTimes)) + { + handler.SendSysMessage(CypherStrings.SpawngroupBadgroup, groupId); + return false; + } + + return true; } [Command("info", RBACPermissions.CommandGobjectInfo)] @@ -311,7 +340,44 @@ namespace Game.Chat [Command("spawngroup", RBACPermissions.CommandGobjectSpawngroup)] static bool HandleGameObjectSpawnGroup(StringArguments args, CommandHandler handler) { - return NPCCommands.HandleNpcSpawnGroup(args, handler); + if (args.Empty()) + return false; + + bool ignoreRespawn = false; + bool force = false; + uint groupId = 0; + + // Decode arguments + string arg = args.NextString(); + while (!arg.IsEmpty()) + { + string thisArg = arg.ToLower(); + if (thisArg == "ignorerespawn") + ignoreRespawn = true; + else if (thisArg == "force") + force = true; + else if (thisArg.IsEmpty() || !thisArg.IsNumber()) + return false; + else + groupId = uint.Parse(thisArg); + + arg = args.NextString(); + } + + Player player = handler.GetSession().GetPlayer(); + + List creatureList = new List(); + if (!player.GetMap().SpawnGroupSpawn(groupId, ignoreRespawn, force, creatureList)) + { + handler.SendSysMessage(CypherStrings.SpawngroupBadgroup, groupId); + return false; + } + + handler.SendSysMessage(CypherStrings.SpawngroupSpawncount, creatureList.Count); + foreach (WorldObject obj in creatureList) + handler.SendSysMessage($"{obj.GetName()} ({obj.GetGUID()})"); + + return true; } [Command("target", RBACPermissions.CommandGobjectTarget)] @@ -495,8 +561,6 @@ namespace Game.Chat return true; } - - [CommandGroup("add", RBACPermissions.CommandGobjectAdd)] class AddCommands { diff --git a/Source/Game/Chat/Commands/NPCCommands.cs b/Source/Game/Chat/Commands/NPCCommands.cs index 0a2f66661..a5f2edb4d 100644 --- a/Source/Game/Chat/Commands/NPCCommands.cs +++ b/Source/Game/Chat/Commands/NPCCommands.cs @@ -34,7 +34,7 @@ namespace Game.Chat class NPCCommands { [Command("despawngroup", RBACPermissions.CommandNpcDespawngroup)] - public static bool HandleNpcDespawnGroup(StringArguments args, CommandHandler handler) + static bool HandleNpcDespawnGroup(StringArguments args, CommandHandler handler) { if (args.Empty()) return false; @@ -418,7 +418,7 @@ namespace Game.Chat } [Command("spawngroup", RBACPermissions.CommandNpcSpawngroup)] - public static bool HandleNpcSpawnGroup(StringArguments args, CommandHandler handler) + static bool HandleNpcSpawnGroup(StringArguments args, CommandHandler handler) { if (args.Empty()) return false; @@ -1468,8 +1468,6 @@ namespace Game.Chat return true; } - - } } }