76 lines
3.6 KiB
C#
76 lines
3.6 KiB
C#
using CommandSystem;
|
|
using LabApi.Features.Permissions;
|
|
using LabApi.Features.Wrappers;
|
|
|
|
namespace CustomClasses;
|
|
|
|
[CommandHandler(typeof(RemoteAdminCommandHandler))]
|
|
[CommandHandler(typeof(ClientCommandHandler))]
|
|
public class SetCClassCommand : ICommand
|
|
{
|
|
public string Command => "setcclass";
|
|
public string[] Aliases => ["scc"];
|
|
public string Description => "Forces a player to become a specific custom class";
|
|
public bool Execute(ArraySegment<string> arguments, ICommandSender sender, out string response)
|
|
{
|
|
var executor = Player.Get(sender);
|
|
if (executor == null)
|
|
{
|
|
response = "You must be a player to use this command!";
|
|
return false;
|
|
}
|
|
|
|
if (!executor.HasPermissions("customclasses.setcustomclass"))
|
|
{
|
|
response = "You do not have permission to use this command!";
|
|
return false;
|
|
}
|
|
|
|
var args = arguments.Array!;
|
|
if (arguments.Count < 2)
|
|
{
|
|
response = "Usage: setcclass <playerName> <className>";
|
|
return false;
|
|
}
|
|
|
|
var className = args[arguments.Offset + arguments.Count - 1].ToLower();
|
|
var playerName = string.Join(" ", args.Skip(arguments.Offset).Take(arguments.Count - 1));
|
|
|
|
var player = Player.ReadyList.FirstOrDefault(x => x.Nickname == playerName || x.UserId == playerName);
|
|
if (player == null)
|
|
{
|
|
response = $"Player {playerName} not found";
|
|
return false;
|
|
}
|
|
|
|
var manager = CustomClasses.Instance.ClassManager;
|
|
|
|
var success = className switch
|
|
{
|
|
"janitor" => manager.ForceSpawn(player, manager.GetConfig<JanitorConfig>(), typeof(JanitorConfig), null),
|
|
"subject" or "researchsubject" => manager.ForceSpawn(player, manager.GetConfig<ResearchSubjectConfig>(), typeof(ResearchSubjectConfig), null),
|
|
"headguard" => manager.ForceSpawn(player, manager.GetConfig<HeadGuardConfig>(), typeof(HeadGuardConfig), null),
|
|
"medic" => manager.ForceSpawn(player, manager.GetConfig<MedicConfig>(), typeof(MedicConfig), null),
|
|
"gambler" => manager.ForceSpawn(player, manager.GetConfig<GamblerConfig>(), typeof(GamblerConfig), null),
|
|
"shadowstepper" => manager.ForceSpawn(player, manager.GetConfig<ShadowStepperConfig>(), typeof(ShadowStepperConfig), null),
|
|
"demolitionist" => manager.ForceSpawn(player, manager.GetConfig<MtfDemolitionistConfig>(), typeof(MtfDemolitionistConfig), null),
|
|
"scout" => manager.ForceSpawn(player, manager.GetConfig<ScoutConfig>(), typeof(ScoutConfig), null),
|
|
"explosivemaster" => manager.ForceSpawn(player, manager.GetConfig<ExplosiveMasterConfig>(), typeof(ExplosiveMasterConfig), null),
|
|
"flashmaster" => manager.ForceSpawn(player, manager.GetConfig<FlashMasterConfig>(), typeof(FlashMasterConfig), null),
|
|
"serpentshand" => manager.ForceSpawn(player, manager.GetConfig<SerpentsHandConfig>(), typeof(SerpentsHandConfig),
|
|
() => SerpentsHandManager.PreSpawn(player)),
|
|
"negromancer" => manager.ForceSpawn(player, manager.GetConfig<NegromancerConfig>(), typeof(NegromancerConfig), null),
|
|
"bloodfueled" => manager.ForceSpawn(player, manager.GetConfig<BloodFueledConfig>(), typeof(BloodFueledConfig), null),
|
|
_ => false
|
|
};
|
|
|
|
if (!success)
|
|
{
|
|
response = $"Failed to set {playerName} to {className}. Make sure the player has the correct base role for the custom class.";
|
|
return false;
|
|
}
|
|
|
|
response = $"Successfully set {playerName} to {className}";
|
|
return true;
|
|
}
|
|
} |