public void Execute(IRocketPlayer caller, string[] command) { UnturnedPlayer player = (UnturnedPlayer)caller; Vector3 pos; byte rot; if (!BarricadeManager.tryGetBed(player.CSteamID, out pos, out rot)) { UnturnedChat.Say(caller, U.Translate("command_bed_no_bed_found_private")); throw new WrongUsageOfCommandException(caller, this); } else { if (player.Stance == EPlayerStance.DRIVING || player.Stance == EPlayerStance.SITTING) { UnturnedChat.Say(caller, U.Translate("command_generic_teleport_while_driving_error")); throw new WrongUsageOfCommandException(caller, this); } else { pos.y += 0.5f; // Respawn uses this offset. float yaw = MeasurementTool.byteToAngle(rot); bool teleportSuccessful = player.Player.teleportToLocation(pos, yaw); if (!teleportSuccessful) { UnturnedChat.Say(caller, U.Translate("command_bed_obstructed")); } } } }
public override CommandResult OnExecute(ICommandSource src, ICommandArgs args) { var player = src.ToPlayer(); var playerId = player.CSteamId; if (player.Stance == EPlayerStance.DRIVING || player.Stance == EPlayerStance.SITTING) { return(CommandResult.LangError("CANNOT_TELEPORT_DRIVING")); } if (!BarricadeManager.tryGetBed(player.CSteamId, out var bedPosition, out var bedAngle)) { return(CommandResult.LangError("WITHOUT_BED")); } if (Delay.ContainsKey(player.CSteamId.m_SteamID)) { return(CommandResult.LangError("ALREADY_WAITING")); } var homeCommand = UEssentials.Config.Home; var delay = homeCommand.TeleportDelay; if (player.HasPermission("essentials.bypass.homecooldown")) { delay = 0; } if (delay > 0) { EssLang.Send(src, "TELEPORT_DELAY", TimeUtil.FormatSeconds((uint)delay)); } var task = Task.Create() .Delay(TimeSpan.FromSeconds(delay)) .Action(t => { Delay.Remove(playerId.m_SteamID); bedPosition.y += .5f; player.UnturnedPlayer.teleportToLocation(bedPosition, MeasurementTool.byteToAngle(bedAngle)); EssLang.Send(src, "TELEPORTED_BED"); }) .Submit(); Delay.Add(playerId.m_SteamID, task); return(CommandResult.Success()); }