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

Помогите Авто-Размут

Тема в разделе "Разработка плагинов для новичков", создана пользователем Slavkaa, 21 июл 2017.

Статус темы:
Закрыта.
  1. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Добрый вечер, форумчане. Писал плагин на баны/муты. Авто-разбан я сделать смог, тупо, конечно, но смог. А вот как сделать, чтобы автоматически снимало мут игроку, когда истекает его срок? Какое событие использовать или куда вообще воткнуть код размута?
     
  2. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    System.currentTimeMillis() + бд sql, с банами так же
     
  3. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Не, ты не совсем меня понял. Мне нужен механизм размута. Сам метод у меня есть, нужно только, чтобы сервер всегда проверял в муте игрок или уже нет.
     
  4. alexandrage

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

    Баллы:
    173
    time-last<timeban
     
  5. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    при муте заносишь в бд дату мута игрока (System.currentTimeMillis()) и при нужде сравниваешь (System.currentTimeMillis() - время бана) >= срок бана
     
  6. TheZefirrkka

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

    Баллы:
    76
    Просто ивенет на чат слушай и чекай, если время прошло, то при написании сообщения снимай мут.
    Разницы нет, что снимется мут сразу же, или при сообщении в чате.
     
  7. MaxCode

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

    Баллы:
    66
    Имя в Minecraft:
    planet0111
    Сделай так:
    AsyncPlayerChatEvent: Проверяй и отключай мут, если нужно.
    onDisable или onEnable: Проверяй всю базу и снимай муты, если нужно.
    Вот и все.
     
  8. DonDays

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

    Баллы:
    96
    Имя в Minecraft:
    DonDays
    thread
     
  9. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Ну у меня нет возможности использовать базу. Короче, как я понял, надо каждую секунду в onEnable() проверять муты? Если так, то не нагрузит ли это сервер?
     
  10. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Просто хотелось бы, чтобы при авто-размуте игроку отсылалось сообщение, что мут прошел.
     
  11. MaxCode

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

    Баллы:
    66
    Имя в Minecraft:
    planet0111
    Я не имел ввиду mysql или sql. Базу матов, которые ты берешь из какого-то хранилища, вот и все.

    Да нафига оно тебе каждую секунду. Один раз при выключении или при включении сервера проверь и норм.
    А отсылать игроку смс не нужно, ему и без него нормально будет.
     
  12. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Просто я хотел реализовать что-то подобное размуту, как в Essentials'e
     
  13. MaxCode

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

    Баллы:
    66
    Имя в Minecraft:
    planet0111
    Да фигня это, но если так уж хочешь, то запускай шедулер(Желательно не в основном потоке. Т.е асинхронный) и в нём проверяй всю базу мутов и если что снимай мут и отсылай игроку смс(Если он онлайн), но уже через метод, который отправит смс в основном потоке.
     
  14. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Повторяющийся шедулер? Но тогда он должен повторяться каждую секунду. Вот отсюда и вопрос: не нагрузит ли он сервер?
     
  15. MaxCode

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

    Баллы:
    66
    Имя в Minecraft:
    planet0111
    Нагрузит конечно, но если делать все через отдельный поток, то все будет окей.
    На самом деле даже если ты будешь проверять через основной поток, то сервер не будет умирать(Конечно, если база не за 100к).
     
  16. MaxCode

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

    Баллы:
    66
    Имя в Minecraft:
    planet0111
    Но вообще конечно все от оптимизации кода зависит, но сомневаюсь, что ты там что-то ужасное сделаешь.
     
  17. MaxCode

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

    Баллы:
    66
    Имя в Minecraft:
    planet0111
    А вообще оно того не стоит конечно, лучше уж сделать одноразовую проверку в onEnable или onDisable, но тоже не через основной поток.
     
  18. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Такая фишка, что у меня мут для донатеров, т.е. вечного там не будет, да и на длительный срок тоже. Я все храню в хеше, т.к. эти данные не особы важны. Этот механизм, значит, вряд ли нагрузит сервер?
     
  19. MaxCode

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

    Баллы:
    66
    Имя в Minecraft:
    planet0111
    Вряд-ли.
     
  20. Автор темы
    Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Ну все. Всем спасибо. Тему закрываю.
     
Статус темы:
Закрыта.

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