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

Помогите Scoreboard и онлайн игроков

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

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

    Forest_SD Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Forest_SD
    Я хочу сделать чтобы в scoreboard показывалось,сколько игроков зашло,пример(Игроков: 1/24),и обновлялось как только игрок зашел или вышел
     
  2. Хостинг MineCraft
    <
  3. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Создешь скорборд, обьект, даешь всем игрокам. При заходе игрока увеличиваешь score на 1
     
  4. Автор темы
    Forest_SD

    Forest_SD Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Forest_SD
    И?я делал это,или ошибка,или значение не обновляется при выходи игрока,мне нужно как-то сделать это в PlayerJoinEvent, и PlayerQuitEvent, а потом передать значения в scoreboard,только я не могу додумать как...
     
  5. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    5 минут
     
  6. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    чо - та долго.
    Bukkit.getOnlinePlayers()
     
  7. _MediaNik_

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

    Баллы:
    46
    Skype:
    Medianik5
    Имя в Minecraft:
    _MediaNik_
    Упс.. Забыл. Счас[DOUBLEPOST=1478444478,1478439971][/DOUBLEPOST]Сори, лоханулся
     
  8. Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    -_-

    Щас се будет


    создаем статичный метод со входящим аргументом Player:
    public static void classname (Player p) {
    }

    Находим сам ск:
    public static void (Player p) {
    ScoreboardManager manager = Bukkit.getScoreboardManageer();
    Scoreboard board = manager.getNewScoreBoard();
    }

    Регаем новую задачу:
    public static void (Player p) {
    ScoreboardManager manager = Bukkit.getScoreboardManageer();
    Scoreboard board = manager.getNewScoreBoard();
    Objective obj = board.registerNewObjective("obj", "dummy");
    }

    Выводим вывод ск и его название:
    public static void (Player p) {
    ScoreboardManager manager = Bukkit.getScoreboardManageer();
    Scoreboard board = manager.getNewScoreBoard();
    Objective obj = board.registerNewObjective("obj", "dummy");

    obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    obj.setDisplayName(String);
    }

    Задаем сами очки и их значение (у нас же dummy)
    public static void (Player p) {
    ScoreboardManager manager = Bukkit.getScoreboardManageer();
    Scoreboard board = manager.getNewScoreBoard();
    Objective obj = board.registerNewObjective("obj", "dummy");

    obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    obj.setDisplayName(String);

    Score sc = obj.getScore(Bukkit.getOnlinePlayers().size + Bukkit.getMaxPlayers()); // я знаю, что не поставил слэш, но не как-то по***.
    sc.setScore(int)
    }

    И последнее:
    public static void (Player p) {
    ScoreboardManager manager = Bukkit.getScoreboardManageer();
    Scoreboard board = manager.getNewScoreBoard();
    Objective obj = board.registerNewObjective("obj", "dummy");

    obj.setDisplaySlot(DisplaySlot.SIDEBAR);
    obj.setDisplayName(String);

    Score sc = obj.getScore(Bukkit.getOnlinePlayers().size + Bukkit.getMaxPlayers());
    sc.setScore(int)

    p.setScoreboard(board);
    }

    Регаешь два твоих ивента на выход и вход, вызываешь этот статичный метод, указываешь ему аргумент (это игрок) и профит. Ты получил то, что хотел.
     
  9. Автор темы
    Forest_SD

    Forest_SD Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Forest_SD
    Спасибо огромное!)[DOUBLEPOST=1478537232,1478454856][/DOUBLEPOST]
    Я сделал немного по другому...но у меня возникли проблемы,вот код
    Код:
    public PlayerListener(){
            Objective obj = scoreboard.registerNewObjective("Test","Test");
            obj.setDisplaySlot(DisplaySlot.SIDEBAR);
            obj.setDisplayName("Test_Server");
    
            Score score = obj.getScore(ChatColor.GOLD+ "Сервер: "+ ChatColor.GREEN + "Test");
            score.setScore(5);
    
        }
    
    
        @EventHandler
        public void JoinPlayer(PlayerJoinEvent event){
            Player p = event.getPlayer();
            p.setScoreboard(scoreboard);
            Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
            Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + Bukkit.getOnlinePlayers().size()));
            score.setScore(1);
    
        }
    
        @EventHandler
        public void move(PlayerQuitEvent event){
            Player p = event.getPlayer();
            Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
            Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + (Bukkit.getOnlinePlayers().size() - 1)));
            score.setScore(1);
    
        }
    Проблема на картинке...мне нужно чтобы оно перечисляло(когда игрок зашел на сервер),а не создавало новый score, и отнимало (-1) когда игрок выходит[DOUBLEPOST=1478537303][/DOUBLEPOST]Я сделал немного по другому...но у меня возникли проблемы,вот код
    Код:
    public PlayerListener(){
            Objective obj = scoreboard.registerNewObjective("Test","Test");
            obj.setDisplaySlot(DisplaySlot.SIDEBAR);
            obj.setDisplayName("Test_Server");
    
            Score score = obj.getScore(ChatColor.GOLD+ "Сервер: "+ ChatColor.GREEN + "Test");
            score.setScore(5);
    
        }
    
    
        @EventHandler
        public void JoinPlayer(PlayerJoinEvent event){
            Player p = event.getPlayer();
            p.setScoreboard(scoreboard);
            Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
            Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + Bukkit.getOnlinePlayers().size()));
            score.setScore(1);
    
        }
    
        @EventHandler
        public void move(PlayerQuitEvent event){
            Player p = event.getPlayer();
            Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
            Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + (Bukkit.getOnlinePlayers().size() - 1)));
            score.setScore(1);
    
        }
    Проблема на картинке...мне нужно чтобы оно перечисляло(когда игрок зашел на сервер),а не создавало новый score, и отнимало (-1) когда игрок выходит
     

    Вложения:

    • test.png
      test.png
      Размер файла:
      13,3 КБ
      Просмотров:
      20
  10. Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Ты вообще сделал не так. Во-первых я бы порекомендовал делать скорборд в статическом методе, оттуда его вызывать из ивентов.

    Ясное дело, что дублируется, ведь ты, как я понял создаешь два разных объекта.
     
  11. Автор темы
    Forest_SD

    Forest_SD Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Forest_SD
    Я разобрался)тема закрыта
     
Статус темы:
Закрыта.

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