Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Изменение скорости игрока.

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

mayor123

Старожил
Девелопер
Пользователь
Баллы
173
Как изменить скорость игрока? Такой вариант не предлагать:
Java:
    @EventHandler
    public void onPlayerMove(PlayerMoveEvent event) {
        Player p = event.getPlayer();
        PotionEffect effect = new PotionEffect(PotionEffectType.SPEED, 999999999,  0);
        p.addPotionEffect(effect);
    }
По причинам:
  1. Слишком быстро
  2. При беге картинка переворачивается
 
Альтернатив собственно немного.
Вот к примеру, плагин, он использует множитель для вектора velocity. Но у этого метода есть неприятные моменты:
1. Рассинхронизация с клиентом, которая приводит к тому, что могут быть дерганья и рывки. Т.е. клиент считает, что у тебя скорость одна, а с сервера тебе присылают другую.
2. Можно установка velocity легко приводит к зацикливанию: представляете вы в onPlayerMove ставите игроку скорость и всё, он не может остановиться. Тут наверное обязательно учитывать состояния игрока isSprinting() или что-то ещё.

Вопрос обсуждался здесь. Вроде в споуте есть функции для множителя скорости. Но... тут нужен будет и клиент.

Поэтому вопрос с эффектом зелья - пока самый лучший вариант.

Кстати, я сейчас как раз добавляю спидвеи в RoadProtector и работать они будут как раз на основе эффекта зелья скорости.

Вот тестовый код, результат работы которого меня полностью устраивает - (естественно добавится зависимость от конфигурации):

Java:
    @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled = true)
    public void onPlayerMove (PlayerMoveEvent event) {
        Player p = event.getPlayer();
 
        if (p.isSprinting()&&(p.getLocation().getBlock().getRelative(BlockFace.DOWN).getType()==Material.GRAVEL)&&
                (plg.PlaceGuarded(p.getLocation().getBlock())))
            p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,20,0));
 
    }

Т.е. смотрите, практически один в один то, что у Вас. Но я выдаю зелье на 1 секунду - а у вас какое-то огромное число (как сошёл с дороги, его действие закончилось) и проверяю находится ли игрок в состоянии бега. Т.е. ходим по дороге с обычной скоростью.
Никаких переворачиваний нет, работает отлично. Скорость... наверное можно и увеличить.
 
Альтернатив собственно немного.
Вот к примеру, плагин, он использует множитель для вектора velocity. Но у этого метода есть неприятные моменты:
1. Рассинхронизация с клиентом, которая приводит к тому, что могут быть дерганья и рывки. Т.е. клиент считает, что у тебя скорость одна, а с сервера тебе присылают другую.
2. Можно установка velocity легко приводит к зацикливанию: представляете вы в onPlayerMove ставите игроку скорость и всё, он не может остановиться. Тут наверное обязательно учитывать состояния игрока isSprinting() или что-то ещё.

Вопрос обсуждался здесь. Вроде в споуте есть функции для множителя скорости. Но... тут нужен будет и клиент.

Поэтому вопрос с эффектом зелья - пока самый лучший вариант.

Кстати, я сейчас как раз добавляю спидвеи в RoadProtector и работать они будут как раз на основе эффекта зелья скорости.

Вот тестовый код, результат работы которого меня полностью устраивает - (естественно добавится зависимость от конфигурации):

Java:
    @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled = true)
    public void onPlayerMove (PlayerMoveEvent event) {
        Player p = event.getPlayer();
 
        if (p.isSprinting()&&(p.getLocation().getBlock().getRelative(BlockFace.DOWN).getType()==Material.GRAVEL)&&
                (plg.PlaceGuarded(p.getLocation().getBlock())))
            p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,20,0));
 
    }

Т.е. смотрите, практически один в один то, что у Вас. Но я выдаю зелье на 1 секунду - а у вас какое-то огромное число (как сошёл с дороги, его действие закончилось) и проверяю находится ли игрок в состоянии бега. Т.е. ходим по дороге с обычной скоростью.
Никаких переворачиваний нет, работает отлично. Скорость... наверное можно и увеличить.
Я нашел в чем проблема. При тестировании плагина ускорение имело значение 100. А время 300 тысячам часов. И в карте сохранился эффект такого сильного ускорения.
 
Ускорение 100? Я представляю что это было. Я больше 5 не ставил. Там второй параметр - это уровень зелья 0 - первый и т.д.
 
"Нужно наличие brains.exe с привязкой библиотеки arms.dll"
 
blood7564, Вы думаете, что Вы тонко пошутили? А по-моему, вы просто нахамили, намекая, что у участников данной темы кривые руки и мозг отсутствует. Пожалуйста, будьте дружелюбнее к людям, не хамите.
 
"Нужно наличие brains.exe с привязкой библиотеки arms.dll"
Смешная шутка!
Сам то хоть простой плагин написал?


@fromgate, тут же задам вопрос. Вы случайно не знаете что за подтипы есть у биомов, и где можно прочитать их описание?
 
blood7564, извините там не видно предложения почитать литературу (может подскажете, что именно почитать, а то надоело методом научного тыка что-то находить, да исходники крафтбуккита изучать). Там был недвусмысленный намёк, причем после того как автор темы отписался, что он понял в чем была его проблема.

Смешная шутка!
Сам то хоть простой плагин написал?

@fromgate, тут же задам вопрос. Вы случайно не знаете что за подтипы есть у биомов, и где можно прочитать их описание?

Подтипов не знаю ;) Но наверное имеются в виду "технические биомы"? Собственно все виды биомов перечислены здесь. Там правда есть ещё и устаревшие биомы: rain_forest, seasonal_forest, savanna, shrubland, ice_desert, tundra. Для чего их оставили не понятно, наверное для совместимости - чтобы переконвертировать старые карты. Как я понимаю эти биомы важны при генерации. Потом можно смело выставлять похожие: где нужен снег ставить тайгу и не заморачиваться с ландшафтным соответствием ;)
 
blood7564, извините там не видно предложения почитать литературу (может подскажете, что именно почитать, а то надоело методом научного тыка что-то находить, да исходники крафтбуккита изучать). Там был недвусмысленный намёк, причем после того как автор темы отписался, что он понял в чем была его проблема.



Подтипов не знаю ;) Но наверное имеются в виду "технические биомы"? Собственно все виды биомов перечислены здесь. Там правда есть ещё и устаревшие биомы: rain_forest, seasonal_forest, savanna, shrubland, ice_desert, tundra. Для чего их оставили не понятно, наверное для совместимости - чтобы переконвертировать старые карты. Как я понимаю эти биомы важны при генерации. Потом можно смело выставлять похожие: где нужен снег ставить тайгу и не заморачиваться с ландшафтным соответствием ;)
Спасибо! Просто ufes в моей команде. Когда я писал плагин, столкнулся как раз с непонятными биомами, спросил его: "Ты знаешь, что это за биомы [биомы]?" Тему я закрою, нафлудили тут мне...
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх