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

Идея Доработка плагина RedstoneClockDetector

Тема в разделе "Запросы на разработку плагинов", создана пользователем ARHIGOD, 10 авг 2013.

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

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

    Баллы:
    63
    Имя в Minecraft:
    ARHIGOD
    http://dev.bukkit.org/bukkit-plugins/redstone-clock-detector/
    RedstoneClockDetector это плагин, позволяющий найти зацикленные рэдстоун схемы и тем самым предотвратить лаги на сервере.
    /rcd <sec> сканирует <sec> секунд
    далее оно выводит список, в порядке убывания, сколько раз активировался блок, и его координаты.
    /rcd break <num> можно разрушить блок в списке под номером <num>
    тк. бывает что надо уехать и ты просто не можешь всегда следить за сервером, я бы хотел попросить доработать данный плагин. чтоб он с задержкой 5мин, запускал себя /rcd 5 и если активность у номера k >100, то прописывать команду /rcd break k
    Конечно, хотелось бы, чтоб все числа можно было изменять в конфиге.

    К сожалению создатель этого плагина уже давно его не поддерживает, а аналогов ему я не нашел.Вроде это не должно занять время, ведь уже есть готовый плагин, его надо просто чуть доработать. Буду очень благодарен тому, кто это сделает.

    Так же, если все норм получится, возможно некое поощрение от меня лично.
     
    Orbis и Dereku нравится это.
  2. RacerRU

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

    Баллы:
    88
    Я думаю мой кодер может взяться за написание плагина.
    Назовите сумму оплаты за до/разработку этого плагина.
     
  3. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Спасибо за тему. Давно искал что то вроде такого :)
    Потом для себя обновлю, если не заработает на 1.6.2.
     
  4. Автор темы
    ARHIGOD

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

    Баллы:
    63
    Имя в Minecraft:
    ARHIGOD
    Хоть кто нибудь, хоть как нибудь, сделайте для начала пожалуйста. Очень прошу.
     
  5. MadeManZ

    MadeManZ Активный участник

    Баллы:
    88
    Skype:
    tq9ns3
    AutoMessage
    Читай конфиг
     
  6. Автор темы
    ARHIGOD

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

    Баллы:
    63
    Имя в Minecraft:
    ARHIGOD
    если бы надо было просто прописать пару команд, то это одно дело, но ведь надо еще смотреть, сколько раз тот или иной рэдстоун сработал. Ведь в заголовке и написано, что надо доработать плагин, хотя вся доработка заключается в том, что с него надо считать всего один массив и его переменные сравнить с заданным числом и потом уже прописывать delete. А не тупо заданные действия, которые будут удалять не только схемы нагружающие сервер, но и обычные рычаги, кнопки и тп, которые за эти 5 сек кто-то пару раз использовал и они попали в топ списка под номером 1. Зачем мне было советовать читать какой-то конфиг плагина, которые тупо может что-то с заданным временем прописывать в консоль, я не пойму. Прежде чем писать, вникни в суть темы.
    Проверил работу команды break. Ее даже не обязательно использовать ко всем номерам, а достаточно только к первому. Т.е. достаточно просто после /rcd 5 выудить значение из первой строчки: активность редстоуна, и если активность больше 100, прописать /rcd break 1
    Я с языком java не знаком, но имхо это не должно быть очень трудно и занять много времени, надо просто в этом плагине откопать этот переменную или массив, отвечающий за активность. Да и еще от меня поощрение будет.
     
  7. Dan-det

    Dan-det Старожил Пользователь

    Баллы:
    103
    Попробуй Varscript, или этот, который от fromgate (фромгейт, ссори из-за того что я забыл его название)
     
    Оригинало_о нравится это.
  8. Автор темы
    ARHIGOD

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

    Баллы:
    63
    Имя в Minecraft:
    ARHIGOD
    Варскрипт позволяет изменять различные сценарии игры, если честно, я не совсем понимаю, как он может "влезть" в другой плагин (либо он этого не может, либо я не полностью понимаю его функционал). А если вы мне предлагаете на варскрипте написать поиск зацикленных схем и их удаление, то это для меня вообще как-то по харду =)
     
    Сникерсни нравится это.
  9. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Написал модуль на варскрипте: RedstoneLagDetector
    @RedstoneLagDetector:setDelay - установить время сканирования в тиках (по умолчанию 200 тиков)
    @RedstoneLagDetector:setLimit - установить лимит редстоуновых действий (30)
    @RedstoneLagDetector:setHandler - установить обработчик лагающих блоков (выводит координаты в чат)
    @RedstoneLagDetector:find - найти все лагающие блоки
    @RedstoneLagDetector:detect - найти блоки и пройтись по ним обработчиком

    Сначала кину топикстартеру для тестирования. Позже выложу для всех.
     
  10. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Вопросец по PNBT можно?)
     
  11. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    PowerNBT?
    Можно конечно.
    И лучше в личку, чтобы тему не засорять
    Выкладываю свое решение.
    Модуль: http://pastebin.com/5FqScZdK класть в папку с модулями (./plugins/VarScript/scripts/vs/modules/)
    Настройки по умолчанию:
    на проверку дается 200 тиков (10 секунд)
    лимит нагрузки редстоуна за это время - 30 (все, что больше - детектируется)
    Использование напрямую:
    /> @RedstoneLagDetector:find:{BREAKBLOCK} - сломать все найденные блоки
    /> @RedstoneLagDetector:find:{1 EXPLODE} - взорвать все найденные блоки
    /> @RedstoneLagDetector:find:{4 SETBLOCKID} - заменить на кобблстоун

    Создание задачи:
    /task findRedLags create - создать задачу с именем findRedLags
    /task findRedLags event add REPEAT 600 - событие каждые 600 тиков (30 секунд)
    /task findRedLags action add VS @RedstoneLagDetector:find:{BREAKBLOCK} - добавляем действие. Можно выбрать любое из вышеперечисленных, или написать что-нибудь своё
    /task findRedLags enable - включаем задачу
    /task findRedLags - просто посмотреть задачу.

    Если что, есть еще такие команды
    /task findRedLags disable - выключить задачу
    /task findRedLags remove- сделать бочку

    Значения параметров для модуля можно изменить так:
    /task findRedLags init add VS 60 @RedstoneLagDetector:setDelay
    /task findRedLags init add VS 100 @RedstoneLagDetector:setLimit
    И не забываем перезагрузить задачу (чтобы init сработал)
    /task findRedLags reload
    Вот и всё.
    По просьбе @zaznay обновление скрипта под VarScript 1.2+
    Код:
    delay = 200
    limit = 30
    
    blocksMap = [:]
    listen(BlockRedstoneEvent){
        def b = it.block
        if (b in blocksMap) blocksMap[b]++
        else blocksMap[b] = 1
    }
    interval(delay){
        def lags = blocksMap.findAll{k,v -> v>limit}.collect{it.key}
        lags.each {it.breakNaturally()}
        if (lags) println ("cleared $lags.size blocks")
        blocksMap.clear()
    }
    Создаем RedstoneLagDetector.groovy с этим кодом в директории autorun.

    Думаю, суть понятна. Каждые ${delay} тиков он удаляет блоки, которые за последние ${delay} тиков сделали больше ${limit} событий с редстоуном.

    Чтобы запустить его в первый раз вводим
    /ws RedstoneLagDetector reload

    Чтобы он запускался автоматически, вводим
    /ws autorun add RedstoneLagDetector

    Можно было создать репу на гитхабе, но для 15-строчного скрипта это глупо.
     
    ARHIGOD и Dereku нравится это.
  12. xDark

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

    Баллы:
    96
    ... 2013, или это баг...??? (Лайки? :eek:)
     
  13. DPOH-VAR

    DPOH-VAR Старожил Пользователь

    Баллы:
    153
    Skype:
    dpohvar
    Объединены три сообщения: 12 авг 2013, 14 авг 2013, 24 авг 2016. Лайки сохраняются при объединении
     

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