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

Статус
Закрыто для дальнейших ответов.

Slavchik2001

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Slavok2001
Я неопытный, начинающий "кодер". После своего первого плагина-Joiner'a, я решил заняться чем-нибудь поинтереснее.
Вот мой код:
Java:
	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].
Я хочу, чтобы можно было просмотреть статистику игрока оффлайн, но не могу понять, как правильно это оформить. Не судите строго то, что я написал, я экспериментировал.
 
Я неопытный, начинающий "кодер". После своего первого плагина-Joiner'a, я решил заняться чем-нибудь поинтереснее.
Вот мой код:
Java:
    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].
Я хочу, чтобы можно было просмотреть статистику игрока оффлайн, но не могу понять, как правильно это оформить. Не судите строго то, что я написал, я экспериментировал.
Bukkit.getOfflinePlayer
 
Твой сервак там не фризит от такой команды c Bukkit.getOfflinePlayer(name)? Или игроков еще слишком мало? :D
 
Твой сервак там не фризит от такой команды? Или игроков еще слишком мало? :D
Я ж только учусь. Я один на сервере :-)
Можно как-то поконкретнее мне подсказать? Я вас недопонимаю просто...
 
Держите, месье. Все, о чем вы спрашивали, немного другого - убрал.

Java:
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" вообще хз. Убрать его как раз и не смог)
 
Спасибо большое вам всем. Не перевелись еще добрые, отзывчивые кодеры на рубакките. :-)
Держите, месье. Все, о чем вы спрашивали, немного другого - убрал.

Java:
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" вообще хз. Убрать его как раз и не смог)
format - переменная, которая редактируется в конфиге.
Кстати, этот метод не работает. Стату оффлайн игрока просмотреть все равно нельзя. Выдает ошибку "Am internal..."
 
Спасибо большое вам всем. Не перевелись еще добрые, отзывчивые кодеры на рубакките. :)

format - переменная, которая редактируется в конфиге.
Кстати, этот метод не работает. Стату оффлайн игрока просмотреть все равно нельзя. Выдает ошибку "Am internal..."
да ладно?
Player же нулл.
Java:
String status = p.isOnline() ? "§2online" : "§coffline";
String death = String.valueOf(p.getStatistic(Statistic.DEATHS));
String kills = String.valueOf(p.getStatistic(Statistic.PLAYER_KILLS));
 
Ладно, это мне уже не нужно. Я решил, чтобы вся стата сохранялась в файле. Но теперь возник другой вопрос: какой евент или условие использовать, чтобы при убийстве игрока прибавлялось одно убийство в определенную переменную?
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх