1. ДТ
Когда я в очередной раз, попав в ДТ, оправдывал себя тем, что вышел к этой самой ДТ я совсем с другой стороны, а не с той, с которой обычно ее благополучно обходил, я услышал от своих согрупников очень правильную мысль о том, что хорошо бы название клетки, которая граничит с ДТ, подкрашивать неким цветом, особенно привлекающим внимание игрока.
Помню, что были эти советы от человека, использующего совсем не JMC, но и этот клиент позволяет сделать полезные цветовые подсказки.
Итак, что мы делаем.
Находим клетку, которая граничит с ДТ. Затем делаем хайлайт с нужными цветами по названию клетки. Например:

#highlight {yellow,b light red} {Начало ветки} {default}

Усовершенствуем этот пример. Добавим еще и информацию о том, в какую сторону нежелательно ходить. Сделать это можно используя замену:

#substitute {Начало ветки} {_В_ Начало ветки}

Буква _В_ покажет, что на восток в данном случае лучше не ходить. Иначе прийдется утонуть в огне, так сказать.

Итого, для описания одного ДТ используется набор из двух команд JMC, первая заменяет название клетки на название клетки + направление, а вторая такое измененное название подсвечивает ядовитым цветом:

#substitute {Начало ветки} {_В_ Начало ветки}
#highlight {yellow,b light red} {_В_ Начало ветки} {highDT}

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

Также в данном варианте использования пары замены и подсветки может оказаться полезным знание такого режима работы JMC как #presub. Данный режим показывает, будет ли использоваться результат замены в триггерах. Т.е., фактически, будут ли обрабатываться замены до начала обработки пришедших строк триггерами. При этом #presub не влияет на работу результатов замены в подсветке.

PS. Полезная добавка от рецензентов.
В частности, если вдруг клетка такова, что вокруг нее не одно, а несколько ДТ, то, скорее всего, придется в замене указывать все направления, куда ходить нельзя. Например:

#substitute {Под основанием маленького листа} {_СВЮЗ_ Под основанием
маленького листа}

Бывают и такие случаи, когда клетки у ДТ и рядом лежащие имеют одинаковое короткое название. Что делать в таком случае, кроме как просить билдера, если он еще доступен, изменить название, — я даже не знаю.

2. Необходимые предметы
Есть в игре практически любой профессией такие предметы, которые обычно обязательно нужно не забыть взять с собой в зону. И даже если такие предметы не понадобятся лично игроку, возможно, они понадобятся кому-то из согрупников. Что это за предметы, я думаю, знают все. Это свитки возврата, лампы, напитки видения невидимых и т.п.
Для того, чтобы визуально отделить эти вещи от того, что есть у игрока в инвентаре, можно сделать подсветку, которая бы выделяла нужную вещь. Например, для свитков возврата у меня в сете стоит такая подсветка:

#highlight {black,b charcoal} {^свиток возврата} {default}
#highlight {black,b charcoal} {^пульсирующий свиток возврата} {default}

для лампы:

#highlight {cyan,b black} {^небольшая медная лампа} {default}

для напитка видения невидимых тоже можно было бы сделать подсветку, но я не нашел для себя приемлемого сочетания цветов, поэтому решил выделить эти вещи иначе. Для этого сделаем замену, строку "напиток видения невидимых" заменим на такую же, но со звездочкой в начале, например вот так:

#substitute {напиток видения невидимых} {*напиток видения невидимых}

Почему во всех этих примерах перед названиями предметов используется коробочка (^) — которая, как известно, указывает jmc, что строку нужно обрабатывать только если она начинается со слова, указанного за ^. Это сделано для того, чтобы подсветки срабатывали только при просмотре инвентаря или, например, ящика, и не срабатывали на аукцион или магазин. Насчет замен чуть ниже я опишу особенности, позволяющие использовать замены только с некоторыми ограничениями.

PS. Полезная добавка от рецензентов.
Вернее, не скажу, чтобы совсем полезная, но что-то в этом есть. Заключается она в простом триггере, который бы при выходе из городов проверял инвентарь. В том смысле, что при попадании в клетку с названием "Восточная калитка" выдавалась команда инв. Это действие по идее должно напомнить забывчивым посмотреть-таки свой инвентарь до того, как улететь из города без свитка возврата в поисках приключений на свою голову.

