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

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

Discussion in 'Разработка плагинов для новичков' started by Slavchik2001, May 8, 2017.

Thread Status:
Not open for further replies.
  1. Автор темы
    Slavchik2001

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

    Trophy Points:
    66
    Имя в Minecraft:
    Slavok2001
    Я неопытный, начинающий "кодер". После своего первого плагина-Joiner'a, я решил заняться чем-нибудь поинтереснее.
    Вот мой код:
    Code:
    	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 Активный участник Пользователь

    Trophy Points:
    96
    Имя в Minecraft:
    DonDays
    Bukkit.getOfflinePlayer
     
  4. Автор темы
    Slavchik2001

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Code:
    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 Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    :good:
     
  12. Автор темы
    Slavchik2001

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

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

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

    Trophy Points:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    да ладно?
    Player же нулл.
    Code:
    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 Активный участник Пользователь

    Trophy Points:
    66
    Имя в Minecraft:
    Slavok2001
    Ладно, это мне уже не нужно. Я решил, чтобы вся стата сохранялась в файле. Но теперь возник другой вопрос: какой евент или условие использовать, чтобы при убийстве игрока прибавлялось одно убийство в определенную переменную?
     
Thread Status:
Not open for further replies.

Share This Page