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

Плагин [INFO/MISC] PlayerTrafficSource v1.2 - Откуда игроки узнают о Вашем сервере? [1.8 - 1.12.2]

Тема в разделе "Неподтвержденные плагины", создана пользователем MrMagaChannel, 21 янв 2018.

  1. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    PlayerTrafficSource
    upload_2018-1-22_17-40-49.png
    Версия плагина: 1.2
    Для серверов: [1.8 - 1.12.2]
    Работает на Spigot и PaperSpigot. CraftBukkit НЕ ПОДДЕРЖИВАЕТСЯ!


    Описание:

    Рад представить вам свой первый плагин.
    Этот плагин позволит вам выяснить источник трафика игроков. При входе игрокам будет предложено ответить, откуда они узнали о сервере. Вы можете настраивать варианты ответа, как угодно, смотреть общие результаты опроса, а также отдельно для игрока.

    Скриншоты:
    Опрос при входе
    upload_2018-1-22_15-46-29.png


    /pts

    upload_2018-1-22_15-46-17.png

    /pts results
    upload_2018-1-21_19-45-7.png

    /pts list monitoring 2
    upload_2018-1-22_15-47-46.png

    Команды:
    /playertrafficsource - основная команда плагина (короткие варианты: /playerts, /pts). Выводит помощь по тем командам плагина, на которые у игрока есть права.

    • /pts results - посмотреть общие результаты опроса.
    • /pts list <вариант> [страница] - посмотреть список игроков, которые выбрали этот вариант.
    • /pts seen <игрок> - посмотреть откуда указанный игрок узнал о сервере.
    • /pts remove <игрок> - очистить ответ игрока.
    • /pts reload - обновить конфигурацию и сообщения плагина.

    Также есть 2 системные команды.
    • /pts answer <вариант> - указать, откуда узнал о сервере. (Игроки будут тыкать на кликабельный текст в чате, вводить команду им не придётся).
    • /pts sendquestion <игрок> - если игрок еще не ответил, откуда узнал о сервере, то ему предложат ответить. (Плагин автоматически отправляет опрос при входе игрока на сервер, если он еще не ответил, поэтому эта команда пригодится только тогда, когда вы отключите в конфиге автоматическую отправку опроса и захотите отправить, например, после входа в аккаунт AuthMe через AuthMe/commands.yml. Подробнее об этом читайте в комментариях конфига).

    Perimssions:
    • playertrafficsource.results - право на команду /pts results
    • playertrafficsource.list - право на команду /pts list
    • playertrafficsource.seen - право на команду /pts seen
    • playertrafficsource.remove - право на команду /pts remove
    • playertrafficsource.reload - право на команду /pts reload
    • playertrafficsource.admin - права сразу на все команды плагина.

    Конфиг и сообщения:
    Код:
    # Если эта опция включена, то через 5 секунд после входа игрокам автоматически
    # будет отправлен опрос, чтобы они отметили, откуда пришли.
    # После того, как игрок ответит, опрос ему больше не будет отправляться.
    # Если Вы хотите, чтобы опрос отправлялся игроку только после входа
    # в аккаунт (AuthMe), то отключите эту опцию и в файле /plugins/Authme/commands.yml
    # В событые onJoin запускайте команду /pts sendquestion %p от коноли.
    # Это должно выглядет так:
    #onLogin:
    #    question:
    #        command: 'pts sendquestion %p'
    #        executor: 'CONSOLE'
    EnableAutoQuestionSending: true
    
    # Здесь можно указать количество выводимых игроков в одной странице
    # для команды /pts list <вариант> <страница>
    PlayerOnOnePage: 50
    
    # Здесь нужно указывать варианты ответов, чтобы игроки отметили, откуда пришли.
    # Изначально только 5 вариантов: monitoring, youtube, poiskovik, friends, other
    # Это ключи, они будут отображаться вам при просмотре результатов.
    # Игроки эти слова не будут видеть, ставьте их такими, чтобы было понятно Вам.
    # Обязательно ставьте ключи в нижнем регистре! monitoring - можно, Monitoring - нельзя
    # Игроки же при выборе будут видеть значения, которые вы впишете для каждого варианта.
    # Просто смотрите пример ниже и всё станет понятно.
    AnswerVariants:
      monitoring: 'Нашел в мониторинге'
      youtube: 'Нашел на YouTube'
      poiskovik: 'Нашел в поисковике (Google/Yandex и т. д.)'
      friends: 'Узнал от друзей'
      other: 'Другое'
    Код:
    Messages:
      PlayerOnly: '&cЭта команда только для игроков!'
      Reload: '&f[&6PlayerTrafficSource&f] &aперезагружен!'
      NoPermission: '&cЭта команда недоступна для вас!'
      NoResults: '&cНикто еще не ответил, откуда узнал о сервере!'
      NoVariantResults: '&cНикто еще не %multiargs%'
      PlayerHasNotAnsweredYet: '&cИгрок &e%player% &cеще не ответил, откуда пришел!'
      SuccessfulRemoveAnswer: '&aОтвет игрока &e%player% &aуспешно очищен!'
      IncorrectVariant: '&cТакого варианта ответа не существует!'
      UnknownPage: '&cТакой страницы не существует!'
      IncorrectPageFormat: '&cСтраница должна быть целым числом, а вы ввели &f%arg%'
      CurrentPage: '&eСтраница &c%page% &eиз &c%maxpage%&e.'
      NextPage: '&eДля просмотра следующей страницы введите &b/pts list %type% %next%'
      SuccessfulAnswer: '&aСпасибо за ваш ответ! Вы помогли нам!'
      AlreadyAnswered: '&cВы уже ответили!'
      Results: '&eРезультаты опроса'
      Total: '&bВсего'
      Answered: 'ответил'
     
      # Эти строки будут отправлены игроку до вариантов ответа.
      MessagesBeforeAnswerVariants:
        - '&fПривет, расскажи, откуда ты узнал о сервере)!'
        - '&fПросто нажми &c&lT &fи кликни мышкой на соответствующий вариант!'
     
      # Это помощь при введении команды /pts без аргументов или с несуществующими аргументами.
      # Выводится будут только те команды, к которым у вводившего есть права.
      CommandsHelp:
        reload: '&b/pts reload &e- обновить конфигурацию плагина'
        results: '&b/pts results &e- посмотреть результаты опроса'
        list: '&b/pts list <вариант> [страница] &e- игроки, узнавшие о сервере из этого варианта'
        seen: '&b/pts seen <игрок> &e- посмотреть, откуда игрок узнал о сервере'
        remove: '&b/pts remove <игрок> &e- очистить ответ игрока'

    Лог изменений:
    1.0 - релиз плагина
    1.1 - оптимизация кода, исправление мелких багов, новые функции
    1.2 - улучшение подсказок команд + TabComplete для аргументов и /pts list

    TODO:
    Ваши идеи.

    Скачать последнюю версию:
    https://yadi.sk/d/W5HjBKbG3ReTFi Или
    https://goo.gl/4NtysF

    Исходники на GitHub
     
    Последнее редактирование: 23 янв 2018
  2. Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Qamulex
    Код почти красивый, ничего ужасного и опасного не увидел(более углублённо не изучал).
    [​IMG]
    Замени этот импорт на "import org.bukkit.ChatColor;". Хз зачем.
     
  3. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Все равно для TextComponent нужен Spigot, на CraftBukkit не будет работать.
     
  4. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Добавил исходники на GitHub
    P.S. Так как это мой первый плагин, возможно, и скорее всего, я где-то наговнокодил. Если да, то расскажите, где можно было бы оптимизировать код.
     
    Последнее редактирование: 21 янв 2018
  5. Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Qamulex
    Первый плагин ты сделал явно лучше, если сравнивать его с другими такими первыми плагинами(твой первый плагин не превзошёл мой первый))00)0).
     
  6. TheZefirrkka

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

    Баллы:
    76
    А я ещё не выкладывал ни одного плагина :D
     
  7. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ты прав, говно процедурное
     
  8. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Сегодня некоторые места буду оптимизировать и добавлю новую фичу. Даже в текущем виде плагин нисколько не нагружает, в таймингах меньше 0.01%.
     
  9. Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Qamulex
    Как понять слово "процедурное"?
     
  10. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ну ява это оопшный язык, а у него все в статиках, статики - процедурки
     
  11. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Статики только в классе Methods.class. Там методы для прямого и удобного обращения через Methods.methodname
    Естественно, что мне не нужно для таких методов через экземпляры запускать, потому там методы статичные.
     
    Последнее редактирование: 22 янв 2018
  12. Типа админ:D

    Типа админ:D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Qamulex
    Что плохого в статиках?
     
  13. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    В данном случае, как раз было бы глупо не делать подобные методы статичными. Вероятно @hyndorik просто подробно не вникал в код.
     
  14. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    Плагин обновлен до v1.1 удалите файлы messages.yml и config.yml, они пересоздадутся!
    • Оптимизация кода
    • Новые функции:
    /pts remove <игрок> - очистить ответ игрока.
    /pts list <вариант> [страница] - показывает список игроков, которые ответили этот вариант. Страницу можно не писать, тогда откроется первая страница. Всего на одной странице 50 игроков (можно регулировать в конфиге). Выводимый список отсортирован по алфавитному порядку.
    Например, /pts list monitoring - покажет список игроков, которые пришли на сервер из мониторинга.
    Также обновлены и дополнены скриншоты в шапке.
     
    Последнее редактирование: 22 янв 2018
  15. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ну и хрень несешь, я тебе сказал как улучшить код, а ты свое говно несешь
     
  16. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Ну для тебя если ООП ничего не значит, то окей пиши статики. А то там довны какие то солид принципы придумали
     
  17. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    У плагина специальный, отдельный класс для статических методов. Ты сейчас подмениваешь понятия, статические методы именно нужны для подобных методов. В остальных местах нет статических методов, по тем же самым основам ООП.
    P. S. Во многих известных плагинах подобные статические методы также собирают в отдельный класс.
     
  18. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Та я понял что у тебя диагноз. Я ща открыл твой этот класс, лютая хрень, хотя бы название класса лютейшая хрень)
     
  19. Автор темы
    MrMagaChannel

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

    Баллы:
    76
    Имя в Minecraft:
    mrmagachannel
    На самом деле это вопрос вкуса. Мне лично удобней в таком виде статические методы хранить и быстро использовать.
    Спасибо за оценку.
     
  20. hyndorik

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

    Баллы:
    98
    Имя в Minecraft:
    hyndo
    Использовать статик для быстрого доступа. Ну эт конечно дикий фейспалм) Хрень еще какую то про вопрос вкуса сморозил.
    Итог: Какая-та дикая процедурная хрень
     

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