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

Помогите Как достать ники всех онлайн игроков на сервере?

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

  1. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    Как?
     
  2. Хостинг MineCraft
    <
  3. Plasticable

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

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    Bukkit.getOnlinePlayers();
     
  4. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    Почему этот код не работает?
    Код:
                    String name = Bukkit.getOnlinePlayers();
                    double money = econ.getBalance(name);
    
    Ошибка Type mismatch: cannot convert from Player[] to String
     
  5. SuperCraft

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

    Баллы:
    88
    Ты присваиваешь строке массив.
    Player[] names = Bukkit.getOnlinePlayers(); не будет выдавать ошибку.
    Дальше циклом перебирай всех игроков
     
  6. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    The method getBalance(String) in the type Economy is not applicable for the arguments (Player[])
    Код:
                    Player[] names = Bukkit.getOnlinePlayers();
                    double moneyvar = econ.getBalance(names);
     
  7. SuperCraft

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

    Баллы:
    88
    Тебе нужно определить количество игроков на сервере и например сделать циклом
    For(int i=0,i<k,i++)
    Вместо k количество игроков онлайн, погугли как получить, после names в квадратный скобках индекс i, после него ставь точку и выбирай нужный параметр - что-то типо getName
     
  8. Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Код:
    for (Player p : Bukkit.getOnlinePlayers()) {
        double money = econ.getBalance(p.getName());
        p.sendMessage("[Ваш кэп] У вас "+money+"$");
        // В теле цикла делаете всё что хотите с игроками, хоть баньте
    }
    Ещё пример кода
    Код:
    String answer = "";
    for (Player p : Bukkit.getOnlinePlayers()) {
            answer += p.getName()+" ";
    }
    sender.sendMessage("Сейчас на сервере: "+answer);
     
    Последнее редактирование: 20 авг 2015
  9. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    Код:
                    int k = Bukkit.getOnlinePlayers().length;
                    Player[] names[i].getName() = Bukkit.getOnlinePlayers(); #ошибка в синтаксисе
                    For(int i=0,i<k,i++); #i cannot be resolved to a variable
                    double moneyvar = econ.getBalance(names);
    Можно пожалуйста подробней объяснять, я полный 0,0000001
     
  10. SuperCraft

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

    Баллы:
    88
    Гугли каждое слово, а лучше поищи плагин или сделай запрос на разработку, тут как минимум нужно быть 0,1. Во второй строке убери i, getName тоже перенеси в последнюю.
     
  11. Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Первой строкой вы задаёте в переменную k количество игроков на сервере.
    Второй строкой вы непонятно что делаете
    Тело цикла фор пустое, и надо вместо запятых - точки с запятыми.
    Ну и на последок.... да ну криво всё
    Если хотите начать программировать - вам нужно сначала понять логику. Например я не понимаю логику вашего плагина, также, как и Eclipse и Java. Лучше купите книжку по программированию на Java...
    ...или
     
  12. SuperCraft

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

    Баллы:
    88
    Я в Java не силен, но считаю, что для моддинга нужно просто несколько кусков готового кода и голова, чтобы его правильно подстраивать)
     
  13. Alex2772

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

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
  14. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    Первый пример не работает, я так миллион раз уже пытался сделать, в консоли выдает ошибку, а во втором откуда я возьму sender?
     
  15. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Вы допустили много ошибок в слове "говнокодинга"
     
  16. Plasticable

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

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    Какая ошибка?
    sender - отправитель команды. Если этот код должен выполняться не при команде, а при эвенте, надо sender заменить на event.getPlayer().
     
  17. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    Код:
            scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
                @Override
                public void run() {
                    int onlineCount = Bukkit.getOnlinePlayers().length;
                    online.setSuffix("§e" + onlineCount);
                   
                    for (Player player : Bukkit.getOnlinePlayers()){
                       double moneys = econ.getBalance(player.getName());
                       player.sendMessage("[Ваш кэп] У вас "+moneys+"$");
                        player.setScoreboard(sBoard);
                    }
                }
            }, 0L, 100L);
                    }
    
    Код:
    [WARNING] [MChestScoreBoard] Task #11 for MChestScoreBoard v1.0 generated an exception
    java.lang.NullPointerException
        at ru.MineChest.ScoreBoard.Main$1.run(Main.java:93)
        at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftTask.run(CraftTask.java:53)
        at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345)
        at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:513)
        at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)
        at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
        at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
        at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
    Тогда 2 вариант мне не подойдет так как мне нужно каждые 5 секунд обновлять ScoreBoard для всех игроков

    Возможно проблема еще в том, что я неправильно подключил экономику
    Код:
        private boolean setupEconomy() {
            if (getServer().getPluginManager().getPlugin("Vault") == null) {
                return false;
            }
            RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
            if (rsp == null) {
                return false;
            }
            econ = rsp.getProvider();
            return econ != null;
        }
     
    Последнее редактирование: 20 авг 2015
  18. leonmark061

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

    Баллы:
    76
    Улыбнуло. :good:
     
  19. Автор темы
    fswr33

    fswr33 Новичок Пользователь

    Баллы:
    21
    Что мне дают то я и пробую
     
  20. CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Перед тем как писать плагины, пройди хотя бы десяток уровней тут http://javarush.ru/
     
  21. LomNar

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

    Баллы:
    78
    Skype:
    radius981
    Имя в Minecraft:
    LomNar
    По мне так бред полнейший.
     

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