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

Помогите Эвент наведения курсора на игрока

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

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

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Это не очень хорошо, ибо мне надо определить игрока сразу же, как на того навели курсор. Если сделать выброс снежка каждые 20 тиков, то нагрузка будет большая. В любом случае нагрузка будет большая, но надо выбрать наименьшую.
     
  2. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Если не секрет, то зачем нужно?
     
  3. kris13

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

    Баллы:
    78
    Посмотрите код damage indicators, там ни чего сложного, а нагрузку меньшую чем обработка на стороне клиента вы точно не получите.
     
  4. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Хочу сделать так: если игрок убивал игрока, то он становится его врагом. При наведении курсора на врага, его ник становится красным. Вот-так вот.
     
  5. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Я так гранаты себе сделал:)
     
    musel70 и ql_Nik_lp нравится это.
  6. musel70

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

    Баллы:
    88
    А ведь так уже сделано с зомби с кастомным именем: при наведении на зомби над ним появляется его имя
     
  7. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Какое отношение они имеют к сущности игрока?
     
  8. kirill2011s

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

    Баллы:
    103
    Ну типа можно код скомуниздить:)
     
  9. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Не можно, клиент рисует его у мобов и игрока по разному
     
  10. musel70

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

    Баллы:
    88
    Ну, я просто предположил...
     
    ПриветОтЛайки нравится это.
  11. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Всяко советую отказаться от затее, и красить ник по достижению определенного расстояния, ибо такой тяжкий код ради такой маленькой фичурки...
    По моему не стоит того.
    Хотелось бы узнать к чему пришел ТС :)
     
    fromgate нравится это.
  12. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Я отказался, теперь у меня другая проблема! Как засунуть зомбейке в руку предмет? Выкидываю прямо под ним предмет, так эта гадина не берет! Как сделать так, чтоб он взял?
     
  13. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    setItemInHand? Или я что-то пропустил.
     
  14. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    А как к мобу это применить?
     
  15. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    "Суём" предмет в руку:
    Код:
    zombie.getEntityEquipment().setItemInHand(item)
    Чтобы он подобрал:
    Код:
    zombie.setCanPickupItems(true);

    А вот и тема про курсор:
    https://forums.bukkit.org/threads/how-to-check-if-a-player-is-looking-at-a-player.163653/
    Сборник тем про наведения курсора:
    https://forums.bukkit.org/threads/how-to-get-an-entity-on-cursor.172259/
    Работоспособность этих тем не гарантирую.
     
    Последнее редактирование: 25 апр 2014
    unlimited, Gentalion, AlexGL и 2 другим нравится это.
  16. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Спасибо, братишка :3
     
  17. GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    А не проще использовать EntityTargetLivingEntityEvent?
     
    ПриветОтЛайки и konfyciu98 нравится это.
  18. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Ок, спасибо! Запомню это.
     
  19. GodlikE

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

    Баллы:
    103
    Имя в Minecraft:
    GodlikE
    Не за что=)
     
  20. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate

    Может проще подсвечивать ник тогда когда он находится на определенном расстоянии? Без вычисления наведения?

    Если же нужно именно когда "прицеливаешься".
    То тут решения два:
    1. Получаешь перечень блоков по направлению взора (вот пример из Laser) сканируешь все блоки и определяешь есть ли игрок в данном блоке, т.е. проверяешь координаты игрока в соотношении к каждому блоку. Вот пример из Laser: выбор всех Entity из списка блоков. Ну и соответственно - результат.
    2. Вспоминешь школьные знания геометрии и вычисляешь расстояние от точки (кординты игрока) до линии (определяемой направлением взора). Если это расстояние меньше какого-то значения (допустим 1 блок) то подсвечиваешь ник.

    И честно говоря, думаю в заданной задаче, предпочтительнее второй варинт: первый, как мне кажется, будет ресурсоемкий - это сканирование множества блоков в PlayerMoveEvent. Разве что поставить какой-то таймаут.
    Это несколько иное. Я бы даже сказал - совсем другое. Это не то на что смотрит игрок, а то на что "нацелен" моб. Т.е. если стоит три игрока и рядом крипер - то крипер нацелен на одного из игроков (хотя может на него и не смотрит ;)). Если этого игрока убил другой крипер, то цель переопределяется и предоставляется возможность обработать это событие (допустим перевесить цель вместо Васи на Петю).
     
    ql_Nik_lp нравится это.

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