|
ЗНАКОМСТВО
JMC - это
программа-клиент, предназначенная для того, чтобы облегчить
вам жизнь в MUD'ах. Если даже вы заходите в MUD лишь от
случая к случаю, то все равно наверняка успели подумать о
том, что массу утомительных нажатий на клавиши можно и нужно
как-то автоматизировать.
JMC - именно то, что вам необходимо. JMC позволяет создавать
макрокоманды (алиасы), программировать ответные действия на
события игры (триггеры), анализировать ситуацию, назначать
быстрые клавиши командам и их группам, короче - эта
программа сделает вашу игру намного удобнее.
Каковы отличия JMC от других подобных программ? JMC
по-настоящему быстр и мощен. Вывод текста осуществляется со
скоростью, максимально возможной на вашем компьютере.
Развитой макроязык позволяет вам создавать сложные
макрокоманды, а скорость обработки команд превышает все
известные аналоги. JMC позволяет использовать сотни алиасов
и триггеров, создавать и уничтожать их непосредственно с
помощью команд, работать с вложенными командами и многое
другое.
Если вы - опытный игрок, то вы должны уметь писать сложные
комбинации алиасов/команд/триггеров. JMC предоставляет для
этого мощный язык сценариев, совместимый с популярным языком
TinTin++. Но JMC - это не просто порт TinTin для Windows
95/NT. Некоторые команды TinTin отсутствуют в JMC, а также
есть несколько команд, отличных от TinTin. Однако синтаксис
языка остался неизменным. Если вы пользователь старого
TinTin, то обратите внимания на имеющиеся различия.
JMC позволяет упростить игру в национальные MUD'ы. Замена
символов - одна из мощных особенностей программы - позволяет
вам избегать проблем с верхней частью таблицы ANSI. В
дальнейшем будут добавлены другие возможности национальной
поддержки.
При установке JMC на вашем компьютере вы одновременно
устанавливаете RMA-проигрыватель. RMA - это удобная утилита
просмотра ваших любимых логов, поддерживающая ANSI-цвета,
автоскролл и имеющая массу других особенностей. (См.
подробно о RMA).
Вот неполный перечень возможностей JMC:
- Полная поддержка ANSI цвета.
- Сохранение последних набранных команд с настраиваемой
глубиной буфера.
- Мощный макроязык, совместимый с языком сценариев TinTin++,
позволяет Вам создавать любые макрокоманды - от простого
алиаса до сложных скриптов.
- (!) Вы можете применять одновременно несколько триггеров
на одну строку, исходящую из MUD. Таким образом вы можете
обработать одну строку несколькими способами и получить
массу информации одновременно.
- Вы можете назначить быстрые клавиши (как через интерфейс,
так и из командной строки)
- Вы можете организовывать ваши быстрые клавиши в группы (наборы
быстрых клавиш) и переключаться между ними в процессе игры
из командной строки или с помощью интерфейса.
- Вы можете организовывать созданные макрокоманды в группы (профили)
и переключаться между ними в процессе игры из командной
строки или с помощью интерфейса.
- Поддерживается вывод всей поступающей информации в log-файл
с опциональным включением записи ANSI команд и RMA команд.
- В пакет JMC входит RMA-проигрыватель - программа просмотра
лог-файлов.
- Поддерживается замена символов, исходящих из MUD. Это
полезно, если не вам по каким-то причинам не нравятся любые
символы, исходящие из MUD, или для поддержки национального (не-английского)
языка в MUD'е.
- Вы можете загрузить/сохранить ваши макрокоманды из/в файла
в любое время, когда захотите.
- Быстрота отработки triggers/action/substitutes.
- Огромная скорость отрисовки информации, отсуствие эффектов
утомляющих глаза ("дергание текста", "моргание").
- Работа с буфером Windows.
- Возможность автозаписи пройденного пути.
- Поддержка протокола telnet.
- И многое другое...
В отличие от других популярных MUD-клиентов, JMC обладает
довольно бедным пользовательским интерфейсом. Это не
означает, что JMC - это программа, работающая только с
командной строкой. Это означает, что JMC не позволяет себе
самостоятельно принимать решения и предоставляет вам полную
свободу действий. JMC никак не ограничивает количество ваших
конфигурационных файлов для одного или нескольких персонажей.
JMC не заставляет вас держать все макрокоманды в одном файле.
Это позволяет вам создавать удобное окружение для различных
MUD'ов и для различных персонажей. Вы можете настроить
большинство параметров интерфейса по своему выбору - цвета
ANSI, размер буфера команд, символы разделителя команд и т.д.
Что такое RMA?
Вкратце, это обычный ANSI проигрыватель, в который добавлен
один новый код: [ESC]p:[millisecs]m , где [ESC] - escape
коде, [millisecs] - длительность паузы.
RMA предоставляет возможность просмотра MUD-логов (сражений,
зонинга и т.п.) в реальном виде, с поддержкой цветов и паузы.
Попробуйте - вам наверняка понравится :).
ЗАЧЕМ НУЖНЫ ПРОФИЛИ?
Профили используются, когда вы хотите сменить игрового
персонажа или пойти на другой MUD-сервер. Например, вы
используете символ ";" в качестве разделителя команд в
макросах, а один из ваших любимых MUD'ов использует этот же
символ в своих внутренних командах. В таком случае, вы
можете создать для этого MUD'а новый профиль и установить
другой символ в качестве разделителя команд. Тогда вам не
нужно будет изменять разделитель при переходе в этот MUD, а
нужно только подгрузить соответствующий профиль. Другая
причина, по которой вам может понадобится несколько профилей
- независимые наборы быстрых клавиш, которые специфичны для
каждого отдельного профиля. Если вы играете несколькими
разными персонажами, например, магом и воином, то вам
потребуются разные быстрые клавиши для каждого из персонажей.
Для мага - "cast 'cone of cold'", "cast 'shield'", и т.д.
Для воина - "rescue Lesath", "kick $target" и т.п. Простое
переключение профиля намного удобнее повторного задания всех
быстрых клавиш при смене персонажа.
Перечень общих опций:
Показ элементов JMC, установка цветов, размер буфера
скроллинга и буфера команд, символ начала команды (по
умолчанию - "#").
Перечень локальных опций:
Символ разделителя команд, установки замены символов,
автозагрузка профиля, автосохранение профиля, автосохранение
при выходе, установки журнала (лога).
КОМАНДЫ JMC
Синтаксис: #alias {ИМЯ МАКРОСА} {КОМАНДЫ}
Макрос (алиас) позволяет задать новую команду, составив ее
из последовательности более простых. При отдаче команды с
именем существующего алиаса JMC заменит его на
последовательность команд, заданную в данном алиасе. В
командах могут использовать специальные переменные: %0...%9,
предназначенные для косвенного указания слов строки, на
которую применяется алиас. Переменная %0 обозначает
последние слова в команде с использованием алиаса,
переменные %1-%9 содержат слова строки.
Пример:
#alias {k} {kill %1}
Каждый раз, когда вы отдадите команду "k ИМЯ", игровому
серверу будет отправлена строка "kill ИМЯ". Т.е. "k dragon"
заменится на "kill dragon".
#alias putex {put %1 into %2; #showme {%0 done}}
Теперь вы можете отдать команду вроде "putex bread chest".
При этом игровому серверу отошлется строка "put bread into
chest" а вам ответят строкой "bread chest done". В данном
примере переменная %0 содержит "bread chest", %1 содержит
"bread" и %2 содержит "chest".
Если второй параметр алиаса отсутствует, JMC покажет вам все
алиасы, имя которых совпадает с указанным.
Пример:
#alias k
JMC покажет информацию об алиасе с именем "k".
#alias *get*
JMC покажет информацию обо всех алиасах, в имени которых
содержится сочетание букв "get".
Если команда #alias отдана вообще без параметров, JMC
выведет информацию обо всех заданных алиасах.
Синтаксис: #bell
Описание: Воспроизводит звук, заданный в Windows по
умолчанию. Если таковой не задан или у вашего компьютера нет
звуковой карты, то будет задействован PC-спикер.
Пример:
#bell
Синтаксис: #cr
Отправляет на сервер код перевода строки. Это полезно для
создания алиасов, требующих при исполнении промежуточного
ввода.
Синтаксис: #highlight {цвет} {строка}
Описание: Все строки, исходящие из MUD, содержащие заданный
участок, будут подсвечиваться указанным цветом.
Параметр <цвет> может быть следующим:
- reverse, bold, blink, faint, italic, или число от 1 до 8 (соответствует
цветам основной палитры).
Также вы можете напрямую использовать название цвета или
эффекта или их комбинации. Например, вы можете задать {red,
bold}.
Доступные названия:
red, blue, cyan, green, yellow, magenta, white, grey, black,
brown, charcoal, light red, light blue, light cyan, light
magenta, light green, b red, b blue, b cyan, b green, b
yellow, b magenta, b white, b grey, b black, b brown, b
charcoal, b light red, b light blue, b light cyan, b light
magenta, b light green, bold, faint, blink, italic, reverse
Пример:
#highlight {light red, italic} {тяжело ранил вас}
Когда кто-либо тяжело ранит вас, строка с информацией об
этом будет показана наклонным шрифтом ярко-красного цвета.
Если вы хотите подсветить строку, содержающую заданный
участок, полностью - используйте переменные %0-%9 для
указания меняющихся слов строки.
Пример:
#highlight {yellow} {%0 дал вам %1 монет}
Теперь строки типа "Вася дал вам 1000 монет" будут
показываться желтым цветом.
Синтаксис: #if {УСЛОВИЕ} {КОМАНДЫ}
Когда вы используете команду #if, JMC оценивает условие и,
если его результат отличается от 0, т.е., условие истинно,
выполняются команды, определенные вторым параметром.
Внимание! В версиях JMC старше 2.93 beta вы не можете
сравнивать строки. Т.е., #if работает только со строками и
переменными, представляющими собой числовые значения.
Примеры:
#action {HP:%0>} {#if {%%0<50} {recite recall}}
Если количество хитпойнтов, показывающееся в строке
состояния персонажа, меньше 50, вы зачитаете свиток возврата.
Переменная %%0 относится к команде #action, а не команде
#if, поэтому необходимо двойное %.
Новая бета JMC 2.93 дата 12.07.99
+ добавлена операция сравнения строк в условных выражениях:
#strcmp
#var Look Вася
#alias {%1 посмотрел на тебя} {#if {#strcmp {%1} {$Look}}
{say ZZZ} }
Если на вас посмотрит Вася, вы скажете ZZZ.
Синтаксис: #killall
Эта команда удаляет все заданные алиасы, триггеры,
переменные, подсветки, замены и антизамены. Обычно
используется при перезагрузке установок.
Синтаксис: #map <направление>
Данная команда добавляет указанное направление к текущему
сохраняемому пути. Это полезно для записи пути при
следовании за кем-либо.
Пример:
#action {Вася ушел на %0.} {#map {%%0}}
Если персонаж Вася покидает вашу локацию, направление, в
котором он ушел, добавится к текущему пути.
Синтаксис: #message {ТИП}
Эта команда включает/выключает выдачу сообщений, исходящих
при определении/удалении алиасов, переменных, замен,
антизамен или подсветок. Допустимые значения аргумента ТИП:
alias, action, substitute, antisubstitute, highlights,
variable.
Данная команда полезно для предупреждения захламления экрана
и излишнего спамминга. Например, часто какие либо триггеры
повешены на команды передвижения. Чтобы не получать каждый
раз при передвижении надоедливые сообщения о переопределении
триггера, используйте команду #message с соответствующим
аргументом.
Пример:
#message {variable}
Вы больше не будете получать сообщений типа:
#Variable start now set to 1
Синтаксис: #nop <текст>
Эта команда не делает ровным счетом ничего. Используется для
написания комментариев в файлах макросов.
Пример:
#nop алиасы для использования в бою.
Увы, но при первой же записи в файл средствами JMC все
команды #nop будут безжалостно потерты, поэтому имеет смысл
снабжать файл комментариями только в случае, когда вы
убеждены, что запись в процессе игры в данный файл вам не
нужна.
Синтаксис: #presub
Включает/выключает возможность использования замещенных
строк в триггерах.
Пример:
#sub {%0 crashes into you %1} {%0 СБИЛ ВАС!!!}
Теперь вы будете получать строку типа "Ghost СБИЛ ВАС!!!"
каждый раз, когда вас сбивают с ног, вместо стандартного
сообщения.
#act {СБИЛ ВАС} {встать}
Если presub выключено, этот триггер никогда не выполнится.
Если включено, вы будете автоматически вставать, когда вас
сбивают с ног.
Синтаксис: #savepath <имя алиаса> {reverse}
Записывает текущий буфер пути в алиас с заданным именем.
Данная команда полезна, если вы хотите использовать
информацию о пройденном пути в дальнейшем. Ключ [reverse]
используется для сохранения обратного пути - из текущей
локации в исходную.
Пример:
#path
Вы увидите что-то вроде: "#Path n n n e e s e e s e e n e"
#savepath town-castle
Записывает текущий буфер пути в алиас с именем
"town-castle". Теперь данный алиас содержит набор команд "n
;n ;n ;e ;e ;s ;e ;e ;s ;e ;e ;n ;e"
#savepath castle-town reverse
Записывает путь, обратный содержащемуся в буфере пути, в
алиас с именем "castle-town". Т.е., алиас "castle-town"
будет содержать команды "w ;s ;w ;w ;n ;w ;w ;n ;w ;w ;s ;s
;s"
Синтаксис: #substitute {участок текста} {текст}
Данная команда заменяет указанный участок текста в любой
строке, исходящей с MUD-сервера, на заданный текст.
NB! JMC производит все замены текста _до_ проверки на
совпадение поступившей с сервера строки на триггера. Поэтому
вы можете настраивать ваши триггера на тот текст, который
получается после замены исходных строк.
Пример:
#substitute {ранил вас} {РАНИЛ ВАС}
Теперь вместо строки типа "Вася тяжело ранил вас" вы будете
получать строку "Вася тяжело РАНИЛ ВАС".
#substitute {%0 ранил вас} {ОН РАНИЛ ВАС!}
Теперь строки будут меняться следующим образом:
"Вася ранил вас" - "ОН РАНИЛ ВАС!"
"Стражник тяжело ранил вас" - "ОН РАНИЛ ВАС!"
Синтаксис: #tickon/#tickoff
Обнуляет, а также включает/выключает встроенный счетчик
тиков.
Синтаксис: #ticksize <число секунд>
Устанавливает длительность тика в секундах. Наиболее часто в
MUD-серверах величина тика составляет 60 секунд.
Синтаксис: #unalias {имя удалаемого алиаса}
Данная команда удаляет алиас с указанным именем.
Пример:
#unalias {cc}
Удаляет алиас с именем "cc"
#unalias {c*}
Удаляет все алиасы, имена которых начинаются на "с".
Синтаксис: #unhighlight {строка удаляемой подсветки}
Эта команда удаляет подсветку(~ки), повешенную(~ные) на
указанную строку.
Синтаксис: #unvariable {имя переменной}
Удаляет переменную с указанным именем.
Синтаксис: #write {имя файла}
Эта команда сохраняет все текущие заданные макросы, алиасы,
триггеры, замены, гэги, антизамены, переменные и подсветки в
файл с указанным именем.
Синтаксис: #action {входная строка} {действия} {приоритет}
Эта команда позволяет запрограммировать действие (или
несколько), которое должно быть выполнено при поступлении из
MUD'а какого-либо текста. Подобные макрокоманды называют
триггерами. Отдельные слова входной строки могут быть
заменены на переменные %0-%9, которые можно затем
использовать в ключе "действия".
Все триггеры сохраняются единым списком. Любая строка,
поступающая из игры, проверяется на соответствие условиям
триггера. Если она соответствует нескольким сразу - триггеры
выполняются в очередности согласно установленному приоритету.
Т.е., если вы хотите указать, какой триггер более важен -
назначьте ему более высокую приоритетность выполнения. Самая
высокая степень приоритета - "0", самая низкая - "9".
Если входная строка начинается с символа ^, то поступившая
из игры строка будет считаться соответствующей триггеру
только в том случае, если совпадение происходит с самого
начала строки.
Если команду #action отдать без всяких аргументов, будет
выведен полный список заданных триггеров.
Ели команда #action задана только с одним аргументом, будет
выведен список всех триггеров, в составе входной строки
которых содержится данное слово или сочетание слов.
Допустимо использование символа * . См. примеры.
Примеры:
#action {You are hungry.} {eat bread} {2}
Когда игра сообщает, что вы голодны, вы будете есть хлеб
автоматически.
#action {%0 arrived from the %1} {kill %0} {0}
Когда кто-либо входит в локацию, в которой вы находитесь, вы
автоматически будете атаковать его.
#action {^Nice white fountain is here} {drink water from
fountain} {5}
Если из игры поступает строка, начинающаяся со слов "Nice
white fountain is here", вы автоматически будете пить воду
из фонтана. Таким образом предупреждается недобросовестное
поведение других игроков, которые могут, например, сказать
вам такую фразу возле ядовитого источника - в этом случае
поступит строка "NAME tell you: Nice white fountain is
here", и триггер не сработает.
#action
Вывод всех заданных триггеров:
{The momentum of your kick}={sta} @ {5}
{You try to bash}={sta} @ {5}
{are hungry}={get $food $chest;eat $food} @ {5}
{are thirsty}={drink water} @ {5}
{crashes into you}={sta} @ {5}
{disarms your weapon}={get axe} @ {5}
#action *you*
Вывод всех триггеров, содержащих во входной строке слово
"you":
{The momentum of your kick}={sta} @ {5}
{You try to bash}={sta} @ {5}
{crashes into you}={sta} @ {5}
{disarms your weapon}={get axe} @ {5}
Вы можете временно запретить исполнение триггеров с помощью
команды #ignore. Повторная отдача этой команды включит
триггера снова.
Вы можете включить показ команд, выполняемых в триггере,
командой #echo. Повторная отдача #echo выключит показ.
Для удаления триггеров используйте команду #unaction.
Синтаксис: #char {СИМВОЛ}
Данная команда предназначена для задания символа, с котрого
должны начинаться все команды JMC. Вы можете сделать то же
самое из диалога "Options". По умолчанию задан символ '#'.
Синтаксис: #echo
Описание: Включает/выключает показ команд, исходящих из
триггеров. Если ECHO-режим выключен (off), команды,
исходящие из триггеров, не будут воспроизводиться на экране.
Синтаксис: #hotkey {имя клавиши} {команды}
Данная команда позволяет задать новую или переопределить
существующую быструю клавишу. Нажав заданную клавишу (или
комбинацию клавиш), указанные команды будут отправлены
серверу, как если бы вы отдали их непосредственно с
клавиатуры.
Синтаксис составного имени клавиши:
[shift+][ctrl+][alt+][имя клавиши]
Имя клавиши может быть цифрой, буквой или специальным именем.
Специальные имена:
BACK Backspace key TAB Tab
ENTER Enter ESC Escape
SP Пробел PGUP Page Up
PGDN Page Down END End
HOME Home LEFT Стрелка влево
UP Стрелка вверх RIGHT Стрелка вправо
DOWN Стрелка вниз INS Insert
DEL Delete NUM0-9 Серые цифры
DIV Серый "/" F1-F12 Функциональные клавиши
MULT Серый "*" - только в версии 2.94b и более новых
Пример:
#hotkey Ctrl+z {#zap}
#hotkey {alt+c} { #connect mud.arctic.org 2700}
#hotkey f1 flee
#hotkey ctrl+f5 спасти Васю
Синтаксис: #ignore
Включает/выключает триггеры.
Пример:
#ignore
До повторной отдачи этой команды все триггеры не будут
действовать.
Синтаксис: #log {имя файла} {append/overwrite}
Начинает запись в указанный файл всей текстовой информации,
поступающей с сервера (кроме спецсимволов ANSI) и текста,
введенного пользователем. Если JMC уже работает с каким-либо
файлом, текущий лог закрывается и открывается указанный.
Если эту команду отдать без параметров, текущий лог
закроется. Если отсутствует второй параметр, лог будет
вестись в режиме, установленном по умолчанию (задается в
диалоге ПАРАМЕТРЫ/LOGGING). В режиме "append" JMC при старте
лога добавляет текст в конец существующего файла, в режиме
overwrite весь текст, существовавший в файле ранее,
уничтожается.
Примеры:
#log castle.log
Начать ведение лога в файле castle.log
#log town.log overwrite
Закрывает файл "castle.log" и начинает запись в файл "town.log".
Если такой файл существует, он будет предварительно очищен.
#log
Остановить ведение лога.
Синтаксис: #mark {start/stop}
Эта команда имеет может быть использована либо с одним
аргументом, либо вообще без аргументов. Если задан параметр
"start" (или никакого), то данная команда обнуляет текущую
запись пути и включает "path mode" (режим записи пути). В
этом режиме JMC автоматически сохраняет все передвижения в
отдельном буфере.
Примеры:
#mark
Обнуляется буфер передвижений и включается режим записи пути.
#mark stop
Выключает режим записи пути.
Синтаксис: #multiaction
Включает/выключает "мультитриггерный режим". При выключенном
мультирежиме JMC прекращает обработку текущей строки после
нахождения первого подходящего триггера. При включенном
режиме JMC будет проверять все заданные триггеры на
необходимость применения к текущей строке. Если количество
заданных вами триггеров исчисляется сотнями, для ускорения
работы лучше держать данный режим выключенным, используя
приоритеты триггеров.
Пример:
#alias get_stats { #action{HP:%1} { #var hp %1}; #action {MVS:%1}
{ #var mvs%1; #multiaction; #unact {HP:%1}; { #unact MVS:%1}};
#multiaction; #cr}
Что ж, весьма сложный алиас. Давайте разбираться. Вначале
происходит задание двух триггеров. Первый триггер извлекает
количество хитпоинтов из строки состояния и помещает
полученное значение в переменную "hp". Второй извлекает
количество единиц бодрости (movement points) и помещает
полученное значение в переменную "mvs". Затем выключает
мультитриггерный режим и удаляет оба заданных триггера.
После определения триггеров алиас отправляет на сервер код
перевода строки (чтобы получить строку состояния). После
получения строки состоянии алиас заполняет указанные
переменные требуемыми значениями, удаляет триггеры и
выключает мультитриггерный режим.
Режим по умолчанию - ВЫКЛ.
Синтаксис: #path
Показывает текущее содержания буфера передвижений.
Пример:
#path
Покажет что-нибудь вроде: "#Path: n e e e s "
Синтаксис: #read {имя файла}
Эта команда считывает содержание указанного файла и
выполняет его, как если бы весь полученный текст был введен
вручную в командной строке.
Пример:
#read mage.set
Считывает файл mage.set и устанавливает алиасы, триггеры,
переменные и т.п., определенные в нем.
Синтаксис: #showme {текст}
Команда выведет заданный текст на экран.
Пример:
#action {%0 decayed in your hands} {#showme {*** %0 decayed
!!!!}}
Теперь вы получите сообщение "*** sword decayed !!!", если
меч в ваших руках рассыпется в пыль.
Синтаксис: #textin {имя файла}
Эта команда считывает текст из указанного файла и отправляет
его на сервер без какой-либо обработки. Полезна для
управления игрой или написания больших сообщений.
Синтаксис: #tickon/#tickoff
Обнуляет, а также включает/выключает встроенный счетчик
тиков.
Синтаксис: #togglesubs
Сходна с #ignore - команда #togglesubs включает/выключает
обработку замен текста. По умолчанию включено.
Синтаксис: #unantisub {строка удаляемой антизамены}
Команда удаляет указанную(ые) антизамену(ы).
Синтаксис: #unpath
Удаляет последнюю запись из текущего буфера пути.
Синтаксис: #variable {имя переменной} {значение}
Эта команда создает переменную с указанным именем и
присваивает ей заданное значение. Значение переменной может
быть использовано для построения триггеров/алиасов и иных
команд. Имя переменной должно начинаться с буквы. Для
последующего использования указателем на переменную служит
знак $. Переменная может быть использована как часть любой
строки или команды.
Пример:
#variable food bread
Создается переменная с именем "food" и ей присваивается
значение "bread".
#variable container chest
Создается переменная с именем "container" и ей присваивается
значение "chest".
#action {are hungry} {get $food $container;eat $food}
Когда вы получите сообщение сервера о том, что вы чувствуете
голод, вы автоматически возьмете хлеб из сундука и съедите
его. Если хлеба нет, но есть много мяса, присвойте
переменной "food" соответствующее значение, и процесс
автонасыщения сохранится.
Вы можете использовать переменные в командах #math и #if:
Пример:
#variable hp 100
#action {HP:%1} {#variable hp %1 ; #if{$hp<50} { #showme
TIME TO FLEE!}}
Создается переменная "hp", ей присваивается значение 100. В
дальнейшем значение переменной корректируется триггером и
содержит количество имеющихся хитпоинтов. При этом это
количество проверяется, и если оно меньше 50, выдается
сообщение о том, что пора убегать.
Синтаксис: #zap
Закрывает текущее соединение. Используется для разрывания
связи с игровым MUD-сервером.
Синтаксис: #antisubstitute {участок строки}
Описание: Данная команда предотвращает влияние команд
#substitute и #gag на строки, содержащие заданный участок.
Пример:
#gag {%0 пришел с %1}
Теперь вы не будете получать информацию, когда кто-либо
приходит в вашу локацию.
#antisubstitute {Стражник пришел с %1}
Теперь вы будете получать информацию только когда в вашу
локацию входит стражник. Все остальные монстры/персонажи
по-прежнему подпадают под действие команды #gag.
Синтаксис: #hotset {имя набора}
Эта команда устанавливает текущим указанный набор быстрых
клавиш. Полезна для организации наборов в группы и
переключения между ними.
Синтаксис: #info
Описание: Показывает количество заданных триггеров, алиасов,
переменных, замен, антизамен и подсветок. Также сообщается о
состоянии триггеров (вкл/выкл).
Синтаксис: #loop {от,до} {команды}
#loop начинает выполнять указанные команды в цикле, сохраняя
текущее значение счетчика в переменной %0. Эта переменная
также может использоваться в заданных командах для
построения сложных макросов.
Пример:
#loop {2,5} {взять все %0.сундук}
Вы возьмете все предметы из 2-го, 3-го, 4-го и 5-го сундуков.
Синтаксис: #math {переменная} {математическое выражение}
Данная команда вычисляет заданное математическое выражение и
сохраняет его результат в указанной переменной. Работает
только с целыми числами.
Пример:
#action {Perfect: HP:%0} {#math {half} {%0/2}}
Теперь переменная "half" содержит величину, равную половине
ваших хитпоинтов (триггер будет работать до тех пор, пока
ваше состояние - perfect).
#action {HP:%0} { #if {%%0<$half} {flee}}
Бежать, если количество хитпоинтов меньше половины.
Синтаксис: #<число> {Команды}
Эта команда повторяет заданную последовательность команд
указанное число раз.
Пример:
#5 {sing}
В мад уйдет команда sing;sing;sing;sing;sing - Вы споете
(sing) 5 песен.
#10 {eat bread;drink water}
Вы поедите хлеба (eat bread) и выпьете воды (drink water) 10
раз.
Синтаксис: #return
Эта команда отправляет на сервер направление,
противоположное последнему выполненному, после чего удаляет
последнее направление из текущего буфера пути.
Пример:
#mark
включить режим записи пути.
n
Теперь последнее направление в буфере пути - это "n"
#return
Отправить на сервер строку "s" и удалить "n" из буфера пути.
Синтаксис: #speedwalk
Включает/выключает "режим быстрого перемещения" ("speedwalking
mode"). Быстрое перемещение - возможность JMC
интерпретировать несколько направлений движения одной
командой. Если команда, введенная пользователем, содержит
только n, s, e, w, d, u, цифры, она будет интерпретирована,
как последовательность движения и передана на сервер
соответствующим образом. Цифрами обозначается количество
повторов следующего сразу за цифрой направления.
Пример:
2ned4s
На сервер будет отправлена команда "n; n; e; d; s; s; s; s".
При выключенном режиме быстрого перемещения команда
подобного рода будет интерпретироваться целиком, без
разбиения на составляющие.
ВНИМАНИЕ!!! При включенном режиме вы не можете использовать
команду "news". Для того, чтобы прочитать новости игры,
отдавайте ее в виде "News".
Синтаксис: #tick
Команда показывает количество секунд, оставшееся до
следующего тика (окончания внутреннего временного интервала
игры). Текст, выдаваемый командой, может обрабатываться
триггерами.
Синтаксис: #tickset
Обнуляет встроенный счетчик тиков. Команда используется для
синхронизации вашего счетчика и счетчика игрового сервера.
Размер тика на сервере - величина непостоянная, потому что
часть времени может теряться при пересылке пакетов и других
проблемах соединения. Поэтому для точного измерения вы
должны время от времени синхронизировать счетчик JMC со
счетчиком игрового сервера. Это легко сделать сделав триггер
с использованием данной команд на какое-либо игровое событие,
появляющееся только с новым тиком (например, сообщение о том,
что вы голодны, что начался день/ночь и т.п.).
Синтаксис: #unaction {отрезок текста}
Удаляет триггер, повешенный на заданный отрезок текста.
Пример:
#unaction {crash into you}
Удаляет триггер, повешенный на строку "crash into you"
#unaction {*you*}
Удаляет все триггеры, повешенные на строки, в составе
которых есть слово "you".
Синтаксис: #ungag {строка удаляемого гэга}
Эта команда удаляет #gag, повешенный на указанную строку.
Синтаксис: #unsubs {строка удаляемой замены}
Эта команда удаляет замену, заданную по отношению к
указанной строке.
Синтаксис: #verbatim
Включает/выключает "verbatim" режим. В данном режиме строка,
введенная пользователем, никак не обрабатывается и
отправляется на игровой сервер без каких-либо изменений.
Режим используется для управления игрой, создания сообщений
и других подобных целей.
ПРИМЕРЫ НАСТРОЕК.
-
РЕЖИМ ИГРЫ - Установление
переменной $fight в зависимости от режима игры: битва/мирный.
Сервер: Мир Трех Лун: rmud.ru 3040
#action {[%1:%2]} {#var fight 1} {2}
#action {м Выходы:%0} {#var fight 0} {5}
Комментарий: Большинство триггеров типа автоматического
поедания пищи при получении сообщения о том, что вы
голодны, имеют неприятную особенность - они выполнятся
независимо ни от чего. И если вы проголодались аккурат в
момент особо тяжелой драки, то потеря времени на еду
может стать роковой. А с использованием указанного
выставления переменной все становится очень аккуратно,
например:
#action {^Вы хотите есть} {#if {$fight=0} {get хле
сум;eat хле}} {5}
-
АВТОПАРИРОВАНИЕ.
Лучше включать его только если парирование у вас хорошо
раскачано, иначе оно будет мешать реагировать на
изменение ситуации. Конечно, когда вам ничего не
угрожает, автопарирование не помешает.
#action
{Вам не удалось парировать} {парировать}
#alias {автопарри}
{#action {Вам
не удалось парировать} {парировать};
#showme !!-->
Автопарирование включено<--!!;
#hotkey
{Shift+F2}{стоп_парри}}
#alias {стоп_парри}
{#unaction {Вам
не удалось парировать};
#showme !!-->
Автопарирование отключено<--!!;
#hotkey
{Shift+F2}{автопарри}}
-
АВТОУКЛОНЕНИЕ.
#action
{Вы не смогли уклониться} {уклон}
#alias {автоуклон}
{#action {Вы
не смогли уклониться} {уклон};
#showme !!-->
Автоуклонение включено<--!!;
#hotkey
{Shift+F2}{стоп_уклон}}
#alias {стоп_уклон}
{#unaction {Вы
не смогли уклониться};
#showme !!-->
Автоуклонение отключено<--!!;
#hotkey
{Shift+F2}{автоуклон}}
-
ВОРОВСТВО.
#alias
{трен_укр %1} {дать 100 монет %1; укр монет %1;
#act {Вам не
удалось} {укр монет %1};
#act {Браво}
{укр монет %1};
#act {Вам
удалось} {укр монет %1};
#act {Вас
засекли} {укр монет %1}}
#alias {стоп_укр}
{#unact {Вам
не удалось}; #unact
{Браво}; #unact
{Вам удалось}; #unact
{Вас засекли}}
-
ДЕЛЕЖ ДЕНЕГ В ГРУППЕ (80% )
Вопрос дележа 80%
подобранных денег (вопрос поставленный танком, для
удержания 20% на ремонт шмота):
#act {^Вы взяли из
трупа %1 моне%2, там было %3 моне%4.} {#math tempcoins
$3*8/10;делитьбабки}
Как мы помним, результат операций с переменными у нас
завершается после обработки всего макроса, поэтому далее
мы заводим алиас макрос который и будет делить те самые
80% от полученного:
#alia {делитьбабки} {разделить $tempcoins}
УРОК ПО НАСТРОЙКЕ
КЛИЕНТА
Самое
простое в настройке клиента - это настроить хоткеи. Если
играете несколькими персонажами разных классов, обязательно
создайте отдельный набор хоткеев (hotset) для каждого из них.
Вот моя раскладка:
F1 - бежать
F2 - рекол (зачитывание возврата, описано
ниже)
F3 - смотреть
F4 - оглядеться
F5 - помочь
F6 - #if {$sleep=1} {просн};встать
{переменная $sleep описана ниже}
F7 - лут1 (подбирание вещей из трупа,
описано ниже)
Ctrl-R - #con rmud.net.ru
4000
Ctrl-Z - #zap
Ctrl-1 - пк1 (действие, зависящее от класса,
описано ниже)
Ctrl-2 - пк2 (действие, зависящее от класса,
описано ниже)
Ctrl-3 - пк3 (действие, зависящее от класса,
описано ниже)
Shift-F1 - пкилл (подготовка к пкиллу,
описано ниже)
Shift-F2 - вст_вкл (автовставание, описано
ниже)
Shift-F4 - экипировка
Shift-F5 - готов
Shift-F6 - отдых
Shift-F7 - лут (дележ подобранных денег,
описан ниже)
Shift-F8 - группа
Клавиши на кейпаде - передвижение
Теперь
основные хоткеи для каждого класса:
Воин
F8 - сбить;встать
F9 - парировать
F10 - обезоружить
Alt-1,2,3... - спасти <имя члена группы>
Ctrl-[ - баш (одевание щита, описано ниже)
Ctrl-] - дуал (снимание щита, описано ниже)
Shift-F3 - автопарри (автопарирование,
описано ниже)
Жрец
F8 - колд "леч смерт ран" я (или легких,
или тяжелых, пока нету смертельных)
F9 - колд "снятие усталости" я
F10 - запомнить
Alt-1,2,3... - колд "леч смерт ран" <имя
члена группы>
Маг
F8 - колд "конус холода"
F9 - колд "кислотный всплеск" (заклинания
зависят от уровня мага)
F10 - запомнить
Вор
F9 - уклониться
Shift-F3 - автоуклон (автоуклонение,
описано ниже)
Shift-F4 - сник (автоматическое хождение в
тени, опсиано ниже)
~ - прятаться
2. Еда и питье
Автоматизировать еду/питье - это первая мысль, которая
обычно приходит на ум, когда разбираешься в настройках
клиента:
#alias
{еда} {взять хлеб сундук}; #2 {есть хлеб}}
#alias {питье} {взять мех сундук #2 {пить
мех}; пол мех сундук}
#action {^Вы хотите есть} {еда}
#action {^Вы хотите пить} {питье}
Эти
алиасы можно сделать более универсальными:
#var
{food} {хлеб}
#var {water} {мех}
#var {cont} {сундук}
#alias {еда} {#2 {взять $food $cont}; #2
{есть $food}}
#alias> {питье} {взять $water $cont; #2
{пить $water}; пол $water $cont}
Вытаскивание чего-нибудь из контейнера и складывание обратно
- очень часто повторяющиеся операции, поэтому логично их
немного упростить:
#alias
{взк %1} {взять %1 $cont}
#alias {полк %1} {пол %1 $cont}
Установку переменной $food можно связать с покупкой еды:
#alias
{куп_еда %1} {#var food %1;куп 10*$food;
полк все.$food}
Для
удобства наполнения контейнера с водой можно сделать такой
алиас:
#alias
{пф %1} {#2 пить %1; взк $water; наполнить $water %1; полк
$water}
где %1
- фонтан, колодец и т. п.
Замечу, что вышеописанные триггеры не работают, когда
персонаж спит. Эту проблему можно решить следующим способом.
Добавить несколько триггеров:
#var {sleep} {0}
#action {Вы легли и заснули} {#var
sleep {1}}
#action {Вы заснули} {#var
sleep {1}}
#action {Вы проснулись} {#var
sleep {0}}
#action {разбудил%1 вас} {#var
sleep {0}}
И
модифицировать триггеры еды/питья:
#action
{^Вы хотите есть} {#if {$sleep=1} {просн;
еда; спать}; #if {$sleep=0} {еда}}
#action {^Вы хотите пить} {#if
{$sleep=1} {просн; питье; спать}; #if
{$sleep=0} {питье}}
И
последнее. Иногда эти триггеры нужно бывает отключить, чтобы
избежать излишнего спама:
#alias
{еда_выкл} {#gag {Вы хотите есть};
#gag {Вы хотите пить}}
#alias {еда_вкл} {#ungag
{Вы хотите есть}; #ungag {Вы хотите пить}}
3. Предметы
В
предыдущем разделе были описаны алиасы для вытаскивания
предметов из контейнера. Вот еще несколько алиасов,
упрощающих использование предметов. Во-первых, я советую
завести отдельный одеваемый на тело контейнер для свитков,
источников света, денег и тому подобной мелочи. Из такого
контейнера нельзя ничего украсть:
#var
{cont1} {сумка}
#alias {полкб %1} {пол %1 $cont1}
#alias {взкб %1} {вз %1 $cont1}
Воину жизненно
необходимы следующие алиасы:
#var
{offhand} {меч}
#var {held} {свиток}
#var {weapon} {ятаган}
#alias {баш} {убр $offhand; взк щит; взкб
$held; дер $held; од щит; полк $offhand;#var
tankmode 1}
#alias {дуал} {убр щит; убр $held; взк
$offhand; дер $offhand; полк щит; полкб $held;#var
tankmode 2}
В принципе, можно
обойтись без $held и $tankmode.
Починка:
#alias
{чт}
{убр $weapon; чин $weapon; воо $weapon;
#if {$tankmode=1} {взк $offhand; чин
$offhand;полк $offhand;};
#if {$tankmode=2} {убр $offhand; чин
$offhand; дер $offhand;}
}
#alias {чш1} {сн кол; сн шл; сн нару; сн
поно; сн сап; сн рук; сн щит; сн пояс}
#alias {чш2} {чин кол; чин шл; чин нару;
чин поно; чин сап; чин рук; чин щит; чин пояс}
#alias {чш} {чш1; чш2; од все}
Таким
образом чинятся только основные предметы, а для всяких
колец, браслетов и т. п. (так как их обычно немного)
используется другой алиас:
#alias
{чв %1} {снять %1; чинить %1; одеть %1; воор %1; держ %1}
Свет:
#alias
{одсв} {взкб свет; од свет}
#alias {убрсв} {убр свет; полк1 свет}
Магические предметы:
#alias
{моло} {взкб молочный; осуш молочный}
#alias {инвиз1 %1} {убр $offhand; взкб пал;
дер пал; взмах пал %1; убр пал; дер $offhand; полк1 пал}
#alias {рекол %1} {взкб возвр; зачит возвр
%1; дер $offhand}
Осмотр контейнеров:
#alias
{осмк} {осм $cont}
#alias {осмкб} {осм $cont1}
Деньги:
#alias
{взм} {взкб все.монет}
#alias {полм} {полк $coins монет}
Здесь
$coins - текущее количество денег. К сожалению, JMC не может
взять его из строки состояния, поэтому пришлось извратиться
- перед тем, как положить деньги в сумку, выполняется
команда "счет" и срабатывает следующий триггер:
#action {У Вас есть %1 %2.} {#var
coins %1}
4.
Замена и подсветка
В
основном, замена используется для выделения важной
информации среди всего получаемого текста. Например:
#substitute
{Вы почувствовали просвещение}
{!!--> Вы почувствовали просвещение <--!!}
#substitute {Пожалуй, Вам стоит посетить
гильдию}
{!!--> >>>>>>> Пожалуй, Вам стоит посетить гильдию <<<<<<<
<--!!}
#highlight {light cyan} {Вы почувствовали
просвещение}
#highlight {light green} {Пожалуй, Вам
стоит посетить гильдию}
К этому я бы еще
добавил такие триггеры:
#action
{Вам стоит посетить гильдию} {#bell}
#action {Вы почувствовали просвещение}
{#bell}
Сообщения об окончании
или начале действия заклинаний:
#highlight
{light magenta} {!!-->}
#highlight {light magenta} {<--!!}
#substitute {покалывание в глазах
прекратилось}
{!!--> Видение невидимых закончилось <--!!}
#substitute {Закончив полет, Вы плавно
опустились на землю.}
{!!--> Полет закончился <--!!}
#substitute {Ощущение праведности прошло}
{!!--> Благословление закончилось <--!!}
#substitute {Вы почувствовали, как магия,
удерживающая Вас, рассеялась!}
{ХОЛД ПРОШЕЛ !!!}
#substitute {Ваши глаза перестали видеть!}
{!!--> ВЫ ОСЛЕПЛИ <--!!}
#substitute {Вы замерли на месте, не в
силах шелохнуться!}
{!!--> ВАС ЗАХОЛДИЛИ <--!!}
#highlight {light red} {ВАС ЗАХОЛДИЛИ}
#highlight {light red} {ВЫ ОСЛЕПЛИ}
#highlight {light green} {ХОЛД ПРОШЕЛ !!!}
И еще несколько:
#substitute
{Вы попытались %1 но промахнулись}
{Вы попытались %1 но ПРОМАХНУЛИСЬ}
#substitute {Вам не удалось
сконцентрироваться!}
{Вам НЕ УДАЛОСЬ СКОНЦЕНТРИРОВАТЬСЯ!}
#highlight {light red} {Вы не удержали
равновесия и упали!}
#highlight {cyan} {Вам лучше встать на
ноги!}
#highlight {light green} {%1 сказал%1
группе: "%2"}
#highlight {yellow} {Вы попытались %1, но}
#highlight {light red} {ПРОМАХНУЛИСЬ}
#highlight {light red} {НЕ УДАЛОСЬ
СКОНЦЕНТРИРОВАТЬСЯ!}
Сообщения о состоянии
других:
#substitute
{%1 замер на месте!} {%1 -- ЗАХОЛДЕН!--}
#highlight {light red} {%1 -- ЗАХОЛДЕН! --}
#substitute {%1 замерла на месте!} {%1
--ЗАХОЛДЕНА! --}
#highlight {light red} {%1 -- ЗАХОЛДЕНА!
--}
#substitute {%1 поднялся на ноги!} {%1 --
ВСТАЛ! --}
#highlight {light red} {%1 -- ВСТАЛ! --}
#substitute {%1 поднялась на ноги!} {%1 --
ВСТАЛА!--}
#highlight {light red} {%1 -- ВСТАЛА! --}
#substitute {%1 ослеп!} {%1 -- ОСЛЕП! --}
#highlight {light red} {%1 -- ОСЛЕП! --}
#substitute {%1 ослепла!} {%1 -- ОСЛЕПЛА!
--}
#highlight {light red} {%1 -- ОСЛЕПЛА! --}
Состояние группы (imho
самое нужное из всего здесь описанного):
#highlight
{light green} { Сидит }
#highlight {light green} { Отдыхает }
#highlight {light green} { Спит }
#highlight {red} { Истощ }
#highlight {yellow} { Устал }
#highlight {light green} { Отдохн }
Направления:
#highlight
{light green} {на север}
#highlight {light green} {на восток}
#highlight {light green} {на юг}
#highlight {light green} {на запад}
#highlight {light green} {наверх}
#highlight {light green} {вниз}
5. Настройки для разных классов
Во-первых, если вы имеете несколько персонажей, очень удобно
сделать алиасы, изменяющие настройки под конкретного
персонажа:
#alias
{воин}
{
#var {name} {Гонхиррим}; (имя)
#hotset warrior; (набор хоткеев)
#var {cont} {сун}; (контейнер)
#var {cont1} {сум}; (дополнительный
контейнер)
#var {food} {хлеб}; (пища)
#var {water} {боч}; (контейнер для
воды)
#var {weapon} {узорчатый}; (основное
оружие)
#var {offhand} {топорик}; (офхенд)
#var {held} {возвр}; (предмет во вторую
руку)
#var {class} {1} (класс)
}
#alias
{клерик}
{
#var {name} {Маркус};
#hotset cleric;
#var {cont} {сун};
#var {cont1} {сум};
#var {food} {хлеб};
#var {water} {боч};
#var {weapon} {булава};
#var {offhand} {0};
#var {held} {шар};
#var {class} {2}
}
Воин.
Защита от
обезоруживания:
#action
{%1 выбил} {вз $weapon; воо $weapon;}
Автопарирование. Лучше включать его только если парирование
у вас хорошо раскачано, иначе оно будет мешать реагировать
на изменение ситуации. Конечно, когда вам ничего не
угрожает, автопарирование не помешает.
#action
{Вам не удалось парировать} {парировать}
#alias {автопарри} {#action
{Вам не удалось парировать} {парировать};
#showme !!--> Автопарирование
включено<--!!; #hotkey
{Shift+F2}{стоп_парри}}
#alias {стоп_парри} {#unaction
{Вам не удалось парировать};
#showme !!--> Автопарирование
отключено<--!!; #hotkey
{Shift+F2}{автопарри}}
Для
удобства использования включение и выключение
автопарирования повешено на одну кнопку, при нажатии которой
происходит ее переопределение на другой алиас.
Тренировка на
манекенах:
#alias
{трен_баш} {#action {Вы встали} {сбить};#action
{Вы сбили} {сбить}}
#alias {стоп_баш} {#unaction
{Вы встали};#unaction {Вы сбили}}
Выслеживание. Раньше, когда умение "выследить" работало
иначе, можно было написать триггеры, которые автоматически
находили цель. К сожалению, сейчас это уже невозможно :( и
для упрощения выслеживания осталась всего пара команд.
#var
{track} {}
#alias {трек %1} {#var
track %1; высл %1}
#action {Неожиданно след оборвался} {высл
$track}
#action {Чтобы двигаться в этом
направлении} {высл $track}
Вор.
По
умолчанию, "зак" является сокращением от команды "закрыть",
которая используется неизмеримо реже, чем "заколоть". Это
безобразие необходимо исправить:
#alias
{зак %1} {прят; заколоть %1}
Постоянное хождение в тени. В hotset для вора на стрелках
кейпада прописаны команды такого типа: #if
{$sneak=1} {красться с}; #if {$sneak=0} {с}
#alias
{сник} {#var sneak 1;#showme !!-->
Авто-sneak включен<--!!; #hotkey {Shift+F4}
{сник_стоп} }
#alias {сник_стоп} {#var
sneak 0;#showme !!--> Авто-sneak отключен<--!!;
#hotkey {Shift+F4} {сник}}
Автоуклонение. См. мои
замечания по поводу автопарирования.
#action
{Вы не смогли уклониться} {уклон}
#alias {автоуклон} {#action
{Вы не смогли уклониться} {уклон};
#showme !!--> Автоуклонение включено<--!!;
#hotkey {Shift+F2}{стоп_уклон}}
#alias {стоп_уклон} {#unaction
{Вы не смогли уклониться};
#showme !!--> Автоуклонение отключено<--!!;
#hotkey {Shift+F2}{автоуклон}}
Тренировка. Сумма
зависит от раскачанности скилла :)
#alias
{трен_укр %1}
{дать 100 монет %1; укр монет %1;
#act {Вам не удалось} {укр монет %1};
#act {Браво} {укр монет %1};
#act {Вам удалось} {укр монет %1};
#act {Вас засекли} {укр монет %1}
}
#alias {стоп_укр} {#unact
{Вам не удалось}; #unact {Браво};
#unact {Вам удалось}; #unact {Вас
засекли}}
Для
вора и ассасина также неплохо бы написать триггеры,
позволяющие заколоть жертву, убежать, оглянуться, определить
направление, в котром убежали и вернуться. А также триггеры
для движения за убегающим.
Я никогда не участвовал в пкилле вором и надобности в них у
меня не было.
Кастеры.
При игре кастером
необходимо создать алиасы для каждого заклинания, например:
#alias
{леч %1} {колд "лечение смертельных ран" %1}
#alias {блинд %1} {колд "слепота" %1}
#alias {холд %1} {колд "паралич человека"
%1}
#alias {чарм %1} {колд "очарование
человека" %1}
Приводить полный список своих алиасов я не буду, тут все
очень просто.
Приведу только отличающиеся от других:
#alias
{пища} {колд "создание пищи"; полк весь.хлеб}
#alias {корм %1} {колд "создание пищи";
дать весь.хлеб %1}
#alias {свет} {колд "свет"; дер шар}
Магам также нужны
следующие алиасы для управления чармисами:
#alias
{.. } {приказ все}
Точки можно заменить
на любую другую команду, но мне нравится так.
#alias
{чвст} {приказ все просн;приказ все встать}
#alias {учарм %1} {приказ все уб %1;холд
%1}
#alias {вч %1} {дать ят %1;дать длин
%1;приказ %1 воо ят;приказ %1 дер длин}
6.
Разное
Looting.
#var
{loot} {0}
#alias {лут} {делить $loot; #var
loot 0}
#alias {лут1} {#var loot
0; вз все все.труп; вз все.монет}
#action {Там было %1} {#var
loot %1}
Такая
хитрая конструкция с одной стороны неудобна, потому что
требует нажатия двух кнопок вместо автоматического
подбирания, но с другой стороны она позволяет подобрать
деньги, которые не нужно делить и защищает от известного
прикола "Такой-то сказал: "Там было 10;конец; монет"".
Автовставание.
#var
{stand} {1}
#var {autostand} {1}
#alias {вст_вкл} {#var
autostand 1;#showme !!--> Автовставание
включено<--!!; #hotkey
{Shift+F3}{вст_выкл}}
#alias {вст_выкл} {#var
autostand 0;#showme !!--> Автовставание
отключено<--!!; #hotkey
{Shift+F3}{вст_вкл}}
#action {Вы не удержали равновесия и упали}
{встать}
#action {Вы полетели на землю от мощного
удара %1} {#if {$autostand=1} {встать}}
#action {Вам лучше встать на ноги} {#if
{$autostand=1} {встать}}
#action {для начала встать на ноги} {#if
{$autostand=1} {встать}}
Как и
прочие авто-, эту функцию лучше отключать, когда требуется
внимательно следить за обстановкой и успевать реагировать.
Реакция на заклинания.
#action
{Видение невидимых закончилось} {#if
{$pk=1} {моло}}
#action {ВЫ ОСЛЕПЛИ} {#var
panic {БЛИНД}; #if {$class=2} {к "сн слеп"
я}; #if {$class=1} {гг $panic !!};
#if {$class>2} {гг $panic !!}}
#action {ВАС ЗАХОЛДИЛИ} {#var
panic {ХОЛД}; гг $panic !!}
#action {Полет закончился} {#if
{$class<4} {вск я}}
#action {Ваше тело уменьшилось} {#if
{$class<4} {гг я уменьшился}}
#alias {хелп} {gt $panic !!}
Тут
можно наворотить очень много, но не стоит делать реакцию на
сообщения других, типа #action {%1 сказал
группе: "БЛИНД !!"} {к "сн слеп" %1},так как вас опять же
можно заставить выполнить команду "конец", написав
соотвествующую фразу.
ПКилл.
Включение-выключение
#var
{pk} {0}
#alias {пкилл} {#showme
!!--> Kill! Kill! Kill! <--!!; #hotkey
{Shift+F1}{пкилл_стоп};
вст_выкл;стоп_парри;стоп_уклон; #var pk 1;
#act {R.I.P} {лут1; полк все;лут1};
#if {$class=1} {пк_танк}; #if
{$class=2} {пк_клерик};
#if {$class=3} {пк_вор}; #if
{$class=4} {пк_маг}}
#alias {пкилл_стоп} {#showme
!!--> Война окончена <--!!; #hotkey
{Shift+F1} {пкилл};
вст_вкл; #var pk 0; #unact
{R.I.P}; #array_del targlist}
Настройки для разных
классов:
#alias
{пк_танк} {#alias {пк1} {сбить $target};#alias
{пк2} {трек $target}}
#alias {пк_клерик} {#alias
{пк1} {блинд $target};#alias {пк2} {молч
$target}}
#alias {пк_вор} {#alias
{пк1} {закол $target};#alias {пк2} {закол
$target;беж}}
#alias {пк_маг} {#alias
{пк1} {холд $target};#alias {пк2} {учарм
$target}}
Установка цели.
#alias
{цель %1} {#var target %1; #if
{$class=1} {пк_танк}; #if {$class=2} {пк_клерик};
#if {$class=3} {пк_вор}; #if
{$class=4} {пк_маг}; #showme "-- Цель - %1
--"}
Рассыпание.
Чрезвычайно полезный
триггер.
#alias {дикей} {#var
decayed}
#action {%0 рассып%1 в пыль в Ваших руках}
{#var decayed %0}
#action {%0 развал%1 на куски} {#var
decayed %0}
Тикер.
#ticksize
60
#tickon
#action {^Окончив занятия} {#tickset}
Также стоит добавить #tickset в триггеры
еды и питья.
Иногда полезно:
#action
{Вам необходимо еще %1 %2} {#var tnl %1}
#alias {дсу} {счет; гг $tnl}
#action {Вы взяли метлу} {брос метла}
#action {Вы взяли ножницы} {брос ножницы}
#action {Вы взяли трениров%1} {брос трен}
#alias {пент} {дать 25 монет кронт; дать 25
монет глот; встать круг}
#alias {рек} {#zap; #con
rmud.net.ru 4000; 3; $name}
Руководство
по автомэпперу для MUD клиента JMC версий 3.00 и старше.
Введение.
Данный автомэппер представляет собой построитель карты
для MUD клиента JMC версий 3.00 и старше. Особенностями
данного автомэппера являются:
- простота эксплуатации – комплект файлов настроек
обеспечивает автоматическое подключение, загрузку
сохраненной карты и дальнейшее построение карты. При
выходе из мада производится запоминание позиции и
сохранение карты.
- Минимальные требования к действиям игрока во время
построения карты – игрок может передвигаться по зоне с
любой скоростью, сражаться, разговаривать, следовать за
лидером группы и т.д. Как правило, игрок не должен
следить, что делает автомэппер. Исключение составляют
особые ситуации (потеря положения при зачитываниии
свитка возврата, манипуляции с входами по триггеру и т.д.),
речь о которых пойдет ниже.
- Построенная карта отображается очень наглядно, что
позволяет быстро сориентироваться на местности J и легко
ее запомнить.
- Мэппер прекрасно справляется с работой в условиях
лагов.
- Мэппер имеет минимум настроек. Настройки для каждого
мада хранятся в файлах *.jms и представляют собой всего
несколько строчек
На данный момент автомэппер еще находится в стадии
тестирования. Поэтому, если Вы считаете что-либо в нем
неудобным, Вам не ясны какие-то моменты в документации,
то пишите mailto: olegmmm@mail.ru или обращайтесь к чару
Эльодил онлайн – я учту Ваши замечания.
Установка.
Автомэппер поставляется в Self-Extracting архиве. В нем
находятся следующие папки:
- Mapper – сам автомэппер (JMCMap.dll) и файл для
регистрации автомэппера в системе install.bat.
- settings – здесь находится та часть файлов настроек
для JMC, которая должна хранится в папке jmc\settings.
- Файлы настроек для JMC, файлы настроек для мэппера и
данная документация хранятся в корневом каталоге архива.
В комплект входят файлы настроек для Адаманта и Сферы
миров (SOW) ) и min.set в котором находится минимум
настроек, необходимых для функционирования мэппера.
Сначала необходимо распаковать файлы из архива в папку
jmc таким образом, чтобы файлы из корневого каталога
попали непосредственно в папку jmc, файлы из каталога
settings попали в каталог jmc\settings. После этого
необходимо зайти в папку Mapper и запустить install.bat.
Install.bat регистрирует мэппер в системе. Если
регистрация прошла успешно, то появится следующая
табличка:
Если она не появилась (хотя должна в 99% появляться), то
зайдите Пуск->Выполнить (Start->Run) и введите:
regsvr32 c:\jmc\mapper\jmcmap.dll
где c:\jmc\mapper\ - путь до файла jmcmap.dll.
Далее заходите в клиент, загружайте необходимый сет,
подключайтесь к маду, и мэппер начнет свою работу.
Требования.
- Для работы автомэппера необходима версия JMC 3.00 и
старше (желательно последняя версия).
- Для устойчивой работы в условиях лагов необходимо
поставить параметр Unfinished string delay на значение
порядка 500. После чего включить в маде режим ГА. Внешне
ничего не изменится, но при лагах JMC будет не сразу
отдавать строку на обработку, а дождется ее завершения,
причем ждать завершения строки он будет столько мс,
сколько Вы укажете в параметре. Если данного параметра у
Вас нет, то необходимо скачать HotFix 3.26 с jmc.mud.ru.
- В маде необходимо включить режимы цвет полный и
автовыходы.
- Для комфортной работы желательно разрешение 1024х768 и
выше.
Работа автомэппера.
После подключения к маду сет инициализирует мэппер,
загрузит карту и установит ваше положение на карте в том
месте, где Вы в последний раз ушли на постой. После
этого Вы можете перемещаться по миру, и автомэппер будет
достраивать карту. Перемещаться можно как русскими, так
и английскими командами (сокращать команды можно). Для
просмотра построенной карты нажмите клавиши Ctrl+Tab.
Откроется окно, в котором Вы можете увидеть построенную
карту и Ваше положение на ней. Вы можете прокручивать
карту, пользуясь полосками скроллинга или клавишами
курсора. Клавишами "-" и "+" Вы можете изменять масштаб
отображения карты. Щелкнув по любой комнате, Вы вызовете
еще одно окно, в котором Вы можете увидеть название
комнаты, ее описание и кнопки для взаимодействия с этой
комнатой. Чтобы убрать окно автомэппера нажмите Ctrl+Tab
еще раз.
Зоны и перекрывающиеся комнаты.
Во время эксплоринга Вы будете пермещаться по разным
зонам. Как известно, комнаты разных зон могут
перекрывать друг друга, если попытаться построить карту
в клеточной структуре. Также такое перекрытие может
произойти и внутри некоторых зон. Рассмотрим следующие
примеры:
На западе от «Магазина Сайбоса» расположена другая зона:
Легко видеть, что если мы пойдем на запад от «Дома
Сайбоса» в новую зону, а там - на юг, то комнаты южнее «Возле
дома Сайбоса» будут перекрывать комнаты на «Улице
цветочной». Как только мэппер обнаружит это, он выдаст
соответствующее сообщение. Поэтому, после входа в новую
зону нужно указать ее границы. Например, в данном случае
нужно указать новую зону на востоке от «Возле дома
Сайбоса» или, если хотите, на западе от «Магазина
Сайбоса». Как это сделать смотрите ниже.
Внимание! Когда Вы видите, что одна комната перекрыла
другую – это перекрытие при прорисовке карты. Одна
комната просто рисуется поверх другой, но НЕ затирает ее.
Когда Вы установите начало зоны, все встанет на свои
места.
Окно просмотра.
Окно автомэппера имеет следующий вид и обозначения:
Текущее положение
Выход в другую зону
Непроэксплоренная комната
Выход вверх
Если Вы щелкнете по значкам, означающим переход в другую
зону или на другой этаж, то автомэппер перейдет в режим
просмотра другой зоны/другого уровня.
Если же Вы щелкнете не по значку, а в пустом месте
комнаты, то появится диалог параметров комнаты.
Параметры комнаты.
Здесь Вы можете просмотреть название, описание и выходы
комнаты. С помощью кнопок Вы можете совершать различные
операции с данной комнатой:
Установить здесь
Если Ваш автомэппер потерял текущее положение и
находится в режиме ожидания, то Вам необходимо вручную
установить текущее положение на карте. Для этого
щелкните по комнате, а затем нажмите на эту кнопку.
Существуют следующие причины потери положения
автомэппером:
- Зачитывание свитка возврата
- Убегание из боя
- Следование за невидимым или в темноте
- Ошибки самого автомэппера (куда уж деваться J)
- Что-нибудь еще, возможно…
Спидволк сюда
При нажатии на эту кнопку автомэппер найдет путь от
текущей комнаты до указанной и пошлет необходимые
команды на сервер.
Вход по триггеру
Иногда вход в комнату осуществляется не командами
передвижения а по ключевому слову. В таких случаях, в
комнате где есть такой переход необходимо нажать на эту
кнопку и ввести следующие параметры:
- Установить здесь вход по триггеру – поставить галочку.
- Ответ триггера – ввести здесь строку, которую
присылает сервер в ответ на правильную ключевую фразу (например,
для входа в зону «Деревенский колодец» это строчка «Вы
прыгнули в колодец.»).
- Триггер – сама ключевая фраза (например, для входа в
зону «Деревенский колодец» нужно набрать «прыгнуть»).
- Выход – необходимо установить направление комнаты, в
которую входим по триггеру (для колодца это «вниз»).
После чего нажимаете ОК и вход по триггеру готов.
Кнопка «поймать ответ» посылает на сервер ключевую фразу
и записывает ответ в соответствующий параметр. Нужно
пользоваться этой возможностью осторожно т.к. она не
всегда работает правильно.
Начало зоны
Когда Вы заходите в новую зону необходимо указать ее
начало. Иначе комнаты зон будут накладываться друг на
друга при построении карты. Когда мэппер обнаружит это,
он сообщит Вам. Щелкните мышкой по комнате, которая
граничит с другой зоной и укажите направление новой зоны.
Удалить комнату
Данная кнопка позволяет удалить комнату. Если какие-то
комнаты будут связаны только с удаляемой, то они тоже
будут удалены, если Вы подтвердите их удаление.
Например, при удалении комнаты «Вход в казармы» будут
также удалены «Казармы», «Гильдия Следопытов» и «Гильдия
Воинов».
Найти комнату
При нажатии этой кнопки осуществляется поиск комнаты,
как по названию, так и по номеру.
Изменить размер
В некоторых зонах возможны ситуации, аналогичные
показанной на рисунке:
Как видим, здесь 4 комнаты на севере соеденены с 2
комнатами на юге. В подобных случаях нужно изменить
размер одной или нескольких комнат, нажав на кнопку «Изменить
размер».
Связать уровни
Для некоторых зон в несколько этажей возможно
несовпадение в горизонтальной плоскости переходов с
одного этажа на другой (например, мы идем вверх, а на
верхнем этаже оказываемся не выше клетки, откуда мы
пришли, а на несколько клеток севернее). Также возможны
ситуации, когда выход вверх ведет не на один этаж выше,
а на 2 или 3. В таких случаях используйте опцию «Связать
уровни». Тогда Вы сможете вручную связать выход вверх
или вниз на одном этаже с выходом вниз или вверх,
соответственно, на другом.
Файлы настроек.
Управление автомэппером осуществляется при помощи файлов
настроек. В комплект входят файлы настроек для мадов
Адамант: мир колец и Сфера миров (мэппер также удачно
тестрировался в Былинах, вполне возможно, он будет
работать и у Линдира).
Файлы настроек для JMC
Файлы настроек для JMC состоят из файлов *.set,*.opt и
*.scr. В файлах *.set содержатся триггеры, алиасы и
горячие клавиши. Определены следущие элементы для работы
с автомэппером:
Алиасы:
мэп_сохр и мэп_загр – сохранение и загрузка карты
соответственно.
Триггеры (Actions):
Два триггера для определения времени входа в игру и
ухода на постой – инициализуруют (деинициализируют)
автомэппер и загружают (сохраняют) карту.
Горячие клавиши:
F9 – перевести мэппер в режим ожидания. Это иногда
необходимо сделать, чтобы мэппер перестал мэпить зоны, в
которых он постоянно ошибается.
F10 и F11 – инициализация и деинициализация мэппера. Как
правило, мэппер делает это автоматически при входе в мад
и уходе на постой, так что нет особой необходимости
пользоваться этими клавишами.
Alt+C – горячая клавиша для подключения к серверу. Если
сервер поддерживает протокол сжатия, то необходимо
сначала запустить MCC клиент.
В файле *.sсr происходит создание объекта автомэппера,
его инициализация / деинициализация. Кроме этого, в
файле *.scr начинается лог в формате ANSI colors с
именем типа Январь_19_15-00.log. Формат ANSI colors
позволяет тестировать триггеры, строить карту оффлайн
при помощи Mud Emulator. Лог ANSI colors легко перевести
как в текстовый, так и в HTML формат при помощи программ,
которые Вы можете скачать с сайта Адамант: Мир колец в
разделе Ресурсы.
Файл настроек для мэппера
Файл настроек мэппера имеет расширение *.jms и
представляет собой текстовый файл, в котором записаны
строки, регулирующие работу мэппера в различных
ситуациях:
***Отмена движения*** - строки, сообщающие о
невозможности команды движения.
***Потеря положения*** - строки, получив которые, мэппер
должен перейти в режим ожидания и прекратить построение
карты.
***Игнорируемые строки*** - это строки, которые приходят
неожиданно (теллы, например) и имеющие такой же цвет,
как и цвет названия комнаты.
***Строка списка*** - командная строка для управления
списком.
КРАТКО О ГЛАВНОМ!
ALIASES По оприделению - псевдоним вроде. В данном
контексте алиас - оприделяемая пользователем команда
(как правило минимальной длины и максимально
запоминающаяся), вместо которой серверу отправляется
одна или, скорее всего, больше :-) команд, которые
набирать руцями лениво и, порой, некогда.
Синтакс: #alias {команда} {псевдоним}. В zMUD набираем в
командной строке нужную нам команду, например взять хлеб
рюкзак; есть хлеб, затем нажимаем Ctrl+A, набираем жрать
и ОК. Теперь если вы захотите покушать хлебца,
достаточно набрать жрать.
Второй вариант: набираем #ALI {жрать} {взять хлеб
рюкзак; есть хлеб}. Результат тот же самый. Этот вариант
сработает и в JMC.
VARIABLES Переменные. В переменных мы сохраняем
данные, которые впоследствии используются в алиасах,
триггерах и т.п.
Синтакс: #variable {name} {value}. Например, вернемся к
нашему хлебушку :-). Команда остается, а рюкзак вы
пропили, купили кулек. Хлеба небыло, взяли колбасу.
Вводим переменные контейнер и хавчик. Теперь выглядит
так: #ALI {жрать} {взять @хавчик @контейнер; есть @хавчик}.
Зададим значения переменных: #variable {контейнер}
{кулек}; #variable {хавчик} {колбаса}. Теперь алиас
работает тот же, но не прийдется его переписывать, если
вместо колбасы будет каша, перепишем переменную хавчик.
Важный момент: динамические переменные, %0-%9, также
имеют место, и очччень обширное.
Например: имеем #ALI {кил} {убить %0; сбить %0}. Пишем в
строке кил Гром. Получаем команды: убить Гром;сбить
Гром.
TRIGGERS (action) Триггера. Позволяют вашему
клиенту самостоятельно реагировать на данные, посылаемые
сервером.
Синтаксис: #action {pattern} {commands to be done}.
Pattern - текст, переданный сервером. Опять к хлебцу.
Пишем следующий триггер: #action {^Вы хотите есть}
{жрать}. Получив сообщение "Вы хотите есть", триггер
запустит алиас жрать. Примечание: знак ^ означает НАЧАЛО
строки. Это важно. Потом расскажу почему ;-)
IF (логическое ЕСЛИ). Используется в составе с
другими операторами.
Синтакс: #if {condition} {commands to do}.
Используем примерно так: введем переменную @combat, со
значением 1 (true) или 0 (false). В момент боя
переменная получит значение 1. Чтобы не спаммить себя в
бою, пишем: #act {^Вы хотите есть} {#if {@combat=0}
{жрать}. Теперь попыток покушать в бою не будет :).
SUBSTITUTE (подстановка). Упрощает жизнь, заменяя
длинные/неприметные сообщения на ваш выбор.
Синтаксис: #substitute {pattern} {text}. Шо это значит и
чем полезно? Предположим, есть у вас враг, некий
Эрнесто. Создаем следующий сабститьюшн: #sub {Эрнесто}
{ЭРНЕСТО (ВРАГ)}. Что мы увидим, когда сервер пришлет
текст "Эрнесто стоит здесь (летает)" - "ЭРНЕСТО (ВРАГ)
стоит здесь (летает)". Полезно для склеротиков или при
спамме, или просто для рассеяных :))
CAPTURE. Чем полезна эта команда? Опять-таки
спасает от спамма и помогает не прощелкать чего-то
нужного. Работает она, чаще всего, так: #act {pattern}
{#CAP wname} Что у нас тут: паттерн - это понятно, wname
- имя создаваемого окошка, куда будет сброшена строка,
содержащая паттерн, как то кто что сказал, крикнул,
продавал и т.п. К примеру: #act {сказал Вам} {#CAP tells}
сбросит в окошко все сообщения типа "Моргион сказал Вам
"Не шали!".
PLAY. Ох, простааая команда, но все гениальное
просто! Проигрывает файл. Рекомендовано всовывать в
триггера на появление врагов, баш и при спаммных
действиях. Звучит, например, так: #act Вам лучше встать
на ноги! #PLAY shuher.wav. Как нетрудно понять, при
сообщении о том, что вы засиделись, бластер заорет :))
COLOR (подкрашивает текст). Вот люблю! Вот юзаю!
Сообщения сервера, конечно, раскрашиваются, но не все, и
не всегда так, как хотелось бы. Тут-то из кустов и
появляется оная командочка. Обилие цветов заманчиво, так
что не перестарайтесь! ;). Работает просто: #CO
attribute pattern. attribute это либо название цвета,
либо его численное значение. Например #ACT плавно
опустился на землю #COLOR red аутентично #ACT плавно
опустился на землю #COLOR 4, и окрасит эту строчку
красным.
CW (аналог COLOR, но отдельное слово, а не
строка). Работает типа #ACT {pattern} {#CW attribute}.
Объяснять не буду. |
|