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)]
static bool HandleCommandsCommand(CommandHandler handler, StringArguments args)
static bool HandleCommandsCommand(CommandHandler handler)
{
string list = "";
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);
handler.ShowHelpForCommand(CommandManager.GetCommands(), "");
return true;
}
@@ -630,38 +609,34 @@ namespace Game.Chat
}
[CommandNonGroup("dev", RBACPermissions.CommandDev)]
static bool HandleDevCommand(CommandHandler handler, string enable)
static bool HandleDevCommand(CommandHandler handler, bool? enableArg)
{
Player player = handler.GetSession().GetPlayer();
if (enable.IsEmpty())
if (!enableArg.HasValue)
{
handler.GetSession().SendNotification(player.IsDeveloper() ? CypherStrings.DevOn : CypherStrings.DevOff);
return true;
}
if (enable == "on")
if (enableArg.Value)
{
player.SetDeveloper(true);
handler.GetSession().SendNotification(CypherStrings.DevOn);
return true;
}
else if (enable == "off")
else
{
player.SetDeveloper(false);
handler.GetSession().SendNotification(CypherStrings.DevOff);
return true;
}
handler.SendSysMessage(CypherStrings.UseBol);
return false;
return true;
}
[CommandNonGroup("die", RBACPermissions.CommandDie)]
static bool HandleDieCommand(CommandHandler handler, StringArguments args)
static bool HandleDieCommand(CommandHandler handler)
{
Unit target = handler.GetSelectedUnit();
if (!target && handler.GetPlayer().GetTarget().IsEmpty())
{
handler.SendSysMessage(CypherStrings.SelectCharOrCreature);
@@ -680,7 +655,7 @@ namespace Game.Chat
}
[CommandNonGroup("dismount", RBACPermissions.CommandDismount)]
static bool HandleDismountCommand(CommandHandler handler, StringArguments args)
static bool HandleDismountCommand(CommandHandler handler)
{
Player player = handler.GetSelectedPlayerOrSelf();
@@ -981,7 +956,7 @@ namespace Game.Chat
}
[CommandNonGroup("guid", RBACPermissions.CommandGuid)]
static bool HandleGUIDCommand(CommandHandler handler, StringArguments args)
static bool HandleGUIDCommand(CommandHandler handler)
{
ObjectGuid guid = handler.GetSession().GetPlayer().GetTarget();
@@ -996,17 +971,16 @@ namespace Game.Chat
}
[CommandNonGroup("help", RBACPermissions.CommandHelp, true)]
static bool HandleHelpCommand(CommandHandler handler, StringArguments args)
static bool HandleHelpCommand(CommandHandler handler, string cmdArg)
{
string cmd = args.NextString("");
if (cmd.IsEmpty())
if (cmdArg.IsEmpty())
{
handler.ShowHelpForCommand(CommandManager.GetCommands(), "help");
handler.ShowHelpForCommand(CommandManager.GetCommands(), "");
}
else
{
if (!handler.ShowHelpForCommand(CommandManager.GetCommands(), cmd))
if (!handler.ShowHelpForCommand(CommandManager.GetCommands(), cmdArg))
handler.SendSysMessage(CypherStrings.NoHelpCmd);
}
@@ -1055,14 +1029,8 @@ namespace Game.Chat
// move item to other slot
[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)
return true;
@@ -1115,22 +1083,14 @@ namespace Game.Chat
}
[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;
if (string.IsNullOrEmpty(px2))
if (teamArg.IsEmpty())
team = 0;
else if (px2 == "horde")
else if (teamArg.Equals("horde"))
team = Team.Horde;
else if (px2 == "alliance")
else if (teamArg.Equals("alliance"))
team = Team.Alliance;
else
return false;
@@ -1418,28 +1378,27 @@ namespace Game.Chat
}
[CommandNonGroup("neargrave", RBACPermissions.CommandNeargrave)]
static bool HandleNearGraveCommand(CommandHandler handler, StringArguments args)
static bool HandleNearGraveCommand(CommandHandler handler, string teamArg)
{
string px2 = args.NextString();
Team team;
if (string.IsNullOrEmpty(px2))
if (teamArg.IsEmpty())
team = 0;
else if (px2 == "horde")
else if (teamArg.Equals("horde"))
team = Team.Horde;
else if (px2 == "alliance")
else if (teamArg.Equals("alliance"))
team = Team.Alliance;
else
return false;
Player player = handler.GetSession().GetPlayer();
uint zone_id = player.GetZoneId();
uint zoneId = player.GetZoneId();
WorldSafeLocsEntry graveyard = Global.ObjectMgr.GetClosestGraveYard(player, team, null);
if (graveyard != null)
{
uint graveyardId = graveyard.Id;
GraveYardData data = Global.ObjectMgr.FindGraveYardData(graveyardId, zone_id);
GraveYardData data = Global.ObjectMgr.FindGraveYardData(graveyardId, zoneId);
if (data == null)
{
handler.SendSysMessage(CypherStrings.CommandGraveyarderror, graveyardId);
@@ -1457,7 +1416,7 @@ namespace Game.Chat
else if (team == Team.Alliance)
team_name = handler.GetCypherString(CypherStrings.CommandGraveyardAlliance);
handler.SendSysMessage(CypherStrings.CommandGraveyardnearest, graveyardId, team_name, zone_id);
handler.SendSysMessage(CypherStrings.CommandGraveyardnearest, graveyardId, team_name, zoneId);
}
else
{
@@ -1469,9 +1428,9 @@ namespace Game.Chat
team_name = handler.GetCypherString(CypherStrings.CommandGraveyardAlliance);
if (team == 0)
handler.SendSysMessage(CypherStrings.CommandZonenograveyards, zone_id);
handler.SendSysMessage(CypherStrings.CommandZonenograveyards, zoneId);
else
handler.SendSysMessage(CypherStrings.CommandZonenografaction, zone_id, team_name);
handler.SendSysMessage(CypherStrings.CommandZonenografaction, zoneId, team_name);
}
return true;
@@ -1865,7 +1824,7 @@ namespace Game.Chat
}
[CommandNonGroup("pvpstats", RBACPermissions.CommandPvpstats, true)]
static bool HandlePvPstatsCommand(CommandHandler handler, StringArguments args)
static bool HandlePvPstatsCommand(CommandHandler handler)
{
if (WorldConfig.GetBoolValue(WorldCfg.BattlegroundStoreStatisticsEnable))
{
@@ -1999,7 +1958,7 @@ namespace Game.Chat
// Save all players in the world
[CommandNonGroup("saveall", RBACPermissions.CommandSaveall, true)]
static bool HandleSaveAllCommand(CommandHandler handler, StringArguments args)
static bool HandleSaveAllCommand(CommandHandler handler)
{
Global.ObjAccessor.SaveAllPlayers();
handler.SendSysMessage(CypherStrings.PlayersSaved);
@@ -2007,7 +1966,7 @@ namespace Game.Chat
}
[CommandNonGroup("save", RBACPermissions.CommandSave)]
static bool HandleSaveCommand(CommandHandler handler, StringArguments args)
static bool HandleSaveCommand(CommandHandler handler)
{
Player player = handler.GetSession().GetPlayer();
+16 -21
View File
@@ -72,7 +72,7 @@ namespace Game.Chat
}
[CommandNonGroup("aura", RBACPermissions.CommandAura)]
static bool HandleAuraCommand(CommandHandler handler, StringArguments args)
static bool HandleAuraCommand(CommandHandler handler, uint spellId)
{
Unit target = handler.GetSelectedUnit();
if (!target)
@@ -82,24 +82,21 @@ namespace Game.Chat
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());
if (spellInfo != null)
{
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);
if (spellInfo == null)
return false;
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;
}
[CommandNonGroup("unaura", RBACPermissions.CommandUnaura)]
static bool UnAura(CommandHandler handler, StringArguments args)
static bool HandleUnAuraCommand(CommandHandler handler, uint spellId = 0)
{
Unit target = handler.GetSelectedUnit();
if (!target)
@@ -109,20 +106,18 @@ namespace Game.Chat
return false;
}
string argstr = args.NextString();
if (argstr == "all")
if (spellId == 0)
{
target.RemoveAllAuras();
return true;
}
args.Reset();
// number or [name] Shift-click form |color|Hspell:spell_id|h[name]|h|r or Htalent form
uint spellId = handler.ExtractSpellIdFromLink(args);
if (spellId == 0)
return false;
target.RemoveAurasDueToSpell(spellId);
SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(spellId, Difficulty.None);
if (spellInfo != null)
{
target.RemoveAurasDueToSpell(spellInfo.Id);
return true;
}
return true;
}