* DF2 - лучший МАД (MUD) рунета, он-лайн игра в стиле кибер-панк (by GrayMage) * ПОИСК   
 Реклама на ДФ2
 Новости
 | 
 История
 | 
 Новеньким
 | 
 МУД-Жизнь
 | 
 Инфо
 | 
 Файлы
 | 
 Поиск
 | 
 Форум
НОВЕНЬКИМ :: JMC

Для удобной игры в MUD просто необходимо настроить свой клиент, "заточить" его под себя. Ведь не секрет, что если человек столкнется с сложностью управления, он или бросит игру, или будет играть как есть, или попытается улучшить управление. Первый случай - no comments, второй - для людей, не способных на третий, а третий не всегда возможен.

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

Начнем с самого простого и самого нужного. Команды перемещения: north, east, west, south, up и down. Выберем группу клавиш для этого. W, S, A, D, столь излюбленные в шутерах, отпадают сразу - это делает практически невозможным набор других команд. Есть вариант назначить именно эти клавиши, но в сочетании с Ctrl или Alt (а то и с обоими сразу). Далее, стрелки управления курсором. Аналогично, только в сочетании с функциональными клавишами. И, наконец, цифровая клавиатура, так называемый "калькулятор". На мой взгляд (и не только на мой) - идеальный вариант.
После выбора клавиш, начинаем их назначать. Удобнее сделать это в самом клиенте (Внимание! Активным должен быть Ваш .set файл). Но мы же не ищем легких путей? К тому же в клиенте отсутствуют диалоги настройки таких полезных вещей, как переменные или других полезных команд. Итак, открываем Ваш .set файл в любом редакторе "plain text" (банальный Notepad подойдет). В файле должно быть девственно чисто (ну или почти чисто). Итак, переходим в конец файла и добавляем 6 строчек вида

#hot {<клавиша>} {<команда>}
После того, как добавлены клавиши, можно сохранить .set файл и расслабиться.

Итак, у кого как, а у меня в моем .set файле получился следующий текст:

#hot {Ctrl+NUM8} {north;}
#hot {Ctrl+NUM9} {up;}
#hot {Ctrl+NUM4} {west;}
#hot {Ctrl+NUM6} {east;}
#hot {Ctrl+NUM2} {south;}
#hot {Ctrl+NUM3} {down;}
Можно видеть, что для перемещений я избрал группу "Ctrl+клавиши калькулятора".

Теперь можно перейти к командам, также относящимся к группе перемещений, но использующиеся куда как меньше - команды отмыкания (unlock <dir>) и открытия (open <dir>) дверей. Повторяем операции, но назначаем уже другие клавиши, а текст команды будет "unlock <dir>;open <dir>", где <dir> - это направление, north, east, west, south, up или down. У меня получилось следующее:

#hot {Ctrl+Alt+NUM8} {unlock north;open north;}
#hot {Ctrl+Alt+NUM9} {unlock up;open up;}
#hot {Ctrl+Alt+NUM4} {unlock west;open west;}
#hot {Ctrl+Alt+NUM6} {unlock east;open east;}
#hot {Ctrl+Alt+NUM2} {unlock south;open south;}
#hot {Ctrl+Alt+NUM3} {unlock down;open down;}

Ну вот, с горячими клавишами команд, общих для каждого класса, покончено, но можно ещё понавешать огромное количество клавиш, например на "Ctrl+S" можно назначить sacrifice all - это если вы хотите собрать гору серебра.

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

Поскольку я выбрал для системы горячих клавиш цифровую клавиатуру, то и продолжать буду там же. У дварфа-клерика 20-го уровня для боя нашлось два атакующих заклинания (flamestrike и holybolt), навык kick, заклинание лечения (cure critical), заклинание ослепления (false sight) и возможность сбежать (flee); Аккуратно расставляем клавиши. У меня вышел такой текст:

#hot {Alt+MUL} {pray 'false sight';}
#hot {Alt+NUM5} {pray 'holybolt';}
#hot {Alt+ADD} {kick;}
#hot {Alt+NUM0} {pray 'flamestrike';}
#hot {Alt+DIV} {pray 'cure critical';}
#hot {Alt+HOME} {flee;}
Назначайте клавиши так, как будет удобно Вам.

Рассмотрим переменные, одно из важнейших средств усправления. Команда, задающая переменные, не относится к основным, но очень важна: переменные позволяют расширять возможности основных команд. Например, Вы часто используете заклинания на расстоянии или стреляете, или швыряете ножи. И что же, каждый раз писать, например, pray holybolt west.king? Неудобно, медленно. Задать горячие клавиши? А если сменится жертва или основной метод боя? Тут и приходят на помощь переменные.
Разберем "pray holybolt west.king": pray holybolt - это метод, west - направление, a king - цель. Значит, введем две переменные : метод и цель. Направление будет варьироваться в зависимости от клавиши.
Переменная назначается/переназначается командой вида

