Страница 1 из 1

macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Сб авг 15, 2009 2:19 pm
manticora
Приветствую.
Плагин macroinclude предназначен для включения и выключения директив !include в файле macros.txt. К идее создать такой плагин я пришел после того, как макрос типа Ведро стал отжирать 99% ресурсов процессора. Если отключить в файле macros.txt неиспользуемые директивы, то нагрузка на процессор заметно снижается, так как уменьшается количество автомакросов, условия срабатывания которых макроплагин постоянно проверяет.
Команды плагина в консоли бота:
  1. include list - выводит список всех директив !include в файле macros.txt. Например:

    Код: Выделить всё

    include list
    
    ------on-------
    !include ..\cfg_macros\Novice_1-Start.txt
    !include ..\cfg_macros\Novice_2-Teachers.txt
    !include ..\cfg_macros\Novice_3-ZoneSelect.txt
    !include ..\cfg_macros\Novice_4-Tests.txt
    !include ..\cfg_macros\Gunslinger_1-Quest.txt
    !include ..\cfg_macros\vedro.txt
    !include ..\cfg_macros\Quest_4-Diribabl.txt
    
    ------off------
    #!include ..\cfg_macros\Swordman_1-Quest.txt
    #!include ..\cfg_macros\Archer_1-Quest.txt
    #!include ..\cfg_macros\Thief_1-Quest.txt
    #!include ..\cfg_macros\Taekwon_1-Quest.txt
    #!include ..\cfg_macros\Merchant_1-Quest.txt
    #!include ..\cfg_macros\Acolyte_1-Quest.txt
    #!include ..\cfg_macros\Mage_1-Quest.txt
    #!include ..\cfg_macros\Ninja_1-Quest.txt
    #!include ..\cfg_macros\Thief_2-Training.txt
    #!include ..\cfg_macros\Acolyte_2-Training.txt
    #!include ..\cfg_macros\Mage_2-Training.txt
    #!include ..\cfg_macros\Merchant_2-Training.txt
    #!include ..\cfg_macros\Archer_2-Training.txt
    #!include ..\cfg_macros\Swordman_2-Training.txt
    #!include autokach.mcs
    ##!include ..\cfg_macros\Quest_1-SledyBoja.txt
    # !include ..\cfg_macros\Quest_2-Soki.txt
    
    Таким образом видно, что в данный момент подключены только следующие семь файлов: Novice_1-Start.txt, Novice_2-Teachers.txt, Novice_3-ZoneSelect.txt, Novice_4-Tests.txt, Gunslinger_1-Quest.txt, vedro.txt, Quest_4-Diribabl.txt. Остальные строки - закоментированы, а значит не загружаются макроплагином.
  2. include on <имя файла> - включает (снимает комментарий - знак #) директиву !include, в которой встречается строка <имя файла>. Например:

    Код: Выделить всё

    include on Swordman
    !include ..\cfg_macros\Swordman_1-Quest.txt
    !include ..\cfg_macros\Swordman_2-Training.txt
  3. include off <имя файла> - выключает (ставит комментарий - знак #) директиву !include, в которой встречается строка <имя файла>. Например:

    Код: Выделить всё

    include off Swordman
    #!include ..\cfg_macros\Swordman_1-Quest.txt
    #!include ..\cfg_macros\Swordman_2-Training.txt
  4. include on all - включает все директивы !include.
  5. include off all - выключает все директивы !include.
Чтобы изменения, внесенные в файл macros.txt возымели действие, нужно перечитать файл macros.txt следующей командой: reload macros.txt

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Пн авг 17, 2009 6:55 am
4epT
на сколько я знаю команду "reload macros.txt" нельзя запустить из макроса.. мне кажется команду обновление этого файла нужно запихнуть в сам плагин!

Добавлено спустя 30 минут 28 секунд:
Commands::run("reload macros.txt")

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Ср июн 16, 2010 8:50 pm
EternalHarvest

Код: Выделить всё

(defined $::config{macro_file})?"$folders[0]\\".$::config{macro_file}
76 : "$folders[0]\\macros.txt"
Чтоб работало где-то кроме как в Windows, надо заменить на что-то подобное:

Код: Выделить всё

File::Spec->catfile($folders[0], defined $config{macro_file} ? $config{macro_file} : 'macros.txt')
Или хотя бы просто прямые слэши использовать.

А macro_file может быть только в первом ($folders[0]) каталоге из Settings::getControlFolders?

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Ср июн 16, 2010 9:17 pm
manticora
Спасибо.

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Сб июн 19, 2010 4:54 pm
manticora
EternalHarvest писал(а):А macro_file может быть только в первом ($folders[0]) каталоге из Settings::getControlFolders?
Хм, ты меня заинтересовал.
Никогда не думал и не встречался с несколькими папками control. Другую папку, отличную от папки по умолчанию - задавал, но чтобы задать сразу несколько - не делал. Интересненько, зачем это нужно и в каких ситуациях это можно использовать?

И как свой файл находит сам макро-плагин? Надо подглядеть...

Добавлено спустя 1 час 34 минуты 44 секунды:
macroinclude.pl r7372.
Подправил код с учетом нескольких папок control. Это было интересно. Надеюсь, что я нигде не накосячил...

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Сб июн 19, 2010 5:03 pm
EternalHarvest
Искать во всех папках можно проще.

Код: Выделить всё

Settings::getControlFilename($config{macro_file} || 'macros.txt')

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Сб июн 19, 2010 6:02 pm
manticora
Мда... жесть. Спасибо.

Обновил архив в первом сообщении. Плагин подправлен по рекомендациям EthernalHarvest.

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Чт июн 24, 2010 12:01 pm
qwertyy
вопрос скорее не по плагину, но смежный.

кора свн 7221.
при множественном включении макросов подгружается только один(первый не закомментированный)
есть ли какие-либо фиксы macro.pl?

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Чт июн 24, 2010 12:13 pm
EternalHarvest
qwertyy писал(а):при множественном включении макросов подгружается только один(первый не закомментированный)
есть ли какие-либо фиксы macro.pl?
? viewtopic.php?t=9022

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Чт июн 24, 2010 12:19 pm
qwertyy
спасибо, закрепили бы ссыль в первом посте, раз уж темы зависимые.

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Чт июн 24, 2010 12:32 pm
EternalHarvest
Этот плагин подразумевает наличие макро плагина (иначе он бесполезен).
Ошибка с загрузкой только одного include была внутри макро плагина.

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Чт июн 24, 2010 1:54 pm
qwertyy
понятное дело, но и без фикса работать не будет... правильнее упомянуть об этом или, если фикс попадет в свн, отметить версию с которой должен работать плаг.

Re: macroinclude - вкл-выкл директив !include в файле macros.txt

Добавлено: Чт июн 24, 2010 3:33 pm
manticora
понятное дело, но и без фикса работать не будет.
Смею поспорить.
Данный плагин исправно делает свое дело - ставит или снимает комментарий на директивах !include в файле с макросами, вне зависимости от ревизии макроплагина и наличии там каких-либо ошибок.
Так что утверждение, что данный плагин без фикса в макроплагине не будет работать - ложно.
Без фикса будет глючить сам макроплагин. Свежую версию которого, уже исправленную, можно скачать тут: Download GNU tarball