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

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

Discussion in 'Разработка плагинов для новичков' started by fswr33, Aug 19, 2015.

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

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

    Trophy Points:
    21
    Как?
     
  2. Хостинг MineCraft
    <
  3. Plasticable

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

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

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

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

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

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

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

    Trophy Points:
    21
    The method getBalance(String) in the type Economy is not applicable for the arguments (Player[])
    Code:
                    Player[] names = Bukkit.getOnlinePlayers();
                    double moneyvar = econ.getBalance(names);
     
  7. SuperCraft

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

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

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

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

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

    Trophy Points:
    21
    Code:
                    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 Активный участник Пользователь

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

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

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

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

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

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

    Trophy Points:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
  14. Автор темы
    fswr33

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

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

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

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

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

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

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

    Trophy Points:
    21
    Code:
            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);
                    }
    
    Code:
    [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 для всех игроков

    Возможно проблема еще в том, что я неправильно подключил экономику
    Code:
        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;
        }
     
    Last edited: Aug 20, 2015
  18. leonmark061

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

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

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

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

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

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

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

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

Share This Page