Scripts/Commands: Convert argument parsing of some misc commands to new system

Port From (https://github.com/TrinityCore/TrinityCore/commit/1a6564f42fbd941d98c19dc46e5afb853f713843)
This commit is contained in:
hondacrx
2022-06-04 11:41:42 -04:00
parent fb84bc902e
commit 2d1f405655
2 changed files with 46 additions and 92 deletions
+30 -71
View File
@@ -474,30 +474,9 @@ namespace Game.Chat
} }
[CommandNonGroup("commands", RBACPermissions.CommandCommands, true)] [CommandNonGroup("commands", RBACPermissions.CommandCommands, true)]
static bool HandleCommandsCommand(CommandHandler handler, StringArguments args) static bool HandleCommandsCommand(CommandHandler handler)
{ {
string list = ""; handler.ShowHelpForCommand(CommandManager.GetCommands(), "");
foreach (var command in CommandManager.GetCommands())
{
if (handler.IsAvailable(command))
{
if (handler.GetSession() != null)
list += "\n ";
else
list += "\n\r ";
list += command.Name;
if (!command.ChildCommands.Empty())
list += " ...";
}
}
if (list.IsEmpty())
return false;
handler.SendSysMessage(CypherStrings.AvailableCmd);
handler.SendSysMessage(list);
return true; return true;
} }
@@ -630,38 +609,34 @@ namespace Game.Chat
} }
[CommandNonGroup("dev", RBACPermissions.CommandDev)] [CommandNonGroup("dev", RBACPermissions.CommandDev)]
static bool HandleDevCommand(CommandHandler handler, string enable) static bool HandleDevCommand(CommandHandler handler, bool? enableArg)
{ {
Player player = handler.GetSession().GetPlayer(); Player player = handler.GetSession().GetPlayer();
if (enable.IsEmpty()) if (!enableArg.HasValue)
{ {
handler.GetSession().SendNotification(player.IsDeveloper() ? CypherStrings.DevOn : CypherStrings.DevOff); handler.GetSession().SendNotification(player.IsDeveloper() ? CypherStrings.DevOn : CypherStrings.DevOff);
return true; return true;
} }
if (enable == "on") if (enableArg.Value)
{ {
player.SetDeveloper(true); player.SetDeveloper(true);
handler.GetSession().SendNotification(CypherStrings.DevOn); handler.GetSession().SendNotification(CypherStrings.DevOn);
return true;
} }
else if (enable == "off") else
{ {
player.SetDeveloper(false); player.SetDeveloper(false);
handler.GetSession().SendNotification(CypherStrings.DevOff); handler.GetSession().SendNotification(CypherStrings.DevOff);
return true;
} }
handler.SendSysMessage(CypherStrings.UseBol); return true;
return false;
} }
[CommandNonGroup("die", RBACPermissions.CommandDie)] [CommandNonGroup("die", RBACPermissions.CommandDie)]
static bool HandleDieCommand(CommandHandler handler, StringArguments args) static bool HandleDieCommand(CommandHandler handler)
{ {
Unit target = handler.GetSelectedUnit(); Unit target = handler.GetSelectedUnit();
if (!target && handler.GetPlayer().GetTarget().IsEmpty()) if (!target && handler.GetPlayer().GetTarget().IsEmpty())
{ {
handler.SendSysMessage(CypherStrings.SelectCharOrCreature); handler.SendSysMessage(CypherStrings.SelectCharOrCreature);
@@ -680,7 +655,7 @@ namespace Game.Chat
} }
[CommandNonGroup("dismount", RBACPermissions.CommandDismount)] [CommandNonGroup("dismount", RBACPermissions.CommandDismount)]
static bool HandleDismountCommand(CommandHandler handler, StringArguments args) static bool HandleDismountCommand(CommandHandler handler)
{ {
Player player = handler.GetSelectedPlayerOrSelf(); Player player = handler.GetSelectedPlayerOrSelf();
@@ -981,7 +956,7 @@ namespace Game.Chat
} }
[CommandNonGroup("guid", RBACPermissions.CommandGuid)] [CommandNonGroup("guid", RBACPermissions.CommandGuid)]
static bool HandleGUIDCommand(CommandHandler handler, StringArguments args) static bool HandleGUIDCommand(CommandHandler handler)
{ {
ObjectGuid guid = handler.GetSession().GetPlayer().GetTarget(); ObjectGuid guid = handler.GetSession().GetPlayer().GetTarget();
@@ -996,17 +971,16 @@ namespace Game.Chat
} }
[CommandNonGroup("help", RBACPermissions.CommandHelp, true)] [CommandNonGroup("help", RBACPermissions.CommandHelp, true)]
static bool HandleHelpCommand(CommandHandler handler, StringArguments args) static bool HandleHelpCommand(CommandHandler handler, string cmdArg)
{ {
string cmd = args.NextString(""); if (cmdArg.IsEmpty())
if (cmd.IsEmpty())
{ {
handler.ShowHelpForCommand(CommandManager.GetCommands(), "help"); handler.ShowHelpForCommand(CommandManager.GetCommands(), "help");
handler.ShowHelpForCommand(CommandManager.GetCommands(), ""); handler.ShowHelpForCommand(CommandManager.GetCommands(), "");
} }
else else
{ {
if (!handler.ShowHelpForCommand(CommandManager.GetCommands(), cmd)) if (!handler.ShowHelpForCommand(CommandManager.GetCommands(), cmdArg))
handler.SendSysMessage(CypherStrings.NoHelpCmd); handler.SendSysMessage(CypherStrings.NoHelpCmd);
} }
@@ -1055,14 +1029,8 @@ namespace Game.Chat
// move item to other slot // move item to other slot
[CommandNonGroup("itemmove", RBACPermissions.CommandItemmove)] [CommandNonGroup("itemmove", RBACPermissions.CommandItemmove)]
static bool HandleItemMoveCommand(CommandHandler handler, StringArguments args) static bool HandleItemMoveCommand(CommandHandler handler, byte srcSlot, byte dstSlot)
{ {
if (args.Empty())
return false;
byte srcSlot = args.NextByte();
byte dstSlot = args.NextByte();
if (srcSlot == dstSlot) if (srcSlot == dstSlot)
return true; return true;
@@ -1115,22 +1083,14 @@ namespace Game.Chat
} }
[CommandNonGroup("linkgrave", RBACPermissions.CommandLinkgrave)] [CommandNonGroup("linkgrave", RBACPermissions.CommandLinkgrave)]
static bool HandleLinkGraveCommand(CommandHandler handler, StringArguments args) static bool HandleLinkGraveCommand(CommandHandler handler, uint graveyardId, string teamArg)
{ {
if (args.Empty())
return false;
uint graveyardId = args.NextUInt32();
if (graveyardId == 0)
return false;
string px2 = args.NextString();
Team team; Team team;
if (string.IsNullOrEmpty(px2)) if (teamArg.IsEmpty())
team = 0; team = 0;
else if (px2 == "horde") else if (teamArg.Equals("horde"))
team = Team.Horde; team = Team.Horde;
else if (px2 == "alliance") else if (teamArg.Equals("alliance"))
team = Team.Alliance; team = Team.Alliance;
else else
return false; return false;
@@ -1418,28 +1378,27 @@ namespace Game.Chat
} }
[CommandNonGroup("neargrave", RBACPermissions.CommandNeargrave)] [CommandNonGroup("neargrave", RBACPermissions.CommandNeargrave)]
static bool HandleNearGraveCommand(CommandHandler handler, StringArguments args) static bool HandleNearGraveCommand(CommandHandler handler, string teamArg)
{ {
string px2 = args.NextString();
Team team; Team team;
if (string.IsNullOrEmpty(px2)) if (teamArg.IsEmpty())
team = 0; team = 0;
else if (px2 == "horde") else if (teamArg.Equals("horde"))
team = Team.Horde; team = Team.Horde;
else if (px2 == "alliance") else if (teamArg.Equals("alliance"))
team = Team.Alliance; team = Team.Alliance;
else else
return false; return false;
Player player = handler.GetSession().GetPlayer(); Player player = handler.GetSession().GetPlayer();
uint zone_id = player.GetZoneId(); uint zoneId = player.GetZoneId();
WorldSafeLocsEntry graveyard = Global.ObjectMgr.GetClosestGraveYard(player, team, null); WorldSafeLocsEntry graveyard = Global.ObjectMgr.GetClosestGraveYard(player, team, null);
if (graveyard != null) if (graveyard != null)
{ {
uint graveyardId = graveyard.Id; uint graveyardId = graveyard.Id;
GraveYardData data = Global.ObjectMgr.FindGraveYardData(graveyardId, zone_id); GraveYardData data = Global.ObjectMgr.FindGraveYardData(graveyardId, zoneId);
if (data == null) if (data == null)
{ {
handler.SendSysMessage(CypherStrings.CommandGraveyarderror, graveyardId); handler.SendSysMessage(CypherStrings.CommandGraveyarderror, graveyardId);
@@ -1457,7 +1416,7 @@ namespace Game.Chat
else if (team == Team.Alliance) else if (team == Team.Alliance)
team_name = handler.GetCypherString(CypherStrings.CommandGraveyardAlliance); team_name = handler.GetCypherString(CypherStrings.CommandGraveyardAlliance);
handler.SendSysMessage(CypherStrings.CommandGraveyardnearest, graveyardId, team_name, zone_id); handler.SendSysMessage(CypherStrings.CommandGraveyardnearest, graveyardId, team_name, zoneId);
} }
else else
{ {
@@ -1469,9 +1428,9 @@ namespace Game.Chat
team_name = handler.GetCypherString(CypherStrings.CommandGraveyardAlliance); team_name = handler.GetCypherString(CypherStrings.CommandGraveyardAlliance);
if (team == 0) if (team == 0)
handler.SendSysMessage(CypherStrings.CommandZonenograveyards, zone_id); handler.SendSysMessage(CypherStrings.CommandZonenograveyards, zoneId);
else else
handler.SendSysMessage(CypherStrings.CommandZonenografaction, zone_id, team_name); handler.SendSysMessage(CypherStrings.CommandZonenografaction, zoneId, team_name);
} }
return true; return true;
@@ -1865,7 +1824,7 @@ namespace Game.Chat
} }
[CommandNonGroup("pvpstats", RBACPermissions.CommandPvpstats, true)] [CommandNonGroup("pvpstats", RBACPermissions.CommandPvpstats, true)]
static bool HandlePvPstatsCommand(CommandHandler handler, StringArguments args) static bool HandlePvPstatsCommand(CommandHandler handler)
{ {
if (WorldConfig.GetBoolValue(WorldCfg.BattlegroundStoreStatisticsEnable)) if (WorldConfig.GetBoolValue(WorldCfg.BattlegroundStoreStatisticsEnable))
{ {
@@ -1999,7 +1958,7 @@ namespace Game.Chat
// Save all players in the world // Save all players in the world
[CommandNonGroup("saveall", RBACPermissions.CommandSaveall, true)] [CommandNonGroup("saveall", RBACPermissions.CommandSaveall, true)]
static bool HandleSaveAllCommand(CommandHandler handler, StringArguments args) static bool HandleSaveAllCommand(CommandHandler handler)
{ {
Global.ObjAccessor.SaveAllPlayers(); Global.ObjAccessor.SaveAllPlayers();
handler.SendSysMessage(CypherStrings.PlayersSaved); handler.SendSysMessage(CypherStrings.PlayersSaved);
@@ -2007,7 +1966,7 @@ namespace Game.Chat
} }
[CommandNonGroup("save", RBACPermissions.CommandSave)] [CommandNonGroup("save", RBACPermissions.CommandSave)]
static bool HandleSaveCommand(CommandHandler handler, StringArguments args) static bool HandleSaveCommand(CommandHandler handler)
{ {
Player player = handler.GetSession().GetPlayer(); Player player = handler.GetSession().GetPlayer();
+16 -21
View File
@@ -72,7 +72,7 @@ namespace Game.Chat
} }
[CommandNonGroup("aura", RBACPermissions.CommandAura)] [CommandNonGroup("aura", RBACPermissions.CommandAura)]
static bool HandleAuraCommand(CommandHandler handler, StringArguments args) static bool HandleAuraCommand(CommandHandler handler, uint spellId)
{ {
Unit target = handler.GetSelectedUnit(); Unit target = handler.GetSelectedUnit();
if (!target) if (!target)
@@ -82,24 +82,21 @@ namespace Game.Chat
return false; return false;
} }
// number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form
uint spellId = handler.ExtractSpellIdFromLink(args);
SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellId, target.GetMap().GetDifficultyID()); SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellId, target.GetMap().GetDifficultyID());
if (spellInfo != null) if (spellInfo == null)
{ return false;
ObjectGuid castId = ObjectGuid.Create(HighGuid.Cast, SpellCastSource.Normal, target.GetMapId(), spellId, target.GetMap().GenerateLowGuid(HighGuid.Cast));
AuraCreateInfo createInfo = new(castId, spellInfo, target.GetMap().GetDifficultyID(), SpellConst.MaxEffectMask, target);
createInfo.SetCaster(target);
Aura.TryRefreshStackOrCreate(createInfo); ObjectGuid castId = ObjectGuid.Create(HighGuid.Cast, SpellCastSource.Normal, target.GetMapId(), spellId, target.GetMap().GenerateLowGuid(HighGuid.Cast));
} AuraCreateInfo createInfo = new(castId, spellInfo, target.GetMap().GetDifficultyID(), SpellConst.MaxEffectMask, target);
createInfo.SetCaster(target);
Aura.TryRefreshStackOrCreate(createInfo);
return true; return true;
} }
[CommandNonGroup("unaura", RBACPermissions.CommandUnaura)] [CommandNonGroup("unaura", RBACPermissions.CommandUnaura)]
static bool UnAura(CommandHandler handler, StringArguments args) static bool HandleUnAuraCommand(CommandHandler handler, uint spellId = 0)
{ {
Unit target = handler.GetSelectedUnit(); Unit target = handler.GetSelectedUnit();
if (!target) if (!target)
@@ -109,20 +106,18 @@ namespace Game.Chat
return false; return false;
} }
string argstr = args.NextString(); if (spellId == 0)
if (argstr == "all")
{ {
target.RemoveAllAuras(); target.RemoveAllAuras();
return true; return true;
} }
args.Reset(); SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellId, Difficulty.None);
// number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form if (spellInfo != null)
uint spellId = handler.ExtractSpellIdFromLink(args); {
if (spellId == 0) target.RemoveAurasDueToSpell(spellInfo.Id);
return false; return true;
}
target.RemoveAurasDueToSpell(spellId);
return true; return true;
} }