Список изменений

Scripts
Добавлена возможность подключать несколько файлов со скриптами силами самого jmc-клиента. По умолчанию и самыми первыми грузятся commonlib.scr и файл, имя которого совпадает с именем профиля (settings/<profile>.scr), если они есть. Кроме этого, есть список дополнительных файлов, которые будут загружаться во время перезагрузки. Изменить этот список можно двумя способами:

  • Командой #use <имя_файла>. Имя приводится относительно папки settings. Команда добавляет имя в список файлов, которые будут загружены при перезагрузке скриптов. Удалить имя из списка можно командой #unuse [<имя>]. Если опустить параметр, то будет показан сам список. Список сохраняется в .set файле профиля в виде последовательности команд #use.
  • Через закладку "Файлы скриптов" в диалоговом окне Правка→Объекты JMC. Там, кроме добавления и удаления, можно изменить порядок загрузки файлов.

Также изменена команда #message. С помощью #message uses OFF можно отключить отображение сообщений от команд #use и #unuse.

Добавлена поддержка команды #reloadscripts для перегрузки скриптов прямо из командной строки.

Mouse wheel
Добавлена поддержка колесика мыши. Теперь, если держать зажатой ctrl и крутить колесо, то окно жабы будет прокручиваться, как при нажатии pgup/pgdn. Если крутить колесико при Alt или Shift, будет прокручиваться одна строчка.

Variables
Добавлены встроенные переменные $YEAR, $MONTH, $DAY, $HOUR, $MINUTE, $SECOND.
А так же $INPUT  —  в этой переменной всегда хранится содержимое строки ввода.

PCRE
Обновлены PCRE до версии 5.0 (Perl Compatible Regular Expressions - работает с регулярными выражениями).

Tokens
Опция оставлять в строке ввода только первый токен (первое слово).
leave last token (оставлять первое слово)  —  оставляет одно слово. Если команда была из одного слова, то clear one token (очищать одно слово) очищает строку ввода. Соответственно, чтобы послать однословную команду и оставить ее в строке, надо в конце строки поставить пробел.

Shift+Enter, Ctrl+Enter
Shift+enter будет оставлять строку ввода и выделять текст.
Ctrl+enter будет очищать строку ввода.
Эти правила действуют выше, чем "очищение ввода" и правила токенов.

Статусы...
...теперь рефрешатся каждую секунду.

Сообщения ttcore
Сообщения от движка ttcore теперь можно настраивать по своему желанию. Путь к файлу и секция прописываются в Options→Setup...→Profile.

Цвета
В диалог настройки цветов добавлена кнопка для восстановления оригиналов

Окна вывода
Теперь при клике на ansiwnd буфер обмена НЕ очищается, если не было выделено ни одного символа, иначе таки работает процедура копирования выделенного в буфер.

MultiWindows
Добавлена поддержка нескольких окон вывода, а также команды:

  • #woutput <окно> [цвет] <текст>  —  выводит текст в заданное окно (можно с ANSI, можно аналогично #status или #output).
    Скриптовый аналог: Jmc.woutput(wnd, text [, color]);
  • #wlog <окно> <файл> [append|overwrite|html]  —  создает лог для окна;
  • #wshow <окно> [toggle|show|hide]  —  показывает или скрывает окно. Недоченное показанное, но не скрытое, а только закрытое, окно считается показанным;
  • #wname <окно> [название_окна]  —  устанавливает новое название окна;
  • #wdock <окно> [disable]  —  запрещает докинг окна к сторонам главного окна и другим окнам вывода;
  • #wpos {окно} {x} {y}  —  позиционирование окна. При перезагрузке жабы окно (если недоченное) встанет именно в это место. Это единственный способ заставить окно висеть в нужном месте постоянно.
Окно 0 является обычным окном вывода в старой жабе. Номера окон - от 1 до 10. Также метод Jmc.woutput() можно использовать в скриптах.

#logadd <строка>
Добавляет строку в файл лога основного окна.

#logpass
Используется в списке команд в action'ах, запрещает сохранение обрабатываемой строки в файле лога.

#flash
Добавлена команда #flash, которая устанавливает фокус на окне жабы, если пользователь в это время работал с другим окном. Бывает необходимо в некоторых важных случаях (мало здоровья, приватные сообщения и т.п.).

#char
Изменена команда #char (контроль на введенный символ).

#quit
Добавлена команда #quit, а также метод Jmc.Quit() для закрытия окна жабы. Имитирует нажатие пункта меню Файл→Выход.

