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

Помогите Нужна помощь, при создании статистики.

Тема в разделе "Разработка плагинов для новичков", создана пользователем Slavchik2001, 8 май 2017.

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

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Я неопытный, начинающий "кодер". После своего первого плагина-Joiner'a, я решил заняться чем-нибудь поинтереснее.
    Вот мой код:
    Код:
    	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    	    String name = args[0];
    	    Player p = Bukkit.getPlayer(name);
    	    if(!sender.hasPermission("futurestats.use")) {
    	    	sender.sendMessage("У вас недостаточно прав");
    	    	return true;
    	    }
    	    if(args.length == 0) {
    	    	return false;
    	    }
    	    if(Bukkit.getOfflinePlayer(name).hasPlayedBefore() == false) {
    	    	sender.sendMessage("Такого игрока нет в базе");
    	    	return true;
    	    }
    	    if(p.isOnline() == true) {
    	    	String status = ChatColor.GREEN + "online";
    		    String death = String.valueOf(p.getStatistic(Statistic.DEATHS));
    		    String kills = String.valueOf(p.getStatistic(Statistic.PLAYER_KILLS));
    		    int percent = Integer.valueOf(kills) * 100 / (Integer.valueOf(kills) + Integer.valueOf(death));
    		    String spercent = String.valueOf(percent);
    		    String format = plugin.getConfig().getString("stat-format");
    		    format = format.replaceAll("%kills", kills);
    		    format = format.replaceAll("%deaths", death);
    		    format = format.replaceAll("%percent", spercent);
    		    format = format.replaceAll("--", "\n");
    		    format = format.replaceAll("%status", status);
    		    sender.sendMessage(format);
    		    return true;
    		    }
    	    if(Bukkit.getOfflinePlayer(name).isOnline() == false) {
    	    	String status = ChatColor.RED + "offline";
    			    String death = String.valueOf(p.getStatistic(Statistic.DEATHS));
    			    String kills = String.valueOf(p.getStatistic(Statistic.PLAYER_KILLS));
    			    int percent = Integer.valueOf(kills) * 100 / (Integer.valueOf(kills) + Integer.valueOf(death));
    			    String spercent = String.valueOf(percent);
    			    String format = plugin.getConfig().getString("stat-format");
    			    format = format.replaceAll("%kills", kills);
    			    format = format.replaceAll("%deaths", death);
    			    format = format.replaceAll("%percent", spercent);
    			    format = format.replaceAll("--", "\n");
    			    format = format.replaceAll("%status", status);
    			    sender.sendMessage(format);
    			    return true;
    			    }
    		return true;
    	}
    
    Все это воспроизводится командой /stat [player].
    Я хочу, чтобы можно было просмотреть статистику игрока оффлайн, но не могу понять, как правильно это оформить. Не судите строго то, что я написал, я экспериментировал.
     
  2. Хостинг MineCraft
    <
  3. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    Bukkit.getOfflinePlayer
     
  4. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    А теперь носом тыкнуть меня можно?
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Твой сервак там не фризит от такой команды c Bukkit.getOfflinePlayer(name)? Или игроков еще слишком мало? :D
     
  6. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Я ж только учусь. Я один на сервере :)[DOUBLEPOST=1494269720,1494269626][/DOUBLEPOST]Можно как-то поконкретнее мне подсказать? Я вас недопонимаю просто...
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Поймешь, когда у тебя в папке игроков будет пару десятка тысяч файлов.
     
  8. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Сейчас, подумав, я это понял. Но а как мне решить мой вопрос то?
     
  9. TheZefirrkka

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

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    if Bukkit.getPlayerExact(args[0]) == null => offline
     
  10. iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Держите, месье. Все, о чем вы спрашивали, немного другого - убрал.

    Код:
    if(args.length != 1) {
        sender.sendMessage(">/" + cmd.getName() + " [Игрок]");
        return true;
    }
    
    Player p = Bukkit.getPlayer(args[0]);
    
    if(!sender.hasPermission("futurestats.use")) {
        sender.sendMessage("У вас недостаточно прав");
        return true;
    }
    
    if(!p.hasPlayedBefore()) {
        sender.sendMessage("Такого игрока нет в базе");
        return true;
    }
    
    String status = p.isOnline() ? "§2online" : "§coffline";
    String death = String.valueOf(p.getStatistic(Statistic.DEATHS));
    String kills = String.valueOf(p.getStatistic(Statistic.PLAYER_KILLS));
    int percent = Integer.valueOf(kills) * 100 / (Integer.valueOf(kills) + Integer.valueOf(death));
    String spercent = String.valueOf(percent);
    String format = plugin.getConfig().getString("stat-format");
    format = format.replaceAll("%kills", kills);
    format = format.replaceAll("%deaths", death);
    format = format.replaceAll("%percent", spercent);
    format = format.replaceAll("--", "\n");
    format = format.replaceAll("%status", status);
    sender.sendMessage(format);
    return true;
    Что такое "format" вообще хз. Убрать его как раз и не смог)
     
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    :good:
     
  12. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Спасибо большое вам всем. Не перевелись еще добрые, отзывчивые кодеры на рубакките. :)[DOUBLEPOST=1494313985,1494313809][/DOUBLEPOST]
    format - переменная, которая редактируется в конфиге.[DOUBLEPOST=1494314196][/DOUBLEPOST]Кстати, этот метод не работает. Стату оффлайн игрока просмотреть все равно нельзя. Выдает ошибку "Am internal..."
     
  13. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    да ладно?
    Player же нулл.
    Код:
    String status = p.isOnline() ? "§2online" : "§coffline";
    String death = String.valueOf(p.getStatistic(Statistic.DEATHS));
    String kills = String.valueOf(p.getStatistic(Statistic.PLAYER_KILLS));
     
  14. Автор темы
    Slavchik2001

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

    Баллы:
    66
    Имя в Minecraft:
    Slavok2001
    Ладно, это мне уже не нужно. Я решил, чтобы вся стата сохранялась в файле. Но теперь возник другой вопрос: какой евент или условие использовать, чтобы при убийстве игрока прибавлялось одно убийство в определенную переменную?
     
Статус темы:
Закрыта.

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