#variable {<имя переменной>} {<значение>}
Значит, назначаем
#variable {act} {pray holybolt}
#variable {tokill} {king}
И теперь назначаем горячие клавиши, учитывая переменные:
#hot {Alt+NUM4} {$act west.$tokill}
#hot {Alt+NUM6} {$act east.$tokill}
#hot {Alt+NUM8} {$act north.$tokill}
#hot {Alt+NUM2} {$act south.$tokill}
Теперь, если в процессе игры Ваш персонаж получит более мощное средство ведения боя, то достаточно будет только сменить переменную в .set файле. Ну, а сменить цель можно, перезадав переменную tokill. Все равно не слишком коротко? Пожалуй. Но после мы сократим команду переназначения переменной tokill с помощью алиасов.

Перейдем к триггерам. Если горячие клавиши позволяли отправлять серверу текст по действию игрока, то триггеры позволяют делать то же самое, анализируя текст, приходящий от сервера.
ВНИМАНИЕ! В правилах MUD DF2 написано, что триггеры не приветствуются. А мы будем руководствоваться правилами. Ибо с помощью триггеров можно, например, оставить своего чара в недосягаемом месте и заставить его практиковать навыки до изнеможения, не принимая в этом участия.
Мы сделаем только очень простые триггеры (куда после прочтения текста заведет Вас Ваша больная фантазия, я не знаю), помогающие жить.

Например, такие банальные операции, как съедение пирога и питье воды из бурдюка или фляжки или операция по возврату оружия, если Вас обезоружили в бою.

Триггеры назначаются командой

#action {<образец>} {<команда>}
Для заполнения "образца" очень важен язык, на котором вы играете. Если образец начинается с символа "^", то учитывается только начало строки. Например, если образец представляет собой "^Fiona", то триггер сработает при получении любой строчки, начинающейся на "Fiona". Также учитываются переменные %0-%9, назначаемые JMC. Так, если образец="%0 arrives from the %1", то триггер сработает в любой момент, когда кто-нибудь прибудет в комнату. Я играю на английском, и у меня получился такой код:
#variable {canteen} {skin}
#variable {chest} {мешок}
#variable {food} {pie}
#variable {weapon} {mace}
#action {are hungry} {get $food $chest;eat $food} {5} {default}
#action {are thirsty} {get $canteen $chest;drink $canteen;pray 'create water' $canteen;put $canteen $chest;} {5} {default}
#action {DISARMS you} {get $weapon;wear $weapon;} {5} {default}
Также можно назначить безобидные "социалы вежливости", если вы очень ленивы. Например:
#action {%0 waves goodbye to you.} {wave %0} {5} {default}
#action {%0 машет ручкой всем.} {wave %0} {5} {default}
#action {%0 bows before you} {bow %0} {5} {default}
Но я не советую этим злоупотреблять - можно поклониться заклятому врагу, или, что ещё хуже - булочнику! :-)
Можно (с согласия возлюбленного ;-) ) каждый раз, когда видишь его, кланяться ему или дарить розу. Например,
#action {Fiona %0 stays here} {rose fiona; kiss fiona;} {5} {default}
Триггеры опасны для ролеплейщика, например, только что показанный триггер может показать игрока при сбегании из боя либо полным идиотом, либо Терминатором. Если первое для ролеплейщика ещё куда ни шло (зависит от расы и професии), то второе смертельно =)
Обилие же триггеров опасно для любого игрока, ибо в критических ситуациях сервер может получить совсем не ту команду, которрую нужно. Частично от этого можно обезопасить себя, установив приоритеты (третий параметр триггера). Чем меньше цифра, тем больше приоритет. Но установка приоритетов не может полностью обезопасить от неразумных действий, так что будьте осторожны.

Перейдем к алиасам. Алиасы позволяют обрабатывать строки перед отправлением их серверу. C их помощью легко вводить сокращения. Например, лень писать "gossip"? Введите алиас!

#alias {g %0} {gossip %0} {default}
Теперь можно писать просто "g" вместо gossip и не бояться, что сервер Вас неверно поймет. Сокращать можно не только варьирующиеся строки, но и постоянные. Например, можно заменить ":)" на "smile". и очень просто:
#alias {:)} {smile} {default}
Также алиасы позволяют задать процедуры, часто использующиеся последовательности команд. Самый простой пример - задать последовательность шагов от одног пункта до другого. E.g., от Рыночной площади Мидгаарда до арии UnderDark:
#alias {m2u} {6e;10n;open down;down;}
Теперь вернемся к назначению переменной tokill. Легко и просто создаем алиас для переназначения переменной:
#alias {zzz %0} {#variable tokill "%0"}
Теперь можно не задумываясь, менять цели.

Кстати, о целях. Скажем, Вы играете в двух режимах. Режим исследования мира и режим ПК. Когда Вы в режиме ПК, то должны работать, например, триггеры убийства ненавистного Вам персонажа. Когда Вы исследуете мир, эти триггеры работать не должны. Возможное решение - разыменовывать триггеры (unalias). Но если триггеров и других команд несколько, то это довольно долго и неуютно. Для решения подобных проблем были созданы группы команд. Группа указывается четверым параметром команды назначения триггера (есть всегда существующая default, используемая по умолчанию). Так, надо сгруппировать все команды, используемые только для ПК, в группу pk и временами просто разрешать/запрещать группу. Делается это довольно просто:

#alias {pk_off} {#group disable pk}
#alias {pk_on} {#group enable pk}
И легким движением кисти (pk_on) Вы переходите в режим ПК.

Подсветки (highlights). Подсветки работают только в режиме цветовой схемы ANSI и ничего особенного не делают. Подсветки используются в двух случаях - когда надо выделить что-нибудь, чтобы обязательно прочитать, либо когда надо, наоборот, чего-либо НЕ увидеть (хотя для того, чтобы чего-либо НЕ увидеть, используют другую команду). Все просто,

#highlight {<цвет текста>[,b <цвет фона>]} {<текст для подсветки>}
И о том, как чего-либо НЕ увидеть. Например, довольно бесполезные строчки типа "Начался новый день", "Сохранение" и пр. Не хотите читать эту ерунду? Ну ещё бы. Чтобы запретить показ таких строчек, используйте команду gag.
#gag {<Текст>}
Задайте команду для каждого текста, надоедающего Вам и избавьтесь от него.

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

#log <filename> [append/html/overwrite]
filename - имя файла (кстати, можно использовать встроенную переменную $DATE, например, enlogs/$DATE.log), а второй параметр задает параметры записи. overwrite будет каждый раз перезаписывать файл лога, append - добавлять. Оба этих способа результирую лог текстового формата. HTML результирует удобочитаемый html файл, но режим append для HTML недоступен.

Примеры скриптов :


вот скрипт для лута своего трупа после убийства мобом

#variable {myname} {Ennin}
#alias {cd1} {#group enable mycorpse;#group disable mybags}
#alias {cd0} {#group disable mycorpse;#group enable mybags}
#alias {ch1} {#group enable mycorpseext}
#alias {ch0} {#group disable mycorpseext}
#action {The corpse of $myname is lying here.} {take all corpse;wear all;cd0;ch1} {5} {mycorpse}
#action {You see nothing in the corpse.} {cd1;ch0} {5} {mycorpseext}
#action {You get %0 from the corpse of $myname} {cd0;ch0} {5} {mycorpseext}
#action {You have been KILLED!!} {cd1;ch0;stand;#showme Меня убили...} {1} {default}
#group local mycorpse
#group local mycorpseext
#group local default


А вот для restore mana - закл будет использоваться только если текущее кол-во маны меньше, чем максимум-100

#action {%0/%1hp %2/%3m %4mv %5:tnl} {#group disable restoremana;#math {lmana} {%3-100};#if {%%2<$lmana} {#group enable restoremana}}
#action {Ты можешь снова восстановить ману.} {pr 'restore mana' self} {10} {restoremana}
#group disable restoremana

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

#action {%0 waves goodbye to you.} {wave %0} {5} {default}
вы ставите себя в весьма уязвимое положение, потому что игрок, заметивший ваш триггер, может воспользоваться этим:
Fiona говорит тебе: 'Fiona;remove all;drop all;sacr all waves goodbye to you.',
и вот вы послушно снимаете с себя все, выкидываете и приносите в жертву... Естественно, что это можно обойти воспользовавшись командой #nop (команда, которая ничего не делает) с высоким приоритетом:
#multiaction off
#action {говорит} {#nop} {0} {default}
но злоумышленник может написать вам хитрую ноту содержащую строчку
Fiona;remove all;drop all;sacr all waves goodbye to you.
Выводы делайте сами - стоит ли корпеть над конфигом, отлавливая все новые и новые уязвимости, или все же проще самому попрощаться с человеком, всего лишь набрав
wave Fiona?
Решать вам.

Пишите мне письма, ваш GrayMage      

Дизайн: Алексей Крючков
Strategy Gamez by GrayMage
Powered by Degtyarev Dmitriy
  Эта руна тейваз перемещает в самый верх страницы!