- Баллы
- 173
А ты "p" откуда брал ?Не\
Нет, ГетПлеер не работает, или я тупой... И вообще, почему Скоробороды стало так сложно создавать? Раньше все было на раз, два,три...
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
А ты "p" откуда брал ?Не\
Нет, ГетПлеер не работает, или я тупой... И вообще, почему Скоробороды стало так сложно создавать? Раньше все было на раз, два,три...
А ты "p" откуда брал ?
ISCOREAPI api = new ISCOREAPI();
api.createObjective(ChatColor.DARK_AQUA+"Teams", "Teams");
api.createTeam("Player");
api.setScore(Bukkit.getOfflinePlayer(ChatColor.RED + "RED"), 0);
api.setScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "BLUE"),
api.addPlayerToTeam("Player", p));
api.refreshPlayerScoreboard(p);
Ты вообще создал эту переменную?Как в коде написано так и писал...Код:ISCOREAPI api = new ISCOREAPI(); api.createObjective(ChatColor.DARK_AQUA+"Teams", "Teams"); api.createTeam("Player"); api.setScore(Bukkit.getOfflinePlayer(ChatColor.RED + "RED"), 0); api.setScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "BLUE"), api.addPlayerToTeam("Player", p)); api.refreshPlayerScoreboard(p);
"p" - это игрок , которому мы прикрутим Scoreboard. Например:Как в коде написано так и писал...Код:ISCOREAPI api = new ISCOREAPI(); api.createObjective(ChatColor.DARK_AQUA+"Teams", "Teams"); api.createTeam("Player"); api.setScore(Bukkit.getOfflinePlayer(ChatColor.RED + "RED"), 0); api.setScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "BLUE"), api.addPlayerToTeam("Player", p)); api.refreshPlayerScoreboard(p);
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event){
Player p = event.getPlayer();
ISCOREAPI api = new ISCOREAPI();
api.createObjective(ChatColor.DARK_AQUA+"Teams", "Teams");
api.createTeam("Player");
api.setScore(Bukkit.getOfflinePlayer(ChatColor.RED + "RED"), 0);
api.setScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "BLUE"),
api.addPlayerToTeam("Player", p));
api.refreshPlayerScoreboard(p);
//Достижение получено: "Кодер через мобилу"//
}
Подучись кодить (а лучше в скупе добавь, чтобы тем глупых меньше было и я оперативнее помогал
)Да уж, действительно очень ступил.... Извините, учусь только (ShaGTF, но это уже глупо. Ладно, но это же не английский форум, можно и понятьПодучись кодить (а лучше в скупе добавь, чтобы тем глупых меньше было и я оперативнее помогал
)
private void makeBoard() {
ISCOREAPI api = new ISCOREAPI();
api.createObjective(ChatColor.DARK_AQUA + "Очки", "Очки");
api.createTeam("RED");
api.createTeam("GREEN");
api.createTeam("BLUE");
api.createTeam("YELLOW");
api.setScore(Bukkit.getOfflinePlayer(ChatColor.RED + "Красный"), 0);
api.setScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "Синий"), 0);
/*
* api.addPlayerToTeam("Player", p); api.refreshPlayerScoreboard(p);
*/
}
@Override
public void onEnable() {
_log.info("[HtH] Hold The Hill enabled!");
Bukkit.getPluginManager().registerEvents(this, this);
kits = new KitUtils(this);
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
addScore();
}
}, 1);
makeBoard();
}
Гайд хороший, но есть одно но - кидает ошибку этот код:
Код:private void makeBoard() { ISCOREAPI api = new ISCOREAPI(); api.createObjective(ChatColor.DARK_AQUA + "Очки", "Очки"); api.createTeam("RED"); api.createTeam("GREEN"); api.createTeam("BLUE"); api.createTeam("YELLOW"); api.setScore(Bukkit.getOfflinePlayer(ChatColor.RED + "Красный"), 0); api.setScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "Синий"), 0); /* * api.addPlayerToTeam("Player", p); api.refreshPlayerScoreboard(p); */ } @Override public void onEnable() { _log.info("[HtH] Hold The Hill enabled!"); Bukkit.getPluginManager().registerEvents(this, this); kits = new KitUtils(this); Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { public void run() { addScore(); } }, 1); makeBoard(); }
Ошибка такая:
[/spiler]![]()
Да-да, ошибсяНе очень понятно, где 59 строка

