Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    kirilka1996
    Доброго времени суток!
    Прошу мне помочь.
    Хочу сделать, чтобы если человек вводит команду и находится в радиусе от координат то что то происходит, но никак не могу понять...
    Прошу наглядно показать как это! Заранее спасибо:)
     
  2. Хостинг MineCraft
    <
  3. 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;
        }
    
     
  4. LordBekketPro

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

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

    X, Y, Z - корды игрока, x, y, z - определённые корды, R - радиус[DOUBLEPOST=1424737542,1424737458][/DOUBLEPOST]Эх, уже написали более грамотный ответ (
     
  5. Reality_SC

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

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

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