Make respawn command work without argument.

This commit is contained in:
Pieter-Jan Briers
2019-07-19 12:40:03 +02:00
parent c0717ed6a3
commit 8cb3b9b2e6

View File

@@ -21,7 +21,6 @@ using Robust.Shared.Interfaces.Configuration;
using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Map; using Robust.Shared.Interfaces.Map;
using Robust.Shared.Interfaces.Network; using Robust.Shared.Interfaces.Network;
using Robust.Shared.Interfaces.Reflection;
using Robust.Shared.Interfaces.Timing; using Robust.Shared.Interfaces.Timing;
using Robust.Shared.IoC; using Robust.Shared.IoC;
using Robust.Shared.Log; using Robust.Shared.Log;
@@ -569,23 +568,38 @@ namespace Content.Server.GameTicking
{ {
public string Command => "respawn"; public string Command => "respawn";
public string Description => "Respawns a player, kicking them back to the lobby."; public string Description => "Respawns a player, kicking them back to the lobby.";
public string Help => "respawn <player>"; public string Help => "respawn [player]";
public void Execute(IConsoleShell shell, IPlayerSession player, string[] args) public void Execute(IConsoleShell shell, IPlayerSession player, string[] args)
{ {
if (args.Length != 1) if (args.Length > 1)
{ {
shell.SendText(player, "Must provide exactly one argument."); shell.SendText(player, "Must provide <= 1 argument.");
return; return;
} }
var playerMgr = IoCManager.Resolve<IPlayerManager>(); var playerMgr = IoCManager.Resolve<IPlayerManager>();
var ticker = IoCManager.Resolve<IGameTicker>(); var ticker = IoCManager.Resolve<IGameTicker>();
var arg = new NetSessionId(args[0]); NetSessionId sessionId;
if (!playerMgr.TryGetSessionById(arg, out var targetPlayer)) if (args.Length == 0)
{ {
if (!playerMgr.TryGetPlayerData(arg, out var data)) if (player == null)
{
shell.SendText((IPlayerSession)null, "If not a player, an argument must be given.");
return;
}
sessionId = player.SessionId;
}
else
{
sessionId = new NetSessionId(args[0]);
}
if (!playerMgr.TryGetSessionById(sessionId, out var targetPlayer))
{
if (!playerMgr.TryGetPlayerData(sessionId, out var data))
{ {
shell.SendText(player, "Unknown player"); shell.SendText(player, "Unknown player");
return; return;