Конкретно на создание жалуется - на эту строку:Дело в том, что метод makeBoard нужно прикреплять именно к игроку.
ISCOREAPI api = new ISCOREAPI();
this.board = Bukkit.getScoreboardManager().getNewScoreboard();
Странно. Вроде все понятно, создаем класс: ISCOREAPI. Регистрируем их в главном классе. Используем, но в метод onEnable не пихай егоКонкретно на создание жалуется - на эту строку:
Код:ISCOREAPI api = new ISCOREAPI();
На вот это:
Тобишь на создание объекта.Код:this.board = Bukkit.getScoreboardManager().getNewScoreboard();
Объясню саму затею - есть 4 команды, в ней игроки. Постояли в специальном регионе 1 тик - добавилось 0,005 очка. Скорбоард нужен именно для этой статистики.Странно. Вроде все понятно, создаем класс: ISCOREAPI. Регистрируем их в главном классе. Используем, но в метод onEnable не пихай его
Дак и пихай ISCOREAPI api = new ISCOREAPI() в метод, где игра начинается.Объясню саму затею - есть 4 команды, в ней игроки. Постояли в специальном регионе 1 тик - добавилось 0,005 очка. Скорбоард нужен именно для этой статистики.
Пробовал как в оигинале сделать - тоже самое.
Дык api нужен не локально, а глобально. Полный код класса:Дак и пихай ISCOREAPI api = new ISCOREAPI() в метод, где игра начинается.
package me.truelecter.hth;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.logging.Logger;
import me.truelecter.hth.kits.KitUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scoreboard.Team;
public class HoldTheHill extends JavaPlugin implements Listener {
private static final Logger _log = Logger.getLogger("Minecraft");
private KitUtils kits;
ISCOREAPI api;
private void addScore() {
}
private void makeBoard() {
api.createObjective(ChatColor.DARK_AQUA + "Очки", "Очки");
api.createTeam("RED");
api.createTeam("GREEN");
api.createTeam("BLUE");
api.createTeam("YELLOW");
api.setScore(Bukkit.getOfflinePlayer(ChatColor.RED + "Красный"), 0);
api.setScore(Bukkit.getOfflinePlayer(ChatColor.BLUE + "Синий"), 0);
/*
* api.addPlayerToTeam("Player", p); api.refreshPlayerScoreboard(p);
*/
}
@Override
public void onEnable() {
api = new ISCOREAPI();
_log.info("[HtH] Hold The Hill enabled!");
Bukkit.getPluginManager().registerEvents(this, this);
kits = new KitUtils(this);
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
addScore();
}
}, 1);
makeBoard();
}
public void sendPlayerToGame(Player player, HTHPlayer p) {
if ((p != null) && (p.getTeam() != HTHTeam.NONE)) {
p.setState(PlayerState.GAME);
player.getInventory().clear();
player.getInventory().setArmorContents(new ItemStack[4]);
player.setHealth(20);
player.setFoodLevel(20);
player.teleport(p.getTeam().getRandomSpawn());
kits.equiptKit(player);
}
}
private void joinToTeam(CommandSender sender, String arg) {
try {
HTHPlayer p = getPlayer(sender.getName());
HTHTeam t = HTHTeam.valueOf(arg.toUpperCase());
if (t != HTHTeam.NONE) {
this.attemptJoin(t, p);
}
throw new IllegalArgumentException();
} catch (IllegalArgumentException e) {
sender.sendMessage(ChatColor.RED + "Invalid Team specified!");
}
}
@Override
public boolean onCommand(CommandSender sender, Command command,
String label, String[] args) {
if (command.getName().equalsIgnoreCase("join")) {
if (args.length == 1) {
switch (args[0]) {
case "r": joinToTeam(sender, "RED");
case "g": joinToTeam(sender, "GREEN");
case "b": joinToTeam(sender, "BLUE");
case "y": joinToTeam(sender, "YELLOW");
default:
sender.sendMessage("Доступные команды :" + "\n"
+ ChatColor.RED + "Красные - r" + ChatColor.RESET
+ ", " + "\n" + ChatColor.BLUE + "синие - b"
+ ChatColor.RESET + ", " + "\n" + ChatColor.GOLD
+ "желтые - y" + ChatColor.RESET + ", " + "\n"
+ ChatColor.GREEN + "зеленые - g" + ChatColor.RESET
+ ".");
}
}
return true;
}
return false;
}
@EventHandler
public void onJoin(PlayerJoinEvent event) {
event.getPlayer().setHealth(20);
event.getPlayer().setFoodLevel(20);
event.getPlayer().setGameMode(GameMode.ADVENTURE);
}
@EventHandler
public void onQuit(PlayerQuitEvent event) {
event.setQuitMessage("");
getServer().broadcastMessage(
ChatColor.GRAY + "Игрок " + ChatColor.GOLD
+ event.getPlayer().getName() + " покинул сервер");
}
@EventHandler
public void onPlayerDeath(PlayerDeathEvent e) {
e.getEntity().setHealth(20);
e.getEntity().teleport(
getPlayer(e.getEntity().getDisplayName()).getTeam()
.getRandomSpawn());
}
public HTHPlayer getPlayer(String name) {
return null;
}
public void attemptJoin(HTHTeam team, HTHPlayer p) {
if (p != null) {
Player player = Bukkit.getPlayer(p.getName());
if (player != null) {
if (p.getTeam() == HTHTeam.NONE) {
int x = team.getNum();
Integer[] counts = teamCounts();
if (x + 1 - counts[0].intValue() > 2) {
player.sendMessage(ChatColor.RED + "Команда полна!");
return;
}
p.setTeam(team);
api.addPlayerToTeam(team.toString(), player);
team.setNum(team.getNum() + 1);
player.sendMessage(ChatColor.DARK_PURPLE
+ "Вы подключились к " + team.getColor()
+ team.toString());
sendPlayerToGame(player, p);
} else {
player.sendMessage(ChatColor.RED + "В команде же!");
}
}
}
}
public Integer[] teamCounts() {
ArrayList<Integer> x = new ArrayList();
for (Team t : api.getTeams()) {
x.add(Integer.valueOf(t.getSize()));
}
Integer[] y = new Integer[4];
y = (Integer[]) x.toArray(y);
Arrays.sort(y);
return y;
}
}
api = new ISCOREAPI();
ISCOREAPI api;
Тут еще беда. При любом использование скорбоарда летят ошибки. Видимо, сборка буккита с ошибкой.Дак и пихай ISCOREAPI api = new ISCOREAPI() в метод, где игра начинается.
Упс. Удали это, моя вина. (Из своего плагин вытащил)Player[] online = Bukkit.getServer().getOnlinePlayers();
for (int j = 0; j < online.length; j++) {
Player o = online[j];
if(plugin.getConfig().contains("players"+a+"."+o.getName())){
plugin.sapi.setScoreboard(o);
int sc = plugin.sapi.getScores(Bukkit.getOfflinePlayer(ChatColor.RED+ "Красный"));
plugin.sapi.setScore(Bukkit.getOfflinePlayer(ChatColor.RED+ "Красный"), sc + 1); //Присуждаем игроку 1 балл
("players"+a+"."+o.getName())){
что за а ?
plugin какой именно плугин ему нужен чтобы не ругался
Конструктор класса должен выглядеть как-то так:plugin какой именно плугин ему нужен чтобы не ругался
public MyClassHelper( MyPlugin plugin ){
//sapmle text
}
MyClassHelper mch = new MyClassHelper( this );
