1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Создание персонального ScoreBoard'a

Тема в разделе "Разработка плагинов для новичков", создана пользователем Minecraftov LoL, 9 фев 2014.

  1. ptnk

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

    Баллы:
    173
    Конечно выдаёт, я тебе показал псевдокод, а то, что ты написал - бред безумца.
     
  2. Автор темы
    Minecraftov LoL

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

    Баллы:
    61
    А с помощью HashMap вроде можно както? нет?
     
  3. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Зато после полугода плагинотворения все эти термины возможно не становятся известны, но начинаешь использовать то, что под ними подразумевается. Вот я к примеру, не знал, что Вы подразумеваете под паттерном. Пришлось погуглить. Оказывается использую. Сам удивился.
    А так читал бы книжки два года и не до сих пор не знал бы с какой стороны подступится к плагину.
     
  4. ptnk

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

    Баллы:
    173
    Прочитав бы несколько параллельно нужных книг - вы бы за два года научились бы гораздо большему. Это своеобразный множитель в изучении, с книгами текущий результат был бы гораздо раньше.
     
  5. Bars

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

    Баллы:
    173
    Будет интернет. напишу как у меня сделаны персональные Очкодоски. А вообще да. с использованием HashMap.
    Сам учился на декомпиле и открытых доступных исходниках. Не прочтя ни одной книжки...
    Только у меня есть один таракан. который меня ограничивает в написании плагинов: я боюсь писануть что-то не так опасаясь. что сделаю что-то. что вызовет нагрузку.

    Я даже хочу после написания плагина MineZ кому-нибудь показать пару классов. А то я не совсем разбираюсь с new и отличием между простым вызовом ф-ции/переменной и статичным (ИмяКласса.ф-ция()) и боюсь. что какая-то переменная/хешмапка пропадёт. если оставлю её в другом классе (храню их в главном классе).
    Потому что может быть так. что я вызову через new и этот вызванный класс будет висеть в памяти. А если и не будет висеть. то тогда переменные в нём навсегда пропадут.
     
  6. smilesdc

    smilesdc Няша Модератор

    Баллы:
    153
    Имя в Minecraft:
    smilesdc
    Хехе)
    Мне попалось однажды одно твое творение ptnk, я долго думал.. "Какого хрена он вообще делает?!", "А это мать вашу что такое?!" и т.п.)) Так что, у каждого свои проблемы...)
    Тоже самое могу и про свой код сказать, тоже много глупостей.
    Но это не значит, что не надо учится до того, как сел за код.
     
    ql_Nik_lp нравится это.
  7. ptnk

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

    Баллы:
    173
    Не переживай, любой человек с малыми знаниями всегда будет чего-то боятся и будет домысливать,
    Код мой вариативный, за сотню плагинов он притерпел множество изменений.
    Это всегда так. когда мало работаешь с чужим кодом - по началу тупишь, а потом ко всему привыкаешь и не считаешь всех и каждого говнокодером. xD
     
    Последнее редактирование: 10 фев 2014
    ql_Nik_lp нравится это.
  8. Автор темы
    Minecraftov LoL

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

    Баллы:
    61
    хех, ребят, я спрашивал как мне решить проблему, а не философию читать) давайте создадим отдельную тему и там поговорим, дабы не засорять эту
     
  9. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Решение твоей проблемы кроется в изучении как java, так и BukkitAPI. Если ты пришёл, чтобы здесь всё сделали за тебя, то жди.
     
    ПриветОтЛайки нравится это.
  10. Bars

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

    Баллы:
    173
    В хешмапке храни <Player, Objective>
     
  11. ptnk

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

    Баллы:
    173
    А за чем? Что за глупое решение? Ничего, что из любого игрока можно получить его SB и работать с ним?
    Я-то возможно и понял, что ты хотел сказать, но человек просит. чтобы ему предоставили код, разжевали бы каждую строчку, а лучше, если бы ты ему весь плагин написал.
     
    Den_Abr нравится это.
  12. Bars

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

    Баллы:
    173
    Чтобы у каждого игрока была персональьная очкодоска, ему нужно создать и присвоить персональный Objective.
     
  13. BeYkeR

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

    Баллы:
    173
    По-моему Scoreboard, не ?
     
  14. Bars

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

    Баллы:
    173
    То есть? Очкодоска или Objective?
     
  15. ptnk

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

    Баллы:
    173
    И что? За чем это хранить в Контейнере, когда я и так из игрока смогу это вытащить?

    Это и есть признаки кустарного самообразования, когда многое делается не правильно.
     
    Последнее редактирование: 11 фев 2014
    Den_Abr нравится это.
  16. Bars

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

    Баллы:
    173
    Хорошо. Как его вытащить?
     
  17. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Вашу машу, разве так тяжело помочь человеку?
    Человек, держи:
    Код:
            
            ScoreboardManager manager = Bukkit.getScoreboardManager();
            Scoreboard scoreboard;
            Objective objective;
            Score score;
    
            for (Player cPlayer : Bukkit.getOnlinePlayers()) {
                scoreboard = manager.getNewScoreboard();
                objective = scoreboard.registerNewObjective("test", "dummy");
                objective.setDisplaySlot(DisplaySlot.SIDEBAR);
                score = objective.getScore(Bukkit.getOfflinePlayer(ChatColor.GREEN + "Rating:")); //Получаем фейкового плеера для своего имени для Score
                score.setScore(1337);
                cPlayer.setScoreboard(scoreboard);
            }
    Я знаю что ему надо думать своими мозгами, но если не выходит...
    У меня тоже сначала были трудности, и огромное спасибо людям которые мне в свое время помогли! (Особенно @Jampire , @fromgate и @D_ART :3)
     
  18. ptnk

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

    Баллы:
    173
    Player.getScoreboard()

    Лучшие знания - это те, которые ты добыл сам. Смысл помогать человеку, который не знает основ и вместо их изучения сразу лезет к более сложным вещам? Вначале нужно научиться складывать числа между собой, научиться считать, а уже потом учиться умножению и делению.
     
  19. Bars

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

    Баллы:
    173
    По-моему, эта функция возвращает Scoreboard, предустановленный посредством Player.setScoreboard(), например, при его входе.
     
    ql_Nik_lp нравится это.
  20. ptnk

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

    Баллы:
    173
    Ты спрашивал, как получить очкодоску - я тебе указал. Без всяких лишний хешмапов.
    Точно так же я не вижу проблем с "персональным" objective - обычно его делают шаблонным, ник игрока + какой-то суффикс, и его можно вытащить с помощью getObjectives().
     
    МиднайтЖелаетВамДобра и Bars нравится это.

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