public void Unstuck(UnturnedPlayer player) { List <PlayerSpawnpoint> spawns = LevelPlayers.getAltSpawns(); PlayerSpawnpoint point = closestSpawn(player, spawns); if (Vector3.Distance(point.point, player.Position) > 16) { UnturnedChat.Say(player, Main.Instance.Translate("cant"), Main.Instance._configColour); return; } if ((DateTime.Now - lastArenaCheck).TotalSeconds > Instance.Configuration.Instance.commandTimeUse) { UnturnedChat.Say(player, Main.Instance.Translate("cant"), Main.Instance._configColour); return; } player.Teleport( new Vector3(point.point.x, point.point.y + 2, point.point.z), player.Rotation); }
public void PlacePlayerSpawnpoint() { PlayerSpawnpoint playerSpawnpoint = (PlayerSpawnpoint)InstantiateTileAttributeGO <PlayerSpawnpoint>(); Tile.SetWalkable(true); Tile.AddAttribute(playerSpawnpoint); }
protected override void Load() { acceptingChallengers = true; lastUpdated = DateTime.Now; challenges = new Dictionary <ulong, Challenge>(); isInArena = false; if (!Player.HasPermission("extraduel.can_spawn_in_arena")) { foreach (Arena a in ExtraDuel.instance.arenaList) { if (!a.IsInArena(Player.Position)) { continue; } int rando = ExtraDuel.Random.Next(LevelPlayers.spawns.Count); PlayerSpawnpoint spawn = LevelPlayers.spawns[rando]; Player.Teleport(spawn.point, Player.Rotation); break; } } lastPosition = Player.Position; }
public override void RemovePlayerSpawnpoint(PlayerSpawnpoint playerSpawnpoint = null) { if (playerSpawnpoint == null) { playerSpawnpoint = (PlayerSpawnpoint)_tile.GetAttributes().FirstOrDefault(attribute => attribute is PlayerSpawnpoint); } if (playerSpawnpoint == null) { return; } _tile.RemoveAttribute(playerSpawnpoint); playerSpawnpoint.Remove(); }
public PlayerSpawnpoint closestSpawn(UnturnedPlayer player, List <PlayerSpawnpoint> spawns) { PlayerSpawnpoint point = null; float distance = float.MaxValue; for (int i = 0; i < spawns.Count; i++) { PlayerSpawnpoint spawn = spawns[i]; float dist = Vector3.Distance(spawn.point, player.Position); if (dist < distance) { point = spawn; distance = dist; } } return(point); }
public abstract void RemovePlayerSpawnpoint(PlayerSpawnpoint playerSpawnpoint = null);