4. Глобальные фичи
Насколько мне известно, обычно те, кто использует клиент jmc, для каждой профессии используют, как минимум, отдельный сет алиасов, триггеров и прочего. В этом текстовом файле как раз и описываются все механизмы автоматизации клиента. Так вот, некоторые моменты, триггера, подсветки и т.п. могли бы быть одинаковыми для всех сетов.
Например, выбрасывание мачтовых штанов актуально, я думаю, практически для всех профессий, кроме разве что варваров. Подсветка ДТ актуальна для всех, и так далее.
Jmc предоставляет механизм глобального файла настройки. В файле с именем global.set можно хранить те же триггера, которые будут использоваться со всеми профилями.
Также можно перенести набор триггеров для автоматического вставания из-под баша туда же, а, например, для профиля, нацеленного на убивание игроков — в самом профиле отключать эту глобальную группу и смело вставать или несмело реколиться руками.

При подготовке данной статьи я попытался претворить все свои советы на практике. Вот что из этого вышло.
В данный момент в моем глобальном сете находятся

7 алиасов
10 триггеров на автовставание
4 триггера на логирование
5 триггеров выбрасывания ненужных вещей
8 триггеров на установление тикера по событияем погоды и времени
ну и штук 15 подсветок различной степени нужности...
Соответственно, все эти триггера так или иначе дублировались перед оптимизацией в каждом из сетов для разных чаров на аккаунте.

С начальным заполнением файла global.set у меня возникли некоторые сложности, так что я советую делать это таким образом.
Определите некий набор триггеров, которые будут сохранены в глобальном модуле.
Введите эти триггера в окно ввода. Затем определите группу как глобальную. Пример:
1. Вводим триггер -

#action {^Началась ночь.} {#tickset} {7} {glticker}

2. Вводим триггер -
#action {^Начался день.} {#tickset} {7} {glticker}

3. Делаем группу глобальной
#group global glticker

Теоретически можно делать и через диалог JMC, который позволяет менять триггера и другие настройки, а также вводить глобальные группы и делать их разрешенными или запрещенными; но, по крайней мере у меня, при этих манипуляциях с группами JMC иногда виснет.

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

Всякие разности...

5. Алиасы для заучиваний
Во время подготовки данной статьи при изучении других ресурсов, посвященных триггерам и вообще использованию клиента jmc, довелось мне увидеть отличный от моего способ заучивания заклинаний кастером. Скажем, даже не способ заучивания, а способ облегчения этого самого заучивания. Как это часто бывает, пока не столкнешься с тем, что кто-то делает по-другому, считаешь свой способ самым обычным и распространенным. Мне, возможно в силу привычки, кажется, что мой способ проще и удобнее в использовании.
Для облегчения работы с заклинаниями у меня в профиле находится такой набор:

#alias {зауч} {зау '%1 %2'} {default}
#alias {зз} {заучить забыть '%1 %2'} {default}
#alias {зс} {заучить стоп '%1 %2'} {default}

Первый алиас используется чтобы заучить некие заклинания. Вроде бы, двух переменных для названия заклинания хватает. Например, команда зауч маг имп добавит в список для заучивания заклинания 'магический импульс'. Алиасы зз и зс позволяют, соответственно, забыть и остановить заучивание заданных заклинаний. Мне кажется, что этот способ намного удобнее, чем написание по три алиаса на каждое заученное персонажем заклинание, вроде того как
#alias {зсф} {зау 'сфера холода'} {default}
#alias {ззсф} {заучить забыть 'сфера холода'} {default}
#alias {зссф} {заучить стоп 'сфера холода'} {default}

А для того, чтобы посмотреть список заклинаний, можно использовать "зау". Ну и обычно все изменяют на сервере для своего персонажа магический разделитель с ' на какой-то другой, для ввода которого нет необходимости менять раскладку с русского на английский, например, на минус.
PS. Полезная добавка от рецензентов.
Хотя статья и рассчитана на тех, кто более-менее активно пользуется возможностями автоматизации клиента JMC, все же было решено добавить и алиасы для колдования заклов.
Вот несколько штук для примера:

