1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Есть ли рядом игрок

Тема в разделе "Разработка плагинов для новичков", создана пользователем Kurumi, 4 мар 2018.

Статус темы:
Закрыта.
  1. Автор темы
    Kurumi

    Kurumi Активный участник Пользователь

    Баллы:
    76
    Допустим игрок отправил команду /test player, player это ник игрока. Мне нужно проверить, если рядом с сендером стоит игрок из аргумента, ему будет отправляться сообщение. Каким образом можно проверить, находиться ли игрок из аргумента вблизи сендера?
     
  2. Автор темы
    Kurumi

    Kurumi Активный участник Пользователь

    Баллы:
    76
    хелп
     
  3. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Если ты уже проверил что sender - игрок
    PHP:
    Player sender;
    Player player;
    int maxDistance=10//У всех своё понятие о близости
    if(sender.getLocation().distance(player.getLocation())<maxDistance) {
        
    //Отправитель меньше чем в 10 блоках от игрока
    }
     
    Последнее редактирование: 4 мар 2018
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        int getDistance(double x1, double y1, double x2, double y2) {
            double dx = x2 - x1;
            double dy = y2 - y1;
            return (int) Math.sqrt(dx * dx + dy * dy);
        }
     
  5. Автор темы
    Kurumi

    Kurumi Активный участник Пользователь

    Баллы:
    76
    Попробую чуть позже, в данный момент не могу проверить
     
  6. hyndorik

    hyndorik Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    distanceSquared тож самое делает
     
  7. Автор темы
    Kurumi

    Kurumi Активный участник Пользователь

    Баллы:
    76
    Все работает! Но почему ты не поставил там просто distance, а именно distanceSquared ? Я так понял этот метод получает площадь игрока
     
  8. Cool_boy

    Cool_boy Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Площадь игрока... Орнул. Ошибся, но можно и его использовать.

    Расстояние между локациями (метод distanceSquared) получают за формулой (x2 - x1)^2 + (y2 - y1)^2 + (z2 - z1)^2, но оно возвращает дистанцию в квадрате. Чтобы получить саму дистанцию, получают корень (метод distance).
    Если надо оптимизировать - можно использовать distanceSquared, но тогда сравнивать с максимальным расстоянием в квадрате.
     
  9. Автор темы
    Kurumi

    Kurumi Активный участник Пользователь

    Баллы:
    76
    Ошибся, но я думаю ты понял, что я имел ввиду.
    Я понял, спасибо!
     
Статус темы:
Закрыта.

Поделиться этой страницей