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

Помогите Таймеры

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

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

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Нужно каждые 1000 миллисекунд производить определённый набор действий, как создать таймер?
     
    eleon нравится это.
  2. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Scheduler
     
    eleon и AdMiRaLL нравится это.
  3. musel70

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

    Баллы:
    88
    Bukkit.getScheduler().scheduleSyncRepeatingTask(arg0, arg1, arg2, arg3)
    arg0 - плагин;
    arg1 - раннабел;
    arg2 - задержка перед первым разом;
    arg3 - интервал
     
    eleon и AdMiRaLL нравится это.
  4. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    А как остановить его?
     
    eleon нравится это.
  5. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    getServer().getScheduler().cancelTask(id);
     
    eleon и AdMiRaLL нравится это.
  6. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Что будет параметром id?
     
    eleon нравится это.
  7. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ид шедулера
     
    eleon и AdMiRaLL нравится это.
  8. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    А где его достать?
     
    eleon нравится это.
  9. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Удосужиться посмотреть жабадоки и увидеть, что scheduleSyncRepeatingTask возвращает свой собственный ид
     
    eleon, AdMiRaLL, ql_Nik_lp и ещё 1-му нравится это.
  10. musel70

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

    Баллы:
    88
    Если не понятно то int id = Bukkit.getScheduler().scheduleSyncRepeatingTask(arg0, arg1, arg2, arg3)
     
    eleon и AdMiRaLL нравится это.
  11. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Мне как-то уже стыдно спрашивать.
    Но всё же
    В каком месте мне определять id? При создании того таймера, который впоследствии буду останавливать? Если да, то выдаёт ошибку
     
    eleon нравится это.
  12. musel70

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

    Баллы:
    88
    int id = Bukkit.getScheduler().scheduleSyncRepeatingTask(arg0, arg1, arg2, arg3)
    вот так вот шелдулер создавай!!! id - ид твоего шелдулера!!!!
     
    fromgate, eleon и AdMiRaLL нравится это.
  13. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    да, я так и создаю, но внутри шелдулера когда использую айди, он требует сделать его final, когда делаю, говорит что нужно инициализировать его
     
    eleon нравится это.
  14. musel70

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

    Баллы:
    88
    Специально проверил - ошибку не выдает
    а зачем внутри использовать ид?
    внутри есть метод cancel()
     
    Последнее редактирование: 14 мар 2014
    eleon и AdMiRaLL нравится это.
  15. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    так мне внутри и нужно, как использовать cansel()?
     
    eleon нравится это.
  16. musel70

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

    Баллы:
    88
    cancel() в ран методе пишешь и все останавливается
     
    eleon нравится это.
  17. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Если вставляешь это в метод, то подчёркивает красным.
     
    eleon нравится это.
  18. musel70

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

    Баллы:
    88
    Вместо обычного раннабл используй BukkitRunnable
     
  19. Автор темы
    AdMiRaLL

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

    Баллы:
    68
    Skype:
    xxxpro100stasxxx
    Имя в Minecraft:
    AdMiRaLLL
    Код:
    Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new BukkitRunnable() {
                        @Override
                        public void run() {
                            if((PlayerPos[pid].getX() == player.getLocation().getX()) && (PlayerPos[pid].getY() == player.getLocation().getY()) && (PlayerPos[pid].getZ() == player.getLocation().getZ()) && (SpawnCanc[pid] == true)){
                                PlayerSpawnTimer[pid]++;
                                player.sendMessage(Integer.toString(PlayerSpawnTimer[pid]));
                                if(PlayerSpawnTimer[pid] == 11){
                                    cancel();
                                    SpawnTime[pid] = System.currentTimeMillis();
                                    player.teleport(new Location(Bukkit.getWorld("world"), 62.0, 74.0, -210.0, 90, 0));
                                   
                                }
                            } else{
                                player.sendMessage("Телепорт отменён, попробуй ещё раз.");
                                cancel();
                            }
                    }}, 0L, 100);
    Имеется вот такой вот отрывок кода, и когда вызывается cancel(), в консоли ошибки и ничего не останавливается
     
    eleon нравится это.
  20. musel70

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

    Баллы:
    88
    а точно на кансел обрывается? Текст ошибки в студию!
     
    eleon нравится это.
Статус темы:
Закрыта.

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