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

Помогите Как занести онлайн в переменную

Тема в разделе "Разработка плагинов для новичков", создана пользователем Darth Udko, 26 авг 2016.

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

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

    Баллы:
    103
    Пытаюсь занести онлайн сервера в переменную, чтобы в будущем ее засунуть в шедуллер чтобы она там обновлялась, но вот беда, не получается(
    Код:
    long onlineCount = Bukkit.getOnlinePlayers().size();
    Код:
    @Override
                public void run() {
                    long online = Bukkit.getOnlinePlayers().size();
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    Darth Udko

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

    Баллы:
    103
    Или может можно как то проще обновлять скорборд вместе с онлайном?
     
  4. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Весь код шедулера бы.
     
  5. Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    При срабатывании ивента "игрок вышел" отнимай у этой переменной 1,при входе прибавляй onlineCount++ .
     
  6. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Совсем нарк?
     
  7. Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Немного есть,но всё же интересно: что я не так сказал?
    P.S.Уже понял.
     
  8. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ну ты сказал, что проще пройти лесами-болотами, чем по прямой трассе.
     
  9. Автор темы
    Darth Udko

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

    Баллы:
    103
    Код:
    BukkitScheduler Scheduler = Bukkit.getServer().getScheduler();
            Scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
                @Override
                public void run() {
                    long online = Bukkit.getOnlinePlayers().size();
                    Integer i = A.size();
                    if(i == 1) {
                        objective.setDisplayName(Colors("&b&lPlugin"));
                        A.add("A");
                    }
                    if(i == 2) {
                        objective.setDisplayName(Colors("&5&lPlugin"));
                        A.add("B");
                    }
                    if(i == 3) {
                        objective.setDisplayName(Colors("&d&lPlugin"));
                        A.add("C");
                    }
                    if(i == 3) {
                        A.clear();
                        A.add("1");
                    }
                }
            }, 0L, 100L);
            player.setScoreboard(board);
        }
    ДисплейНейм обновляется, а вот как онлайн обновить?[DOUBLEPOST=1472234382,1472230170][/DOUBLEPOST]
    Код:
    int online = Bukkit.getOnlinePlayers().size(); //Узнаю количество игроков онлайн
    online.setSuffix(online); //Вставляю переменную, но пишет что переменная должна быть String
    За место int пробывал ставить double не помогло :(
     
    Последнее редактирование: 26 авг 2016
  10. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    String.valueOf(online), Integer online = ... ; online.toString (не уверен что так), online.setSuffix (""+online)
    Выбирай что хочешь.
     
  11. Автор темы
    Darth Udko

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

    Баллы:
    103
    Код:
    Integer onlineCount = Bukkit.getOnlinePlayers().size();
            String.valueOf(onlineCount);
    Не работают способы. Мне нужно к тиме скорборда привязать префикс.(если кто не понял)
     
  12. Jampire

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

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    а нафиг, если можно всегда напрямую актуальные данные брать? даже из любого таймера, даже из асинхронного. ничего плохого не случится -_-

    Bukkit.getOnlinePlayers().size()

    а перевести переменную в стринг (без конката) можно через String.valueOf(int)
     
  13. Автор темы
    Darth Udko

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

    Баллы:
    103
    Щас вот сделал вот так
    Код:
    final Team online = board.registerNewTeam("online");
                  
            Objective objective = board.registerNewObjective("Scoreboard", "dummy");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
          
            Score score = objective.getScore(ChatColor.GOLD + "Онлайн: " + online);
            score1.setScore(1);
          
            BukkitScheduler Scheduler = Bukkit.getServer().getScheduler();
            Scheduler.scheduleSyncRepeatingTask(this, new Runnable() {          
                @Override
                public void run() {
                    int onlineCount = Bukkit.getOnlinePlayers().size();
                    online.setSuffix("§e" + onlineCount);
                 
                    for (Player player : Bukkit.getOnlinePlayers()){
                        player.setScoreboard(board);
                    }
                }
            }, 0L, 100L);
        }
    Так скорборд вообще не показывается теперь ;D[DOUBLEPOST=1472269186,1472269108][/DOUBLEPOST]
    Так я таким методом беру данные онлайна, но он обновляется только для тех, кто заходит. Например 1 игрок зашел пишет онлайн 1, 2 игрок заходит ему пишет онлайн 2, а 1 игроку онлайн не обновляется[DOUBLEPOST=1472272157][/DOUBLEPOST]Вроде как сделал, но криво..
    [​IMG]
    Теперь у меня при входе игрока создается новая строка с обновленным онлайном :D
    Возможно я *баный наркоман, но вот как я это сделал
    Код:
    BukkitScheduler Scheduler = Bukkit.getServer().getScheduler();
            Scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
                @Override
                public void run() {
                    Score score1 = objective.getScore(ChatColor.GREEN + "Онлайн: " + Bukkit.getOnlinePlayers().size() + "/" + Bukkit.getMaxPlayers());
                    score1.setScore(2);
                    Integer i = A.size();
                    if(i == 1) {
                        objective.setDisplayName(Colors("&b&lPlugin"));
                        A.add("A");
                    }
                    if(i == 2) {
                        objective.setDisplayName(Colors("&5&lPlugin"));
                        A.add("B");
                    }
                    if(i == 3) {
                        objective.setDisplayName(Colors("&d&lPlugin"));
                        A.add("C");
                    }
                    if(i == 3) {
                        A.clear();
                        A.add("1");
                    }
                }
            }, 0, 5);
            player.setScoreboard(board);
        }
    [DOUBLEPOST=1472286331][/DOUBLEPOST]Мне никто не поможет? :([DOUBLEPOST=1472296634][/DOUBLEPOST]Закрыто. Уже сам решил все
     
Статус темы:
Закрыта.

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