Scripts/Commands: Convert argument parsing of cheat commands to new system
Port From (https://github.com/TrinityCore/TrinityCore/commit/4aa1c742320d93bbebcb7cb737acc46ec3be6ffd)
This commit is contained in:
@@ -26,9 +26,11 @@ namespace Game.Chat
|
|||||||
{
|
{
|
||||||
class CommandArgs
|
class CommandArgs
|
||||||
{
|
{
|
||||||
public static object[] Parse(Type[] parameterTypes, StringArguments args)
|
public static object[] Parse(CommandHandler handler, Type[] parameterTypes, StringArguments args)
|
||||||
{
|
{
|
||||||
List<object> arguments = new();
|
List<object> arguments = new();
|
||||||
|
arguments.Add(handler);
|
||||||
|
|
||||||
//for each arg we need to see if its a:
|
//for each arg we need to see if its a:
|
||||||
//1: hyperlink
|
//1: hyperlink
|
||||||
//2: Optional arg
|
//2: Optional arg
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ namespace Game.Chat
|
|||||||
if (parameterTypes.Contains(typeof(StringArguments)))//Old system, can remove once all commands are changed.
|
if (parameterTypes.Contains(typeof(StringArguments)))//Old system, can remove once all commands are changed.
|
||||||
return (bool)_methodInfo.Invoke(null, new object[] { handler, args });
|
return (bool)_methodInfo.Invoke(null, new object[] { handler, args });
|
||||||
else
|
else
|
||||||
return (bool)_methodInfo.Invoke(null, new object[] { handler }.Combine(CommandArgs.Parse(parameterTypes, args)));
|
return (bool)_methodInfo.Invoke(null, CommandArgs.Parse(handler, parameterTypes, args));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,92 +24,111 @@ namespace Game.Chat.Commands
|
|||||||
[CommandGroup("cheat", RBACPermissions.CommandCheat)]
|
[CommandGroup("cheat", RBACPermissions.CommandCheat)]
|
||||||
class CheatCommands
|
class CheatCommands
|
||||||
{
|
{
|
||||||
[Command("god", RBACPermissions.CommandCheatGod)]
|
|
||||||
static bool HandleGodModeCheatCommand(CommandHandler handler, StringArguments args)
|
|
||||||
{
|
|
||||||
string argstr = args.NextString();
|
|
||||||
if (args.Empty())
|
|
||||||
argstr = (handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.God)) ? "off" : "on";
|
|
||||||
|
|
||||||
if (argstr == "off")
|
|
||||||
{
|
|
||||||
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.God);
|
|
||||||
handler.SendSysMessage("Godmode is OFF. You can take damage.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (argstr == "on")
|
|
||||||
{
|
|
||||||
handler.GetSession().GetPlayer().SetCommandStatusOn(PlayerCommandStates.God);
|
|
||||||
handler.SendSysMessage("Godmode is ON. You won't take damage.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Command("casttime", RBACPermissions.CommandCheatCasttime)]
|
[Command("casttime", RBACPermissions.CommandCheatCasttime)]
|
||||||
static bool HandleCasttimeCheatCommand(CommandHandler handler, StringArguments args)
|
static bool HandleCasttimeCheatCommand(CommandHandler handler, bool? enableArg)
|
||||||
{
|
{
|
||||||
string argstr = args.NextString();
|
bool enable = !handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.Casttime);
|
||||||
|
if (enableArg.HasValue)
|
||||||
|
enable = enableArg.Value;
|
||||||
|
|
||||||
if (args.Empty())
|
if (enable)
|
||||||
argstr = (handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.Casttime)) ? "off" : "on";
|
|
||||||
|
|
||||||
if (argstr == "off")
|
|
||||||
{
|
|
||||||
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.Casttime);
|
|
||||||
handler.SendSysMessage("CastTime Cheat is OFF. Your spells will have a casttime.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (argstr == "on")
|
|
||||||
{
|
{
|
||||||
handler.GetSession().GetPlayer().SetCommandStatusOn(PlayerCommandStates.Casttime);
|
handler.GetSession().GetPlayer().SetCommandStatusOn(PlayerCommandStates.Casttime);
|
||||||
handler.SendSysMessage("CastTime Cheat is ON. Your spells won't have a casttime.");
|
handler.SendSysMessage("CastTime Cheat is ON. Your spells won't have a casttime.");
|
||||||
return true;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.Casttime);
|
||||||
|
handler.SendSysMessage("CastTime Cheat is OFF. Your spells will have a casttime.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("cooldown", RBACPermissions.CommandCheatCooldown)]
|
[Command("cooldown", RBACPermissions.CommandCheatCooldown)]
|
||||||
static bool HandleCoolDownCheatCommand(CommandHandler handler, StringArguments args)
|
static bool HandleCoolDownCheatCommand(CommandHandler handler, bool? enableArg)
|
||||||
{
|
{
|
||||||
string argstr = args.NextString();
|
bool enable = !handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.Cooldown);
|
||||||
|
if (enableArg.HasValue)
|
||||||
|
enable = enableArg.Value;
|
||||||
|
|
||||||
if (args.Empty())
|
if (enable)
|
||||||
argstr = (handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.Cooldown)) ? "off" : "on";
|
|
||||||
|
|
||||||
if (argstr == "off")
|
|
||||||
{
|
|
||||||
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.Cooldown);
|
|
||||||
handler.SendSysMessage("Cooldown Cheat is OFF. You are on the global cooldown.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (argstr == "on")
|
|
||||||
{
|
{
|
||||||
handler.GetSession().GetPlayer().SetCommandStatusOn(PlayerCommandStates.Cooldown);
|
handler.GetSession().GetPlayer().SetCommandStatusOn(PlayerCommandStates.Cooldown);
|
||||||
handler.SendSysMessage("Cooldown Cheat is ON. You are not on the global cooldown.");
|
handler.SendSysMessage("Cooldown Cheat is ON. You are not on the global cooldown.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.Cooldown);
|
||||||
|
handler.SendSysMessage("Cooldown Cheat is OFF. You are on the global cooldown.");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Command("explore", RBACPermissions.CommandCheatExplore)]
|
||||||
|
static bool HandleExploreCheatCommand(CommandHandler handler, bool reveal)
|
||||||
|
{
|
||||||
|
Player chr = handler.GetSelectedPlayer();
|
||||||
|
if (!chr)
|
||||||
|
{
|
||||||
|
handler.SendSysMessage(CypherStrings.NoCharSelected);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("power", RBACPermissions.CommandCheatPower)]
|
if (reveal)
|
||||||
static bool HandlePowerCheatCommand(CommandHandler handler, StringArguments args)
|
|
||||||
{
|
{
|
||||||
string argstr = args.NextString();
|
handler.SendSysMessage(CypherStrings.YouSetExploreAll, handler.GetNameLink(chr));
|
||||||
|
if (handler.NeedReportToTarget(chr))
|
||||||
if (args.Empty())
|
chr.SendSysMessage(CypherStrings.YoursExploreSetAll, handler.GetNameLink());
|
||||||
argstr = (handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.Power)) ? "off" : "on";
|
}
|
||||||
|
else
|
||||||
if (argstr == "off")
|
|
||||||
{
|
{
|
||||||
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.Power);
|
handler.SendSysMessage(CypherStrings.YouSetExploreNothing, handler.GetNameLink(chr));
|
||||||
handler.SendSysMessage("Power Cheat is OFF. You need mana/rage/energy to use spells.");
|
if (handler.NeedReportToTarget(chr))
|
||||||
|
chr.SendSysMessage(CypherStrings.YoursExploreSetNothing, handler.GetNameLink());
|
||||||
|
}
|
||||||
|
|
||||||
|
for (ushort i = 0; i < PlayerConst.ExploredZonesSize; ++i)
|
||||||
|
{
|
||||||
|
if (reveal)
|
||||||
|
handler.GetSession().GetPlayer().AddExploredZones(i, 0xFFFFFFFFFFFFFFFF);
|
||||||
|
else
|
||||||
|
handler.GetSession().GetPlayer().RemoveExploredZones(i, 0xFFFFFFFFFFFFFFFF);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (argstr == "on")
|
|
||||||
|
[Command("god", RBACPermissions.CommandCheatGod)]
|
||||||
|
static bool HandleGodModeCheatCommand(CommandHandler handler, bool? enableArg)
|
||||||
|
{
|
||||||
|
bool enable = !handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.God);
|
||||||
|
if (enableArg.HasValue)
|
||||||
|
enable = enableArg.Value;
|
||||||
|
|
||||||
|
if (enable)
|
||||||
|
{
|
||||||
|
handler.GetSession().GetPlayer().SetCommandStatusOn(PlayerCommandStates.God);
|
||||||
|
handler.SendSysMessage("Godmode is ON. You won't take damage.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.God);
|
||||||
|
handler.SendSysMessage("Godmode is OFF. You can take damage.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Command("power", RBACPermissions.CommandCheatPower)]
|
||||||
|
static bool HandlePowerCheatCommand(CommandHandler handler, bool? enableArg)
|
||||||
|
{
|
||||||
|
bool enable = !handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.Power);
|
||||||
|
if (enableArg.HasValue)
|
||||||
|
enable = enableArg.Value;
|
||||||
|
|
||||||
|
if (enable)
|
||||||
{
|
{
|
||||||
Player player = handler.GetSession().GetPlayer();
|
Player player = handler.GetSession().GetPlayer();
|
||||||
// Set max power to all powers
|
// Set max power to all powers
|
||||||
@@ -118,14 +137,18 @@ namespace Game.Chat.Commands
|
|||||||
|
|
||||||
player.SetCommandStatusOn(PlayerCommandStates.Power);
|
player.SetCommandStatusOn(PlayerCommandStates.Power);
|
||||||
handler.SendSysMessage("Power Cheat is ON. You don't need mana/rage/energy to use spells.");
|
handler.SendSysMessage("Power Cheat is ON. You don't need mana/rage/energy to use spells.");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.Power);
|
||||||
|
handler.SendSysMessage("Power Cheat is OFF. You need mana/rage/energy to use spells.");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Command("status", RBACPermissions.CommandCheatStatus)]
|
[Command("status", RBACPermissions.CommandCheatStatus)]
|
||||||
static bool HandleCheatStatusCommand(CommandHandler handler, StringArguments args)
|
static bool HandleCheatStatusCommand(CommandHandler handler)
|
||||||
{
|
{
|
||||||
Player player = handler.GetSession().GetPlayer();
|
Player player = handler.GetSession().GetPlayer();
|
||||||
|
|
||||||
@@ -142,102 +165,55 @@ namespace Game.Chat.Commands
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("waterwalk", RBACPermissions.CommandCheatWaterwalk)]
|
|
||||||
static bool HandleWaterWalkCheatCommand(CommandHandler handler, StringArguments args)
|
|
||||||
{
|
|
||||||
string argstr = args.NextString();
|
|
||||||
|
|
||||||
Player target = handler.GetSession().GetPlayer();
|
|
||||||
if (args.Empty())
|
|
||||||
argstr = (target.GetCommandStatus(PlayerCommandStates.Waterwalk)) ? "off" : "on";
|
|
||||||
|
|
||||||
if (argstr == "off")
|
|
||||||
{
|
|
||||||
target.SetCommandStatusOff(PlayerCommandStates.Waterwalk);
|
|
||||||
target.SetWaterWalking(false);
|
|
||||||
handler.SendSysMessage("Waterwalking is OFF. You can't walk on water.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (argstr == "on")
|
|
||||||
{
|
|
||||||
target.SetCommandStatusOn(PlayerCommandStates.Waterwalk);
|
|
||||||
target.SetWaterWalking(true);
|
|
||||||
handler.SendSysMessage("Waterwalking is ON. You can walk on water.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Command("taxi", RBACPermissions.CommandCheatTaxi)]
|
[Command("taxi", RBACPermissions.CommandCheatTaxi)]
|
||||||
static bool HandleTaxiCheatCommand(CommandHandler handler, StringArguments args)
|
static bool HandleTaxiCheatCommand(CommandHandler handler, bool? enableArg)
|
||||||
{
|
{
|
||||||
string argstr = args.NextString();
|
|
||||||
|
|
||||||
Player chr = handler.GetSelectedPlayer();
|
Player chr = handler.GetSelectedPlayer();
|
||||||
if (!chr)
|
if (!chr)
|
||||||
chr = handler.GetSession().GetPlayer();
|
chr = handler.GetSession().GetPlayer();
|
||||||
else if (handler.HasLowerSecurity(chr, ObjectGuid.Empty)) // check online security
|
else if (handler.HasLowerSecurity(chr, ObjectGuid.Empty)) // check online security
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (args.Empty())
|
bool enable = !chr.IsTaxiCheater();
|
||||||
argstr = (chr.IsTaxiCheater()) ? "off" : "on";
|
if (enableArg.HasValue)
|
||||||
|
enable = enableArg.Value;
|
||||||
|
|
||||||
if (argstr == "off")
|
if (enable)
|
||||||
{
|
|
||||||
chr.SetTaxiCheater(false);
|
|
||||||
handler.SendSysMessage(CypherStrings.YouRemoveTaxis, handler.GetNameLink(chr));
|
|
||||||
if (handler.NeedReportToTarget(chr))
|
|
||||||
chr.SendSysMessage(CypherStrings.YoursTaxisRemoved, handler.GetNameLink());
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else if (argstr == "on")
|
|
||||||
{
|
{
|
||||||
chr.SetTaxiCheater(true);
|
chr.SetTaxiCheater(true);
|
||||||
handler.SendSysMessage(CypherStrings.YouGiveTaxis, handler.GetNameLink(chr));
|
handler.SendSysMessage(CypherStrings.YouGiveTaxis, handler.GetNameLink(chr));
|
||||||
if (handler.NeedReportToTarget(chr))
|
if (handler.NeedReportToTarget(chr))
|
||||||
chr.SendSysMessage(CypherStrings.YoursTaxisAdded, handler.GetNameLink());
|
chr.SendSysMessage(CypherStrings.YoursTaxisAdded, handler.GetNameLink());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chr.SetTaxiCheater(false);
|
||||||
|
handler.SendSysMessage(CypherStrings.YouRemoveTaxis, handler.GetNameLink(chr));
|
||||||
|
if (handler.NeedReportToTarget(chr))
|
||||||
|
chr.SendSysMessage(CypherStrings.YoursTaxisRemoved, handler.GetNameLink());
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
handler.SendSysMessage(CypherStrings.UseBol);
|
[Command("waterwalk", RBACPermissions.CommandCheatWaterwalk)]
|
||||||
return false;
|
static bool HandleWaterWalkCheatCommand(CommandHandler handler, bool? enableArg)
|
||||||
}
|
|
||||||
|
|
||||||
[Command("explore", RBACPermissions.CommandCheatExplore)]
|
|
||||||
static bool HandleExploreCheatCommand(CommandHandler handler, StringArguments args)
|
|
||||||
{
|
{
|
||||||
if (args.Empty())
|
bool enable = !handler.GetSession().GetPlayer().GetCommandStatus(PlayerCommandStates.Waterwalk);
|
||||||
return false;
|
if (enableArg.HasValue)
|
||||||
|
enable = enableArg.Value;
|
||||||
|
|
||||||
int flag = args.NextInt32();
|
if (enable)
|
||||||
Player chr = handler.GetSelectedPlayer();
|
|
||||||
if (!chr)
|
|
||||||
{
|
{
|
||||||
handler.SendSysMessage(CypherStrings.NoCharSelected);
|
handler.GetSession().GetPlayer().SetCommandStatusOn(PlayerCommandStates.Waterwalk);
|
||||||
return false;
|
handler.GetSession().GetPlayer().SetWaterWalking(true);
|
||||||
}
|
handler.SendSysMessage("Waterwalking is ON. You can walk on water.");
|
||||||
|
|
||||||
if (flag != 0)
|
|
||||||
{
|
|
||||||
handler.SendSysMessage(CypherStrings.YouSetExploreAll, handler.GetNameLink(chr));
|
|
||||||
if (handler.NeedReportToTarget(chr))
|
|
||||||
chr.SendSysMessage(CypherStrings.YoursExploreSetAll, handler.GetNameLink());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
handler.SendSysMessage(CypherStrings.YouSetExploreNothing, handler.GetNameLink(chr));
|
handler.GetSession().GetPlayer().SetCommandStatusOff(PlayerCommandStates.Waterwalk);
|
||||||
if (handler.NeedReportToTarget(chr))
|
handler.GetSession().GetPlayer().SetWaterWalking(false);
|
||||||
chr.SendSysMessage(CypherStrings.YoursExploreSetNothing, handler.GetNameLink());
|
handler.SendSysMessage("Waterwalking is OFF. You can't walk on water.");
|
||||||
}
|
|
||||||
|
|
||||||
for (ushort i = 0; i < PlayerConst.ExploredZonesSize; ++i)
|
|
||||||
{
|
|
||||||
if (flag != 0)
|
|
||||||
handler.GetSession().GetPlayer().AddExploredZones(i, 0xFFFFFFFFFFFFFFFF);
|
|
||||||
else
|
|
||||||
handler.GetSession().GetPlayer().RemoveExploredZones(i, 0xFFFFFFFFFFFFFFFF);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user