#alias {ки} {колд =маг имп=} {default}
#alias {м} {колд =молчание=} {default}
#alias {кмз} {к =масс защ=} {default}
#alias {сф} {колд =сфера=} {default}
#alias {п} {колд =паралич=} {default}

6. Логгируем
С момента написания Эльлеком триггеров на автологирование, он уже нашел более элегантный способ этого действа. Так что покажу, как автологирование сделано сейчас у меня (думаю, многим будет полезно).

#action {^Текущее Московское время :: %1} {#log $DATE.log append;си} {5}
{gllog}
#action {^ 5. WIN (JMC, WIN TELNET, ...)} {5;#log;#tickof} {5} {gllog}
#action {^0) Выход из AdamantMUDа.} {#log} {6} {gllog}

Логи получаются в виде ДД-ММ-ГГГГ.log
Разделение на чаров не используется.

7. Спасаем
Некий простой набор для танка-спасателя емкостью в два спасаемых кастера:
алиасы для установки переменных -

#alias {каст1} {#variable {cast1} {%%1}} {default}
#alias {каст2} {#variable {cast2} {%%1}} {default}

горячая клавиша для реска -
#hot {F10} {пом;#2 спас $cast1;#2 спас $cast2}

Без чего можно обойтись, но не хочется...

8. Группы
В чем удобство использования групп по сравнению с назначением всем алиасам, триггерам, хайлайтам группы по умолчанию default? Удобно, прежде всего, отключать или включать некие группы одним, скажем так, движением руки.
Как это выглядит? Например, есть у вас некий набор триггеров, который используется время от времени, например, при раскачке каких-то умений и т.п. Так вот, для того, чтобы не ходить по всему списку триггеров, выискивая, какой из них вам в данный момент нужно отключить, а какой включить, нужно сделать следующее. Назначить для тренировочных триггеров отдельную группу. А потом только лишь включать ее или отключать при помощи алиаса.
Например:

#alias {рп} {#group disable krit} {default}
#alias {рт} {#group enable krit} {default}

Запустив на выполнение алиас рп — будем иметь запрещенной группу с названием krit, а уже в группе krit у нас есть нужные нам триггера. Обратный алиас — рт, разрешает соответствующую группу.

Полный список возможностей для групп привиден ниже:

Синтаксис: #group {command} [{group_name}]

Эта комманда используется для манипуляции с группами. Доступные команды:
list — Показывает список груп определенных на текущий момент.
Пример: #group list
enable — включает группу по имени (включает все alias/actions/highlight, присвоенные этой группе).
Пример: #group enable pkill
disable — выключает группу по имени (Выключает обработку action/highlight/aliases, присвоенных группе).
Пример: #group disable pkill
delete — удаляет группу и все aliases/action/highlights присовенные группе.
Пример: #group delete pkill
info — показывает все объекты в группе.
Пример: #group info pkill
global — делает группу глобальной. Все aliases/actions/highlights, присвоенные этой группе, переносятся в файл global.set и стают доступными все профилям.
Пример: #group global pkill
local — делает группу локальной. Все содержание переносится в файл профиля .set и стает доступным только текущему профилю.
Пример: #group local pkill

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

#action {^Вы хотите есть} {вз кус ящ;есть кус} {5} {default}
#action {^Вы хотите есть} {пить фл} {5} {default}

jmc оставит только один триггер. Чтобы обойти эту проблему, в jmc есть специальные флаги, которые указывают на то, что может быть более одного триггера на один и тот же входной шаблон.

#multiaction — команда, позволяющая включать и выключать возможность множественных триггеров на одно событие. Например

#multiaction on

находящаяся в файле установок до добавления двух триггеров, позволит этим триггерам работать совместно. При этом порядок выполнения этих триггеров определится их приоритетом. Т.е., если написать эти триггеры так:
#action {^Вы хотите есть} {вз кус ящ;есть кус} {5} {default}
#action {^Вы хотите есть} {пить фл} {2} {default}

то при приходе от сервера сообщения "Вы хотите есть" сразу сработает питие воды, а уж затем ваш персонаж попытается откушать хлебушка.
Ну, а такой флаг как #multihighlight, автор просит взять на самостоятельное изучение.

