Вместо предисловияДоброго вам всем дня, ночи или ещё чего-нибудь. Раз вы читаете эту статью, значит, вы хотите что-нибудь узнать о JMC, я так понимаю... Если нет, то лучше сразу закройте это окно - в литературном плане сие повествование не представляет собой никакой ценности. Те же, кому действительно интересно, имейте в виду, что статья непрофессиональна и может научить чему-то разве что новичка, здесь нет ни слова о скриптах и прочих сложностях, только то, что поможет освоиться неопытному человеку. ПрограммаЧто собой представляет JMC (Jaba mud client)?С виду - незамысловатое окно с консолью, немного напоминает irc-клиент (принцип действия, кстати, очень похож). Действительно вид неброский. Но главное не в этом (человеку, решившему поиграть в текстовую rpg, на красивость клиента, по идее, наплевать), а во всяких настройках, которые программа позволяет легко настроить "под себя". Скачать JMC можно с этого сайта, разработка русская, потому регистрации не требует. Всё нижеизложенное работает в версии 3.26, с более поздними версиями (если есть) совместимость должна быть 100%. Итак, скачиваем, ставим, запускаем и всё: "теперь можно откинуться на спинку кресла" и начать править разные скрипты и триггеры ;). НастройкиКонфиги в JMC хранятся в двух видах файлов каждому *.set (набор настроек для отдельного персонажа/профы/мада) соответствует *.opt (общие настройки программы) который хранится в папке Settings, в котором есть строка "AutoLoadFile=имя_конфига.set".Для настройки можно использовать как саму программу, так и файлы конфигурации, тут каждый решает сам. Редактирование конфига вручную мы рассматривать не станем, остановимся пока на первом способе. МенюВсё просто: "File(Файл)", "Edit(Правка)", "View(Вид)", "Options(Опции)", "Scripting(Скрипты)", "Help(Справка)".В меню "File" можно создать, загрузить или сохранить профиль (*.set), а также поставить клиент на паузу или выйти. "Options", разумеется, открывает меню настройки программы. "View" - и так ясно. Главное здесь - меню "Edit", в нём только один пункт, "JMC Objects...(Объекты JMC)". Он открывает настройки, связанные с игрой. Здесь поподробнее: Aliases(Алиасы)На русский язык обычно переводится как "псевдонимы". Скажем проще: сокращения. Очень удобно, чтобы не вводить часто повторяющиеся длинные команды. Пример: выражение "гг Я готов!" сокращаем до "ггг". Очень удобно, на мой взгляд. Сокращения делаем так: Нажимаем "Add(Добавить)" и вводим в поле "Name(Имя)" команду, которая должна служить сокращением (в нашем случае "ггг", без кавычек), строка с сокращением сразу же появится в таблице над полем ввода. После этого в поле "Text(Текст)" пишем команду, которая должна выполняться (здесь "гг Я готов!", тоже без кавычек). Если используются разные группы, то можно выбрать одну в списке "Group" (о группах ниже). Удалить ненужное сокращение можно кнопкой "Remove(Удалить)". После того, как новое сокращение будет записано, JMC занесёт его в конфигурационный файл и каждый раз при загрузке будет выдавать информацию о существующих сокращениях, наряду с другими объектами (Actions(Триггеры), Highlights(Подсветки), Groups(Группы), Hotkeys(Горячие клавиши)), показывая строку типа # {ггг} now aliases {гг Я готов!} in [default] group # {ггг} теперь работает как {гг Я готов!} в группе [default] В основном сокращения используют для записи часто применяемых путей. То есть, чтобы не вводить каждый раз путь от двора до банка, можно сделать запись в "Aliases" (в поле "Name": "дв-банк", в поле "Text": "в;!;с;!;!;з;ю;з;с;баланс", ещё и баланс сразу покажется). Все сокращения можно писать непосредственно в set-файл. Actions(Триггеры)Действия или триггеры - сценарии реакции на какое-либо событие в игре. Принцип записи тот же, что и в поле "Aliases". Поле "Pattern(Образец)": слово (фраза), являющееся ключевым для активации триггера. "Command(Команда)" - команды (команды через ";"), выполняемая при появлении содержимого поля "Pattern" на экране. "Priority(Приор.)" - важность, чем меньше - тем важнее событие, события с большей важностью будут выполняться в первую очередь. "Group(Группа)" - группа в которой будет храниться триггер(о группах чуть позже). Пример: "Pattern" = "Пожалуй, Вам лучше встать на ноги", "Command" = "вст". Теперь вставать будем автоматически. Это лучше сразу вписать в конфиг, чтобы не мучаться с регистрацией на сервере mud.ru: #action {Select one :} {2} {5} {default} #action {Представьтесь, пожалуйста :} {тут имя персонажа} {5} {default} #action {Персонаж с таким именем уже существует. Введите пароль :} {тут пароль на персонажа} {5} {default} #action {* В связи с проблемами} {#cr} {5} {default} (Команда #cr равносильна нажатию "Enter".) HighLights(Подсветки)Подсветка текста. В "Былинах", как и в каждом нормальном mud'е, текст подсвечивается в зависимости от его важности и пр. Но стандартных подсветок хватает не всегда. Иногда удобно подсвечивать имена или какие-нибудь важные события (например: ПЕРЕЗАГРУЗКА), чтобы случайно не пропустить их. Чтобы добавить подсветку пишем в поле "Pattern(Образец)" слово (фразу) для подсвечивания, а затем выбираем цвет текста "Foreground(Цвет)" и цвет фона "Background(Фон)" для него. Пример, думаю, не обязателен. Просто скажу, что у меня имена друзей подсвечиваются синим, имена врагов - красным, а слова "вы", "ваш", "ваша", "вам" и т.п. - жёлтым. Groups(Группы)Если вы играете разными персонажами и/или на разных серверах, то удобно было бы настроить группы для объектов. Впоследствии эти группы можно будет выбрать в списке "Groups(Группы)" для различных типов объектов, чтобы те не перепутались. Добавить группу - "Add(Добавить)", затем ввести имя группы. Удалить группу - "Remove(Удалить)". Hotkeys(Горячие клавиши)Тоже самое, что и "Aliases", но не для команд (напр. "ггг"), а для сочетаний клавиш (напр. Ctrl-G). Создаются не сложнее других объектов: ставим курсор в поле "Key(Клавиша)", затем нажимаем сочетание клавиш. После этого вводим в поле "Text(текст)" команду, которая должна будет посылаться серверу при нажатии данной комбинации клавиш. Пример: "Key" = Ctrl-Q, "Text" = постой;0. Теперь при заходе на постоялый двор можно выйти из игры, нажав Ctrl-Q. Удобно использовать Hotkeys для управления движением с клавиатуры: NUM8 = север; NUM4 = запад; NUM2 = юг; NUM6 = восток; Ctrl-NUM2 = вниз; Ctrl-NUM8 = вверх и т.д. Также можно использовать для переключения типа "лампа-меч": Ctrl-A = убрать меч;держать лампа; Ctrl-S = убрать лампа;держать меч Keywords...(Ключевые слова...)Ещё хочу рассказать о такой полезной штуке, как Keywords - слова для подстановки. Если записать в Keywords слово, то потом его можно будет вводить набрав первые несколько букв и нажав "Tab". Записываются слова либо непосредственно в файл "tabwords.txt" (в папке с JMC), либо через раздел "Keywords" меню "Options" (разделяются пробелом или новой строкой). Можно, например записать в Keywords социалы, команды или имена участников группы. Для начала, думаю, хватит. Если что непонятно, спросите у кого-нибудь в игре ;) Added by WorM Scripts(Скрипты)Помимо всего этого в JMC есть поддержка скрипт-языков VBScript/JScript/Perl/TCL и других. Чтобы подключить скрипты в JMC вам нужно в папочке Settings создать файл "Имя_конфига.scr"(или "commonlib.scr" - Это файл скриптов для всех конфигов). И писать скрипты в этот файл.Примечание: Начинайте писать со второй строки(в первой например можно разместить комментарий), первая строка скриптового файла не обрабатывается(по крайней мере не всегда обрабатывается). JavaScript(JScript)
ПКлист на JavaScript. Берем и пишем в commonlib.scr(6Кб)↓354 |
||
//-------------------------------------Тестим JavaScript--------------------------------------- var fso = new ActiveXObject('Scripting.FileSystemObject'); //Объект FileSystemObject обеспечивает доступ к файловой системе Windows. var pkl_fname = 'Settings/pkl.txt'; //Путь к файлу с пклистом var pkl_names = new Array(); //Массив с имена чаров из пклиста var pkl_comms = new Array(); //Массив с комментариями var pkl_count = 0; //Кол-во Человек в пклисте var pkl_group = 'pkl'; //Группа для алиасов пклиста var pkl_col = "light red,b white"; //Цвет которым подсвечивать чаров из пклиста //-----------------------------Справка по пклисту---------------------------------------------- function pkl_help() { jmc.Showme('Справка по ПКлисту версии 1.3\n'); jmc.Showme('\x1B[0;32mпкл_пом\x1B[0;0m - Вывод этой справки по пклисту'); jmc.Showme('\x1B[0;32mпкл_адд\x1B[0;0m [имя] [коммент] - добавить чара [имя] в ПКлист'); jmc.Showme('\x1B[0;32mпкл_рем\x1B[0;0m [имя] - удалить чара [имя] из ПКлиста'); jmc.Showme('\x1B[0;32mпкл\x1B[0;0m [первые буквы имен] - вывод чаров которые в ПКлисте'); jmc.Showme('\x1B[0;32mпкл_загр\x1B[0;0m - загрузка ПКлиста из файла'); jmc.Showme('\x1B[0;32mпкл_сохр\x1B[0;0m - сохранение ПКлиста в файл'); } //-----------------------------Добавить в ПКлист----------------------------------------------- function pkl_add(pk) { nam=pk.split(' ')[0]; res=pk.substr(nam.length+1); var rx=/^\s*$/; if(rx.test(nam)==true) { jmc.Showme('Имя врага не может быть пустым!!!',pkl_col); return; } nam=nam.charAt(0).toUpperCase()+nam.substr(1).toLowerCase(); if(pkl_count>0) { var t; for(t=0;t<pkl_count;t++) { if(nam.toLowerCase()==pkl_names[t].toLowerCase()) { jmc.Showme('ПКлист: персонаж '+pkl_names[t]+' уже в пклисте.',pkl_col); if(rx.test(res)==false) { pkl_comms[t]=res; jmc.Showme('Изменена причина.',pkl_col); } return jmc.Showme(pkl_comms[t],pkl_col); } } } pkl_names[pkl_count]=nam; pkl_comms[pkl_count]=res; jmc.Parse('враг '+pkl_names[pkl_count]); jmc.Showme('ПКлист: персонаж '+pkl_names[pkl_count]+' добавлен в пклист.',pkl_col); pkl_count++; pkl_save(); } //------------------------------------Удалить из ПКлиста--------------------------------------- function pkl_remove(pk) { pk=pk.charAt(0).toUpperCase()+pk.substr(1).toLowerCase(); if(pkl_count>0) { var t; for(t=0;t<pkl_count;t++) { if(pk.toLowerCase()==pkl_names[t].toLowerCase()) { for(var x=t;x<pkl_count-1;x++) { pkl_names[x]=pkl_names[x+1]; pkl_comms[x]=pkl_comms[x+1]; } pkl_count--; jmc.Parse('#unhi '+pk); jmc.Showme('ПКлист: персонаж '+pk+' удален из пклиста.',pkl_col); pkl_save(); return } } jmc.Showme('ПКлист: персонаж '+pk+' не найден в пклисте.',pkl_col); } } //---------------------------------Вывести ПКлист---------------------------------------------- function pkl_show(nam) { var rx=/^\s*$/; if(nam!='' && rx.test(nam)==true) { jmc.Showme('Имя врага не может быть пустым!!!',pkl_col); return; } var c=0; nam=nam.toLowerCase(); if(pkl_count>0) { var t; for(t=0;t<pkl_count;t++) { if(nam=='') { jmc.Showme(pkl_names[t]+'\x1B[0;0m '+pkl_comms[t],pkl_col); } else { if(pkl_names[t].substr(0,nam.length).toLowerCase()==nam) { jmc.Showme(pkl_names[t]+'\x1B[0;0m '+pkl_comms[t],pkl_col); c++; } } } } if(nam=='') { jmc.Showme("ПКлист: всего "+pkl_count+" человек в листе.",pkl_col); } else { jmc.Showme("ПКлист: всего "+c+" человек найдено по запросу листе.",pkl_col); } } //-------------------------------Загрузить ПКлист---------------------------------------------- function pkl_load() { jmc.Parse("#alias {враг} {#high {"+pkl_col+"}{\%\%0}} {"+pkl_group+"}"); jmc.Parse("#alias {пкл_адд} {#s pkl_add('%0')} {"+pkl_group+"}"); jmc.Parse("#alias {пкл_рем} {#s pkl_remove('%0')} {"+pkl_group+"}"); jmc.Parse("#alias {пкл} {#s {pkl_show('%%0')}} {"+pkl_group+"}"); jmc.Parse("#alias {пкл_сохр} {#s {pkl_save()}} {"+pkl_group+"}"); jmc.Parse("#alias {пкл_загр} {#s {pkl_load()}} {"+pkl_group+"}"); jmc.Parse("#alias {пкл_пом} {#s {pkl_help()}} {"+pkl_group+"}"); jmc.Parse("#tabadd {пкл_загр}"); jmc.Parse("#tabadd {пкл_сохр}"); jmc.Parse("#tabadd {пкл_пом}"); jmc.Parse("#tabadd {пкл_рем}"); jmc.Parse("#tabadd {пкл_адд}"); jmc.Parse("#tabadd {пкл}"); jmc.Parse("#group global "+pkl_group); if(!fso.fileExists(pkl_fname)) { var p=fso.CreateTextFile(pkl_fname,true); p.Close(); } var p=fso.OpenTextFile(pkl_fname); var s; pkl_count=0; while(!p.AtEndOfStream) { s=p.ReadLine(); if(s.length>2) { pkl_names[pkl_count]=s.split(' ')[0]; pkl_comms[pkl_count]=s.substr(s.split(' ')[0].length+1); jmc.Parse("враг "+pkl_names[pkl_count]); pkl_count++; } } jmc.Showme("ПКлист: загрузка окончена всего "+pkl_count+" человек в листе.",pkl_col); p.Close(); } //-------------------------------Сортировка ПКлиста-------------------------------------------- function pkl_sort() { var a,b,c=0; for(a=0; a<pkl_count-1; a++) { for(b=a+1; b<=pkl_count-1; b++) { if(pkl_names[a].toLowerCase()>pkl_names[b].toLowerCase()) { tmp_name=pkl_names[b]; tmp_comm=pkl_comms[b]; pkl_names[b]=pkl_names[a]; pkl_comms[b]=pkl_comms[a]; pkl_names[a]=tmp_name pkl_comms[a]=tmp_comm; } } } } //-------------------------------Сохранить ПКлист---------------------------------------------- function pkl_save() { pkl_sort(); var p=fso.CreateTextFile(pkl_fname,true); var t; for(t=0;t<pkl_count;t++) { p.WriteLine(pkl_names[t]+' '+pkl_comms[t]); } jmc.Showme("ПКлист: сохранение окончено всего "+pkl_count+" человек в листе.",pkl_col); p.Close(); } jmc.RegisterHandler('Load','pkl_load()'); jmc.RegisterHandler('UnLoad','pkl_save()'); |
||
Справка по пклисту командой "пкл_пом". |
Created by WorM ©2006-2023
done in 0.02s