#system
Добавлено три команды (#system, #ps и #terminate).
Команда #system <командная_строка> запускает процесс, указанный в параметре командная_строка, и отображает вывод программы прямо в окне жабы. В общем, аналогично команде /system в MMC.
Команда #ps выводит список запущенных процессов, которые еще не завершили свою работу. Номера pid можно использовать в следующей команде.
Команда #terminate <pid>|all|last завершает запущенные активные процессы. Если в параметре указан верный pid, то будет остановлен процесс с этим pid, если указать "all", то будут остановлены все процессы, а если - "last", то только последний вызванный.
Вместо #ps и #term можно использовать #tslist и #tskill.

#run
Добавлена команда #run <командная_строка> для запуска приложения, а также скриптовый метод Jmc.Run(cmdline) или Jmc.Run(cmdfile, cmdparams).
Отличия от команды #system:

  • Не перенаправляет вывод в окно жабы, и пользоваться командами #ps и #term нельзя.
  • Позволяет открывать документы (#run example.doc).
  • Можно запускать в скриптах с помощью метода Jmc.Run(cmdline, [params]).

#substitute
Добавлена закладка Замены в диалоговом окне Правка→Объекты JMC для визуальной настройки сабстов (#substite).

#hotkey
Теперь горячие клавиши можно разбивать на группы, так же как алиасы, тригеры и подсветки.

  • В команде #hotkey можно указывать группу: #hot {клавиша} {текст} [группа]. По умолчанию используется группа default.
  • Немного изменился вид закладки Горячие клавиши в диалоговом окне Правка→Объекты JMC. Теперь там еще можно выбирать группу хоткеев.

#play
Добавлена команда #play <имя файла>, которая проигрывает звук.

#if
Добавлена поддержка else;
#if {conditions} {then} [ {else}]

#loop, #<num>, #break, #pinch, #tmlist
#<num>, #loop  —  изменены. Обе команды переданы под контроль отдельного цикла, каждой добавлена возможность задержки (в децисекундах, 1/10 секунды).
#<num>[:<delay>]  —  цикл от 1 до num.
#loop {<num>[,<num2>][:<delay>]}  —  если указан второй параметр, то от num до num2, иначе от num до 0. Если delay не указан, считается нулем и цикл не задействует таймер, иначе ищется свободный таймер и цикл передается под его контроль. Всего выделены под это дело 16 таймеров (0..15). если свободный таймер не найден, то и цикла не получится.
Может быть, позже будет выделено больше. Пока нет необходимости, 16 - это много.
#break [all]  —  прерывает цикл (или все циклы). второй вызов убивает (обнуляет).
#abort [all]  —  убивает (обнуляет) цикл[ы] сразу.
#pinch (#resume) [all]  —  возобновляет цикл[ы], если он неактивен и работоспособен (есть первая/вторая граница, команда и задержка)
#tmlist  —  список активных циклов

#sos
#sos <group> <name | *>  —  добавить шаблон (group=oneof(action,alias,variable,hotkey))
#sos list  —  просмотреть список текущих шаблонов.
#sos clear  —  очистить список текущих шаблонов.
#sos save <file>  —  пройтись по допустимым группам и сохранить в file все объекты, соответствующие шаблону. Например, #sos hot NUM сохранит все горячие клавиши, срабатывающие на нажатия на кнопки "калькулятора", а #sos act ^ сохранит все триггера, считывающиеся с начала строки.

#spit
Построчно переправляет файл в муд в особом формате.
#spit <filename> <format>  —  открыть filename и передать каждую строку вставляя ее содержимое вместо %0 в format.
Examples:
#spit {./texts/metallica/unforgiven.txt} {music}
#spit {./etc/player/player.lst} {pload %0;cast disi %0;punload %0}

#race
#race format <string>  —  записывает формат бега (e.g. {run %0|%0})
#race move [<speedwalk>]  —  передает форматную строку с замещением %0 на speedwalk. Сохраняет speedwalk, если спидволк пустой, то берет последний сохранненный.
#race reverse  —  берет сохраненную переменную, реверсит ее, пересохраняет, запускает #race move

#autoreconnect
#autoreconnect [on|off] Включает - выключает автоматический реконнект.
Можно юзать в #action

#colon
#colon {leave|replace} При replace считает при парсинге неэкранированный semicolon (;) как CommandDelimiter

#daa
Команда для посылки текста в МУД без показа на экране и записи в лог независимо от настроек:
#daa <message>  —  посылает message в муд; показывает (если разрешено) и пишет в лог (если включен) строку, равную по длине, но содержащую только <***>.

#next
Команда в #action, позволяет сделать еще 1 проверку.

#multisub
Разрешает прогонку строки по субстам пока не кончатся совпадения, а не до первого, как раньше.

#wait
Задает задержку на весь вывод в секундах.
Не учитываются команды клиента, прямой вывод в МУД.
Снять задержку можно командой #wt 0

#comment, ##
#comment <char>  —  устанавливает символ комментария.
Все команды, начинающиеся с такого символа либо с ##, будут игнорированы

#grab
#grab [num] <char> [format]  —  достает строку номер num из filename и замещает ею %0 в format. Итог посылает в муд. Номер строки сохраняется только если прошлый вызов касался того же файла.

#nodrop
Отменяет команду #drop

#winamp
Позволяет управлять проигрывателем WinAmp из клиента.

 Syntax:      #wamp {command} 
 command can be on of the following:
 
 previous   - plays previous in list track
 next       - plays next in list track
 play       - starts playing
 pause      - pause/unpause
 stop       - stop playing
 fadeout    - fadeout and stop
 stopafter  - play current track and stop after
 rewind     - fast-rewind, 5 sec back
 forward    - fast-forward, 5 sec forward
 start      - to the beginning of the playlist (not in shuffle mode)
 end        - to the beginning of the playlist (not in shuffle mode)
 elapsed    - set time showing to elapsed (positive number)
 remaining  - set time showing to remaining (negative number)
 ontop      - make WinAmp window 'always on top'
 doublesize - make WinAmp window doubleisized
 volume+    - raise volume by 1%
 volume-    - lower volume by 1%
 repeat     - toggle repeat mode
 shuffle    - toggle shuffle mode
 close      - close WinAmp

#help <command>
Показывает встроенную справку по команде. Файлы со справкой хранятся в папке help.

Внимание
Некоторые функции могут быть не упомянуты в связи с некоторой путаницей от версии к версии... Бывает :)