예제 #1
0
        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);
    }
예제 #3
0
        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;
        }
예제 #4
0
    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();
    }
예제 #5
0
        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);
        }
예제 #6
0
 public abstract void RemovePlayerSpawnpoint(PlayerSpawnpoint playerSpawnpoint = null);