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

Помогите Проверка на разницу в уровнях

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

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

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Здравствуйте, возникла потребность сделать проверку по уровням. То есть:
    Если разница в уровнях больше чем задано в конфиге отменять возможность пвп с игроками.
    Например, если один игрок имеет 5 уровень, а второй имеет 15 уровень, а разница в конфиге - 5, то они не смогут участвовать в пвп.
    Как реализовать подобное?
     
  2. Хостинг MineCraft
    <
  3. Agravaine

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

    Баллы:
    88
    Имя в Minecraft:
    Agravaine25
    В ивенте получения урона сравнивай уровни обоих игроков и отменяй его.
    boolean cancel = Math.abs(p1Lvl - p2Lvl) > cfgLvl;
     
  4. Автор темы
    oleg57zls

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    У меня вот такой говнокод. Можете привести это в нормальный вид, с вашим методом?

    Код:
        @EventHandler (priority = EventPriority.MONITOR)
        public void onEntityDamage(EntityDamageByEntityEvent e) {
            Player player = (Player) e.getEntity();
            Player playerdmg = (Player) e.getDamager();
           
            int difflvl = player.getLevel() - playerdmg.getLevel();
            int difflvldmg = playerdmg.getLevel() - player.getLevel();
           
            if (player instanceof Player && playerdmg instanceof Player) {
                if (plugin.getConfig().getBoolean("pvp.funcdiffpvplvl") != false) {
                    if(difflvl <= plugin.getConfig().getInt("pvp.diffpvplvl") && difflvldmg <= plugin.getConfig().getInt("pvp.diffpvplvl")) {
                      e.setCancelled(true);
                    if (plugin.getConfig().getBoolean("messages.msgreqlvl") != false) {
                            player.sendMessage(ChatColor.GREEN + plugin.getConfig().getString("messages.prefix") + ChatColor.WHITE + plugin.getConfig().getString("messages.reqlvldmg"));
                            playerdmg.sendMessage(ChatColor.GREEN + plugin.getConfig().getString("messages.prefix") + ChatColor.WHITE + plugin.getConfig().getString("messages.reqlvldmg"));
                    }
                    }
                }
        }
        }
     
  5. Agravaine

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

    Баллы:
    88
    Имя в Minecraft:
    Agravaine25
    Код:
    @EventHandler
    public void onEntityDamage(EntityDamageByEntityEvent e){
        if(e.getEntity() instanceof Player && e.getDamager() instanceof Player){
            Player attacked = (Player)e.getEntity();
            Player attacker = (Player)e.getDamager();
            int lvl = Math.abs(attacker.getLevel() - attacked.getLevel());
            if(lvl > plugin.getConfig().getInt("pvp.diffpvplvl")){
                e.setCancelled(true);
            }
        }
    }
     
  6. Автор темы
    oleg57zls

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Спасибо!
     
Статус темы:
Закрыта.

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