10. Замены
Замены, aka сабсты, имеют по не совсем понятной причине свои особенности в JMC. В частности, для них не подходит известный признак начала строки ^, который вполне нормально работает в алиасах, триггерах и подсветках.
Второй момент: список замен не имеет своего отражения в диалоге редактирования JMC объектов. Так что для того, чтобы посмотреть список всех замен, необходимо в строку вбить и выполнить команду #subs. Таким же образом, конечно, можно просмотреть и список всех переменных.

Если при попытке замены у вас ничего не получается, то советую просмотреть список всех замен и попыться убрать лишние замены. Например, когда я пытался сделать замену

#subs {напиток видения невидимых} {*напиток видения невидимых}

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

Удалить — #unsubs {^напиток видения невидимых}
чтобы сработало #subs {напиток видения невидимых} {*напиток видения невидимых}

Что еще посоветовали знающие люди...

11. Статус, время, окно вывода
Статус — это три окошка в JMC, в которые можно выводить разные полезные короткие сообщения. Например, имя того, кого будем спасать, или аффекты, которые на вас скастили злобные мобы, или дружественные, добрые и совсем не мародерствующие пкиллеры.

#action {^Вы ослепли!} {#status 3 {СЛЕПОЙ !!!} {light red}} {5} {default}
#action {^Вы прозрели!} {#status 3} {5} {default}

В этих двух примерах используется третье окошко статуса. Первый триггер выводит строку СЛЕПОЙ !!!, второй ее убирает из окна статуса.

Объединяя пример со спасением, можно сделать такой алиас:

#alias {каст1} {#variable {cast1} {%%1}; #status 1 {$cast1} {light blue} }
{default}
#alias {каст2} {#variable {cast2} {%%1}; #status 2 {$cast2} {light blue} }
{default}

Но тогда нужно будет сделать и обнуление данных переменных и, соответственно, очистку окна статуса от уже неиспользуемых имен.

Окно вывода — это еще одно окно JMC, в которое можно выводить некоторые строки из мада. При этом их можно перед этим неким способом обрабатывать и показывать уже в нужном виде. Т.е., это такое объединения замен с выводом. окно вывода пример:

#action {%1 потеря%2 способность разговаривать.} {#output {brown} %1 В МОЛЧЕ !!!} {5} {default}

Если у вас окно вывода в данный момент не используется и его не видно, можно воспользоваться клавишами Alt + 0, а затем это самое окно разместить в том месте, где вам будет удобно им пользоваться.

Из того, что я слышал или читал, в это окно часто выводят личные обращения, разговоры в группе, или, например, то, что было взято из трупа поверженного врага.
У меня не такой большой экран, чтобы комфортно разместить два окна при разрешении в 1024*768, так что я окном вывода не пользуюсь совсем, предпочитая подсветки. Например, для групповых сообщений используется вот такой хайлайт:

#highlight {grey,b light blue} {%1 сказал%2 группе:} {glhigh}

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

показывает время высказывания в эфир

#subst {%1 сказал%2 всем: "%3"} {%1 сказал%2 всем: "%3" $TIME}

показывает личные переговоры
#subst {%1 сказал%2 Вам: "%3"} {%1 сказал%2 Вам: "%3" $TIME}
#subst {Вы сказали %1: "%2"} {Вы сказали %1: "%2" $TIME}

показывает переговоры в группе
#subst {%1 сказал%2 группе: "%3"} {%1 сказал%2 группе: "%3" $TIME}
#subst {Вы сказали группе: "%1"} {Вы сказали группе: "%1" $TIME}

Ну и, естественно, вы должны будете выполнить эти замены во всех сетах, в которых захотите видеть привязку ко времени. Ибо, как я уже писал, замены не сохраняются в глобальном сете.

PS. последовавшее изучение этой темы на практике показало, к сожалению, что хоть время и отображается, но в файл лога оно не сохраняется, увы и увы. Видимо, таки замены притянуты в JMC в более позднее время и срабатывают они совсем не в том объеме, в котором работают, например, триггера :(

Обсуждаем тут -------->   http://golddragon.3bb.ru/viewtopic.php?pid=2176#p2176