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

Помогите Проверить прошел ли урон

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

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

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

    Баллы:
    76
    Возможно ли проверить, прошел ли урон от оружия?
    Например если бить игрока специальным мечом, ему дается иссушение, но если игрок которого бьют стоит в рг с офф. пвп, урон по нему не проходит, но эффект иссушения дается. Возможно ли как-то проверить, прошел ли урон по игроку, если он прошел, просто давать игроку которого бьют эффект иссушения. Возможно, это можно сделать через wg api, но мб есть способ проще?
     
  2. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Запустить свой эвент урона и проверить отменят ли его или изменят урон на 0.
    Например как тут с проверкой редактирования стенда
     
  3. alexandrage

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

    Баллы:
    173
    Ивент игнор кансел труе.
     
  4. Автор темы
    Kurumi

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

    Баллы:
    76
    таким образом?
    PHP:
    if(event.getDamage() != || !event.isCancelled())
     
  5. Автор темы
    Kurumi

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

    Баллы:
    76
    можно чуть подробнее?
     
  6. Автор темы
    Kurumi

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

    Баллы:
    76
    Хм.. Кодом выше это не работает.. Есть идеи?
     
  7. Автор темы
    Kurumi

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

    Баллы:
    76
    PHP:
        @EventHandler(ignoreCancelled true)
    тоже не помогло(
     
  8. Автор темы
    Kurumi

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

    Баллы:
    76
    Хелпаните дураку
     
  9. Автор темы
    Kurumi

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

    Баллы:
    76
    хелп (x2)
     
  10. php5master

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

    Баллы:
    66
    Мальчик, учи ивенты(Вот хорошая статья от spigotmc)
    А вот список
    А выглядит это примерно так
    Код:
    @EventHandler
    //Вызовется при каждом дамаге от entity к entity
    public void onDamage(EntityDamageByEntityEvent e){  //entity - живое существо
    if(!(event.getEntity() instanceof Player)) return;
    //действия
    }
    
     
  11. Автор темы
    Kurumi

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

    Баллы:
    76
    Код который ты дал - у меня уже есть. Это мне понятно. Из того что ты мне написал, я понял что этот эвент вызывается каждый раз когда ентити наносит урон другому ентити, но в регионе урон не наноситя, получается, эвент не отменяется если в рг стоит pvp deny, а скорее всего изменяется урон?
     
  12. php5master

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

    Баллы:
    66
    Ну вот сам логически подумай, откуда знать крану об рг и флагах. Может быть нужно воспользоваться WorldGuard API, через него сделать проверку на флаг, а там уже делать, что тебе надо...
    Короче зайди в гугол и почитай документацию WorldGuard API
     
  13. Автор темы
    Kurumi

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

    Баллы:
    76
    Ты тему вообще читал? Я же написал, что знаю про возможность написания этого через wg, но также я спросил, есть ли варианты попроще
     
  14. Nikolai_Faint

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

    Баллы:
    96
  15. Автор темы
    Kurumi

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

    Баллы:
    76
  16. php5master

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

    Баллы:
    66
    Всё, что связано с рг, нужно делать через WorldGuard API. Иначе плагин рг-шек будет не замечать
    Насколько я понял, тебе нужно сделать мечи, которые дадут эффект и урончика побольше, а в грин зонах ничего не делать
    Ну дак в чём проблема? В чём сложность?
    Код:
    @EventHandler
    //Вызовется при каждом дамаге от entity к entity
    public void onDamage(EntityDamageByEntityEvent e){  //entity - живое существо
    if(!(event.getEntity() instanceof Player) || !(getDamager() instanceof Player)) return;
    if(/* чек флага */) {
      event.setDamage(0.0);
    retrun;
    }
    //Всё 100 проц. игроки и пвп-зона тут давай эффекты и event.setDamage(); cтавь дамаг
    }
    
     
  17. Автор темы
    Kurumi

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

    Баллы:
    76
    Видимо все-таки придется шаманить с w api....
     
  18. Nikolai_Faint

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

    Баллы:
    96
    У тебя получается
    если дамаг не равен не тому, не тому
    Код:
    if(event.getDamage() > 0) { //Если damage больше чем 0
    /TODO
    e.setCanselled(true);
    return;
    if(event.getDamage() < 0) {//Если 0 больше чем Damage
    /TODO
    e.setCanselled(true)
    return;
    
     
  19. Автор темы
    Kurumi

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

    Баллы:
    76
    все равно эффект накладывается
     
  20. Nikolai_Faint

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

    Баллы:
    96
Статус темы:
Закрыта.

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