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

Помогите Как получить игрока, который находится под прицелом

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

  1. Автор темы
    _MCMaster_

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

    Баллы:
    76
    Имя в Minecraft:
    DragOn4ik
    Вопрос в названии. Заранее спасибо)
     
  2. Автор темы
    _MCMaster_

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

    Баллы:
    76
    Имя в Minecraft:
    DragOn4ik
    Резерв
     
  3. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Проверить находиться ли какое-то существо или локация "под прицелом" можно через длину вектора, ортогонального вектору направления взгляда игрока и разности радиус-векторa игрока и данной сущности/локации.

    Если же нужно узнать, какие существа находятся под прицелом игрока, то нужно пробежаться по вектору направления взгляда игрока и проверять ближайших сущностей.

    Если нас интересуют только игроки, а другие мобы нет, то вероятно будет эффективней пробежаться по всем игрокам и проверять первым способом.
     
    Последнее редактирование: 26 авг 2018
  4. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
  5. Автор темы
    _MCMaster_

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

    Баллы:
    76
    Имя в Minecraft:
    DragOn4ik
    Не подскажешь, как?
     
  6. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
  7. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    Я же тебе написал
     
  8. alexandrage

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

    Баллы:
    173
    Ударь и там покажет в ивенте.
     
  9. Автор темы
    _MCMaster_

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

    Баллы:
    76
    Имя в Minecraft:
    DragOn4ik
    Ну так себе решение... Мне надо найти игрока под прицелом, а не игрока, которого ты ударил.
    Или ты имел в виду ударить через плагин? (Это возможно?)
    И потом отменить ивент.
     
  10. Exception_Prototype

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

    Баллы:
    96
    player.damage(damage);
     
  11. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Чем ему удар поможет? Максимум - проверить можно ли бить в этом регионе.
     
  12. Автор темы
    _MCMaster_

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

    Баллы:
    76
    Имя в Minecraft:
    DragOn4ik
    Про это я и сам знал...
    Вот именно! Как я получу игрока, которого ударить надо? Все равно придется узнать, кто под прицелом...
     
  13. alexandrage

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

    Баллы:
    173
    player.launchProjectile(Arrow.class, player.getLocation().getDirection().multiply(100));
    Стрела сама все сделает.
     
  14. Exception_Prototype

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

    Баллы:
    96
    [​IMG]
     
  15. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Че за рофлы и за костыли? Через вектор нормально можно проверить
     
  16. MicroNovaX

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

    Баллы:
    66
    Имя в Minecraft:
    MicroNovaX
    Ждал такой вариант именно от тебя.
    По сабжу - вектором ¯\_(ツ)_/¯
     
  17. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    ТС, а на каком максимальном расстоянии должен находиться игрок? Возможно проще просто по вектору взгляда проитерировать.
     
  18. alexandrage

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

    Баллы:
    173
    Никаких рофлов. Не умеете юзать, никто не виноват.
    Код:
            Arrow arr = player.launchProjectile(Arrow.class, player.getLocation().getDirection().multiply(100));
            arr.setMetadata("bullet", new FixedMetadataValue(this.plugin, "14,7"));
    Остальное обработает дамаг ивент.
     
    Последнее редактирование: 27 авг 2018
  19. alexandrage

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

    Баллы:
    173
    Собстно затея ТС мне не совсем понятна. Если он решил в рантайме проверять при движении игрока. Сервак успешно уйдет поспать.
     
  20. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Так вот как всякие VoxelSniper'ы вычисляют блок на который смотрит игрок...
    (нет, ну реально рофлишь)
     

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