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

Решено Определенные координаты

Тема в разделе "Помощь", создана пользователем Kotlar, 24 фев 2015.

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

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

    Баллы:
    66
    Имя в Minecraft:
    kirilka1996
    Доброго времени суток!
    Прошу мне помочь.
    Хочу сделать, чтобы если человек вводит команду и находится в радиусе от координат то что то происходит, но никак не могу понять...
    Прошу наглядно показать как это! Заранее спасибо:)
     
  2. LaoTheLizard

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

    Баллы:
    103
    Skype:
    sgp_the_controller
    Очень просто.
    Код:
    Player p = ...; // игрок
    int mindistance = ...; // минимальная дистанция
    Location destination = ...; // до чего определяем расстояние
    
    // программа
    if(p.getLocation().getWorld().equals(destination.getWorld()){
         if(S(p.getLocation(), destination) < mindistance){
         // do
         //....
         //...
         //...
         }
    }
    
    
    // процедура определения расстояния
    public static Integer S(Location loc, Location target){
            
            double x1 = loc.getX(), y1 = loc.getY(), z1 = loc.getZ(), x2 = target.getX(), y2 = target.getY(), z2 = target.getZ();
            int S = (int)Math.sqrt( Math.pow ((x1 - x2), 2) + Math.pow ((y1 - y2), 2) + Math.pow ((z1 - z2), 2));
            return S;
        }
    
     
  3. LordBekketPro

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

    Баллы:
    88
    Если команда введена, то
    Если (x-X)^2+(z-Z)^2+(y-Y)^2 < R^2, то
    Что-то делать

    X, Y, Z - корды игрока, x, y, z - определённые корды, R - радиус
    Эх, уже написали более грамотный ответ (
     
  4. Reality_SC

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

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    У Location есть сразу методы distance и distanceSquared.
    Наилучшее решение — сравнивать именно квадраты расстояния:
    Код:
    Location target = ...;
    Player player = ...;
    int distance = 10, distanceSq = distance * distance;
    // ...
    try
    {
        if(player.getLocation().distanceSquared(target) <= distanceSq)
        {
            // Окай, внутри
        }
    } catch(IllegalAccessException ex) {
        // Опа, разные миры
    }
     
Статус темы:
Закрыта.

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