Помогите Создание кастуемых действий.

Статус
Закрыто для дальнейших ответов.

DaemendLord

Новичок
Пользователь
Баллы
21
Имя в Minecraft
_DaemendLord_
Я работаю с созданием скилов. Вот нужно сделать 1 скил, но он сильный, и поэтому делаю для него время каста. Как реализовать?
Буду признателен за идеи реализации остановки игрока(вроде стана но прерываемого)
Есть идея уменьшать атрибут скорость до нуля, накладывать эффект прыгучести но вот отмену атак... это беда. Придётся создавать листы, чекать их и т д. Как проще?
 
Я работаю с созданием сколов. Вот нужно сделать 1 скил, но он сильный, и поэтому Делаю для него время каста. Как реализоват?
Буду признателен за идеи реализации остановки игрока(вроде стана но прерываемого)
Есть идея уменьшать атрибут скорость до нуля, накладывать эффект прыгучести но вот отмену о так... это беда. Придётся создавать листы, чекать их и т д. Как проще?
Ты сначала написал про время, вроде время КД как я понял, котом ты пишешь про эффекты. Определись точно, что ты хочешь.
 
Ты сначала написал про время, вроде время КД как я понял, котом ты пишешь про эффекты. Определись точно, что ты хочешь.
Кулдаун есть. Нужно время каста(как в доте блекхолы, реармы и т п)
 
Ты стоишь и ничего не можешь делать(двигаться атаковать) некоторое время(время каста) а потом скил срабатывает (как инициализация)
BukkitRunnable который потом запустит скилл и заберёт эффекты?
 
Код:
public List<String> freeze = new ArrayList<String>();

  @EventHandler()
        public void onPlayerMove(PlayerMoveEvent e) {
                if (plugin.freeze.contains(e.getPlayer().getName())) {
                        e.getPlayer().teleport(e.getPlayer().getLocation());
                        e.getPlayer().sendMessage(ChatColor.RED + "фризим");
 
              else if (*скилл)) {
                        Player player = (Player) sender;
                        if (args.length == 1) {
                                Player user = player.getServer().getPlayer(args[0]);
                                if (user == null) {
                                        return false;
                                }
                                else {
                                        if (freeze.contains(user.getName())) {
                                                freeze.remove(user.getName());
                                        }
                                        else {
                                                freeze.add(user.getName());
                                        }
 
                                }
                        }
                        else {
                                return false;
                        }
 
                }
 
Просто, если таймер не прошел тепай его
e.getPlayer().teleport(e.getPlayer().getLocation());
 
Код:
public List<String> freeze = new ArrayList<String>();

  @EventHandler()
        public void onPlayerMove(PlayerMoveEvent e) {
                if (plugin.freeze.contains(e.getPlayer().getName())) {
                        e.getPlayer().teleport(e.getPlayer().getLocation());
                        e.getPlayer().sendMessage(ChatColor.RED + "фризим");
 
              else if (*скилл)) {
                        Player player = (Player) sender;
                        if (args.length == 1) {
                                Player user = player.getServer().getPlayer(args[0]);
                                if (user == null) {
                                        return false;
                                }
                                else {
                                        if (freeze.contains(user.getName())) {
                                                freeze.remove(user.getName());
                                        }
                                        else {
                                                freeze.add(user.getName());
                                        }
 
                                }
                        }
                        else {
                                return false;
                        }
 
                }
Что-то вроде
 
Остановку думаю можно бахнуть большой прыгучестью (чтобы не прыгал) и скоростью/или редактированием аттрибута скорости.
Грузить будет меньше чем PlayerMove
PHP:
public void activeSkill(Player player) {
    player.addPotionEffect(...);
    new BukkitRunnable() {
        public void run() {
            player.removePotionEffect(...);
            doSomethingElse();
        }
    }.runTaskLater(plugin,5*20);
}
 
Окей.
Чтобы бить не мог отменяей - EntityDamageEvent

А чтобы двигаться хз, попробуй наложить замедление 999лвл xD
 
Повторю:
Нужен идея а не код
Спасибо всем кто прислал, но нужно что-то вроде
Скорость передвижения = 0
Не может прыгать
Не может атаковать
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх