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

Помогите При определённых условиях отключить действие брони

Discussion in 'Разработка плагинов для новичков' started by Den-Xs, Sep 6, 2013.

  1. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Trophy Points:
    103
    Skype:
    denis_314
    Собственно, нужно чтобы при определенных условиях, при нанесении игроку урона, игнорировался эффект от брони.
     
  2. Хостинг MineCraft
    <
  3. Den_Abr

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

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А что сложного? Задавай при определённых условиях больше урона
     
  4. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Trophy Points:
    103
    Skype:
    denis_314
    т.е. если я поставлю event.setDamage(10), у меня будет наноситься 10 урона не зависимо от наличия брони?
     
  5. Den_Abr

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

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    да
     
    Den-Xs likes this.
  6. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Trophy Points:
    103
    Skype:
    denis_314
    Однако ж нет
    Code:
    package ru.testplugin;
     
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class TestPlugin extends JavaPlugin implements Listener {
     
        @Override
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
        }
     
        @EventHandler
        public void onDamage (EntityDamageByEntityEvent event) {
            if (event.getEntity() instanceof Player) {
                event.setDamage(6D);
            }
        }
    }
    
    Не смотря на то, что во всех случаях нанесения урона игроку урон устанавливается на 6, реальные значения урона у игроков с бронёй и без неё будет различаться.
    Тема всё ещё актуальна
     
  7. Den_Abr

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

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Юзай так
    Code:
    Player p = (Player) event.getEntity();
    p.damage();
    
    Так норм будет
     
  8. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Trophy Points:
    103
    Skype:
    denis_314
    Сделал так:
    Code:
    @EventHandler
    public void onDamage (EntityDamageByEntityEvent event) {
       if (event.getEntity() instanceof Player) {
           Player p = (Player) event.getEntity();
           double dmg = event.getDamage();
           p.damage(dmg);
           p.sendMessage("Вы получили " + dmg + " урона");
        }
    }
    При употреблении зелья на урон в броне в чат пишет "вы получили 6.0 урона", а реально отнимается только 2 сердца (4 урона). Без брони наносится, как положено, 6 урона.[DOUBLEPOST=1378820996,1378815273][/DOUBLEPOST]Упс, случайно проводил испытания на чареной броне, на обыкновенной с p.damage() всё в порядке :)
     
  9. Den_Abr

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

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Для совсем извращений есть p.setHealth();
     
  10. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Trophy Points:
    103
    Skype:
    denis_314
    Это я знаю, но тогда не отображается анимация урона/лечения, поэтому лучше p.damage();
     
  11. Den_Abr

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

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Наноси нулевой дамаг или проигрывай эффект HURT
     
  12. Автор темы
    Den-Xs

    Den-Xs Старожил Пользователь

    Trophy Points:
    103
    Skype:
    denis_314
    однако это уже пошло "извращение" :D
     

Share This Page