Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
- Конференция мира Аладон - > Для новичков > Новый JMC


Автор: Калевала Sep 29 2013, 11:30
Наткнулся вот. Оказывается есть еще люди которые допиливают JMC - если кому интересно то вот http://nerevar.github.io/jmc/

Автор: Солост. Nov 11 2013, 12:00
неревар со сферы допиливает, но у меня к примеру этот клиент крашится при попытке создать лог в какой-либо папке, кроме как в корне игры

Автор: Калевала Nov 12 2013, 08:58
Если винда от семерки и выше, то есть вариант того, что разрешения на папки не настроены. У меня был большой гимор с одной программой. Она по умолчанию создавала в док энд сеттингс файлы шаблонов для себя при запуске и если не могла этого сделать крэшилась. Вот здесь какой-то подобный вариант возможен.

Автор: Калевала Oct 20 2016, 13:55
Вышла новая версия jmc3.7.1
Судя по описанию прям-таки мегаразработка. Выложен на гитхабе
Тут
https://github.com/konelav/jmc/releases/tag/3710

Автор: Фелей Jul 13 2017, 20:35
Если есть какие-нибудь идеи, что можно улучшить в jmc, то пишите. Постараюсь сделать

Автор: Калевала Jul 14 2017, 10:35
1) Вот почему-то у нас при входе есть странный глюк с новой жабой. При входе в игру у меня стоит алиас на ввод типа кодировки 2j. Так вот почему-то алиас мне в новой жабе приходится вводить два раза.

2) Было бы очень неплохо и помогло бы всем, если бы сообщения перенаправляемые из главного окна в дочерние не прокручивали главное окно пустой строкой. Это очень неудобно. Например у меня техническая информация выводится в другое окно, разные чаты так же по двум окнам, но при приходе строк из мада помимо вывода в эти окна главное окно так же прокручивается на количество пришедших строк.

Автор: Фелей Jul 15 2017, 22:08
QUOTE
1) Вот почему-то у нас при входе есть странный глюк с новой жабой. При входе в игру у меня стоит алиас на ввод типа кодировки 2j. Так вот почему-то алиас мне в новой жабе приходится вводить два раза.

Исправил.
QUOTE
2) Было бы очень неплохо и помогло бы всем, если бы сообщения перенаправляемые из главного окна в дочерние не прокручивали главное окно пустой строкой. Это очень неудобно. Например у меня техническая информация выводится в другое окно, разные чаты так же по двум окнам, но при приходе строк из мада помимо вывода в эти окна главное окно так же прокручивается на количество пришедших строк.

Это можно сделать и сейчас - в обработке сообщения необходимо организовывать триггер на строку приглашения, в котором дропать строку и убирать триггер на приглашение.
Для упрощения задачи добавил команду #promptdrop, которая позволяет сбросить следующую строку приглашения. Команда работает совместно с #promptend.

Пример использования:
1. Вначале включаем #promptend. Пусть у нас стандартная строка приглашения <10hp 100m 100mv>. Добавляем на конец строки любой случайный код PROMPT <%hhp %mm %vmv>ОЧЕНЬСЛУЧАЙНЫЙКОД<. Теперь строка приглашения выглядит следующим образом <10hp 100m 100mv>ОЧЕНЬСЛУЧАЙНЫЙКОД<. Используем команду #promptend {>ОЧЕНЬСЛУЧАЙНЫЙКОД<}{>}. На главном экране и в логах введенная добавка в к строке приглашения исчезнет и мешать не будет.
2. Вставляем команду #prompdrop во все триггера, где возникает лишняя строка приглашения на главном экране. Например следующим образом #action {/W?(\w+) (болтае|произноси|говори|оре|вопи)(т:?|шь:?) (.*)/}{#woutput 2 {colorcodes} [$TIME]%0 %1%2 %3&w;#promptdrop;#drop} - выведет соответствующие каналы в дополнительное окно без появления строк в основном окне.

Ссылка на версию и там же более подробное описание
https://github.com/Rrahh/jmc/releases/tag/3712

Автор: Калевала Jul 18 2017, 10:01
Фелей, это ужасно неудобно все тригера так переписывать. Непонятно почему нельзя ничего просто не выводить в главное окно, если вывод идет в другие окна?
В текущей версии этого было сделать нельзя. Вот такая конструкция:
jmc.DropEvent(); в скриптах не спасала например.
С #promptend не пробовал, если можно все-таки сделать как написал выше, я бы лучше подождал новой версии.
Вы кстати пишите, если нужна будет какая-то помощь в доработке жабы от нашего сообщества. Поможем чем сможем. biggrin.gif

Автор: Фелей Jul 18 2017, 18:18
QUOTE
Непонятно почему нельзя ничего просто не выводить в главное окно, если вывод идет в другие окна?

Тогда объясните, как представляете алгоритм убирания лишней строчки. Эта строчка выдается сервером, и надо каким-либо образом объяснить жабе, что именно ее надо убрать. Как вариант, можно убрать строку на сервере. Сделать дополнительную настройку как команда "компакт". В этом случае в жабе даже менять ничего не понадобится.
QUOTE
С #promptend не пробовал, если можно все-таки сделать как написал выше, я бы лучше подождал новой версии.

Команда #promptend как раз заточена под автоматическое обнаружение строки приглашения. Мне показалось логичным использовать ее для определения удаляемых строк. Просто добавил дополнительную команду для удаления, вот и все. Могу добавить настройку команды #woutput, чтобы при включении этой настройки #woutput автоматом ставил #promptend. Тогда триггера переписывать не надо, но это кажется некрасивым решением.
Есть еще вариант - обработка события 'Prompt'. При обработке этого события jmc.Event содержит все, что пришло до промпта включительно. Но использование этого события также требует переписывания триггеров.
QUOTE
Вы кстати пишите, если нужна будет какая-то помощь в доработке жабы от нашего сообщества. Поможем чем сможем.

Да я, собственно, и так в нашем сообществе biggrin.gif

Автор: Калевала Jul 18 2017, 22:22
QUOTE

Тогда объясните, как представляете алгоритм убирания лишней строчки. Эта строчка выдается сервером, и надо каким-либо образом объяснить жабе, что именно ее надо убрать. Как вариант, можно убрать строку на сервере. Сделать дополнительную настройку как команда "компакт". В этом случае в жабе даже менять ничего не понадобится.

Ну я код жабы не ковырял. Однажды посмотрел, разбираться долго и не стал. В целом вот вопрос #woutput как-то ведь определяется жабой. То есть программа понимает, что нужно выводить ту или иную строку в другое окно.. хотя я понял в чем проблема. Промпт должен обновляться... понятно. А может быть сделать некий шаблон для промпта наподобии того как он задается в маде? В большинстве русскоязычных мадов набор выводимого в промпте ограничен. Так может сделать специальное окошечко с подокошечками или просто строкой куда бы выводился чисто промпт, а в главное окно его вообще не выводить и тогда не будет требоваться и прокрутка окна. Увидели, что сообщение выводится в другое окно - вывели. А промпт обновили в спецокошке, в главное окно ничего не выводим. Или это будет сложновато?
QUOTE

Команда #promptend как раз заточена под автоматическое обнаружение строки приглашения. Мне показалось логичным использовать ее для определения удаляемых строк. Просто добавил дополнительную команду для удаления, вот и все. Могу добавить настройку команды #woutput, чтобы при включении этой настройки #woutput автоматом ставил #promptend. Тогда триггера переписывать не надо, но это кажется некрасивым решением.
Есть еще вариант - обработка события 'Prompt'. При обработке этого события jmc.Event содержит все, что пришло до промпта включительно. Но использование этого события также требует переписывания триггеров.

Ну не знаю. Попробую.

Автор: Фелей Jul 18 2017, 22:37
QUOTE
В целом вот вопрос #woutput как-то ведь определяется жабой

Это ее внутренняя команда, такая же как #drop, #promptend, и т.д. Думаю, некорректно сравнивать ее с определением строки приходящей с сервера. #woutput просто выдает, что у нее указано в аргументах. Она не сама эти аргументы формирует и определяет что и куда перенести. Это задает ей пользователь в ходе анализа входной строки.
QUOTE
А может быть сделать некий шаблон для промпта наподобии того как он задается в маде?

Команда #promptend для этого и сделана
QUOTE
Так может сделать специальное окошечко с подокошечками или просто строкой куда бы выводился чисто промпт, а в главное окно его вообще не выводить и тогда не будет требоваться и прокрутка окна. Увидели, что сообщение выводится в другое окно - вывели. А промпт обновили в спецокошке, в главное окно ничего не выводим. Или это будет сложновато?

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

Автор: Калевала Jul 19 2017, 08:13
QUOTE (Фелей @ Jul 18 2017, 22:37)
QUOTE
В целом вот вопрос #woutput как-то ведь определяется жабой

Это ее внутренняя команда, такая же как #drop, #promptend, и т.д. Думаю, некорректно сравнивать ее с определением строки приходящей с сервера. #woutput просто выдает, что у нее указано в аргументах. Она не сама эти аргументы формирует и определяет что и куда перенести. Это задает ей пользователь в ходе анализа входной строки.
QUOTE
А может быть сделать некий шаблон для промпта наподобии того как он задается в маде?

Команда #promptend для этого и сделана
QUOTE
Так может сделать специальное окошечко с подокошечками или просто строкой куда бы выводился чисто промпт, а в главное окно его вообще не выводить и тогда не будет требоваться и прокрутка окна. Увидели, что сообщение выводится в другое окно - вывели. А промпт обновили в спецокошке, в главное окно ничего не выводим. Или это будет сложновато?

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

Да нет, совместимость разрушать не надо. Надо задать шаблон промпта ну допустим
<%1h %2m %3v> Вместо v,m,h, <,> могут быть любые другие знаки. Нам ведь нужно выдернуть только %1,%2,%3. И пусть пользователь укажет куда ему это надо выводить. В любом маде эта строка присутствует так или иначе.

Автор: Калевала Jul 19 2017, 08:17
И по возможности конечно сделать эту именно опцией, типа хочет юзер включает, не хочет все как обычно.

Автор: Фелей Jul 19 2017, 19:08
QUOTE
Так может сделать специальное окошечко с подокошечками или просто строкой куда бы выводился чисто промпт, а в главное окно его вообще не выводить и тогда не будет требоваться и прокрутка окна.

Попробовал реализовать переносом обнаруженных строк промпта в отдельное окно. Получилось очень некрасиво. Во время сна строки приходят двойные, иногда в одной строке с промптом приходит еще что-нибудь, и оно тоже выводится. Если делать с использованием шаблона, то не понятно зачем что-то дорабатывать - такой функционал уже существует. Можно использовать как встроенные скрипты, так и внешние. Например, простейший триггер на перенос всех промптов в отдельное окно с удалением его из главного:
#action TEXT {/<(\d+)hp (\d+)m (\d+)mv>\((\d+)\)/}{#drop;#woutput 3 {colorcodes} &c<&G%0&chp &C%1&cm &y%2&cmv>(&p%3&c)}
Действует на строку приглашения <*hp *m *mv>(*). Если строка другая, то соответственно надо изменить шаблон триггера.
В результате на главном окне не остается ни одной строчки промпта. Они аккуратно, без искажений выводятся в отдельное окно. В обработчике триггера можно добавить вызов функции с параметрами количества жизни, маны и т.д. для какой-либо дальнейшей автоматизации. В главном окне в нижней строчке выводится самый последний промпт, при поступлении нового сообщения с сервера он исчезает, а внизу появляется уже новая строка промпта. Кстати, довольно забавно смотрится.
Есть недостаток - если какая либо информация приходит на той же строке что и промпт, то она бесследно исчезает. Но для обработки каналов общения можно слегка модифицировать следующим образом:
QUOTE
Это можно сделать и сейчас - в обработке сообщения необходимо организовывать триггер на строку приглашения, в котором дропать строку и убирать триггер на приглашение.

Почти тоже самое, только триггер висит всегда, а по приходу сообщения выставлять дополнительную переменную в единицу. В триггере обработки промпта проверять переменную, и, сли она больше единицы, дропать строку и уменьшать переменную. Это тоже самое, что делает #promptdrop. В этом случае вероятность потерять важную информацию незначительна.

Автор: Калевала Jul 19 2017, 21:03
Пффф. Жаль. С промптэндом кстати нифига не вышло. Прокрутка осталась, да еще сам промпт просто стал пропадать временами.
Прокрутка в главном окне ужасно бесит ибо для разработки приходит тупо выключать вывод техинфо из мада, что неудобно совсем. Ну ладно, значит будем жить по старинке.

Автор: Фелей Jul 19 2017, 21:32
Может я что-то не так понял... Можно пример сообщений при которых не убирается прокрутка? Пробовал и с #promptdrop и через триггер на промпт - нигде не было прокрутки. И в том и другом случае строка приглашения убирается или переносится полностью, включая перенос строки.

Автор: Калевала Jul 19 2017, 22:32
Ок. Завтра напишу.

Автор: Фелей Jul 21 2017, 22:28
Поправил кое-какие ошибки и добавил опцию залипания прокрутки главного окна (как в wireshark).
https://github.com/Rrahh/jmc/releases/tag/3713

Автор: Калевала Jul 24 2017, 11:49
Не совсем понятен смысл этого. Если прокрутка не до конца окна, то промпт не видно, а если до конца, то идет прокрутка окна.
По поводу прокрутки. Я тут поковырялся и вспомнил, что у меня там не тригером был отлов тех.информации, а скриптом. В функции Incom следующее:

var line=jmc.event;
reg=new RegExp("^-->");

if(reg.test(line))
{
reg.clear;
reg2=/[|]/g;
line2=line.replace(reg2,"-");
jmc.woutput(1,line2,"white");
//jmc.Event=null;
jmc.DropEvent();
reg.clear;
//return null;

}

То есть отлавливаются все строки начинающиеся с --> и отправляются в другое окно. Как видно из кода я там пытался как-то преградить доступ обработке события дальше, но не вышло biggrin.gif

Автор: Фелей Jul 24 2017, 21:37
QUOTE
Не совсем понятен смысл этого. Если прокрутка не до конца окна, то промпт не видно, а если до конца, то идет прокрутка окна.


Прокрутка не для этого. Просто пробую привести контроль над положением текста к уровню MUSH клиента.

Написал аналог функции отлова технологической информации. Надеюсь, что понял правильно. В качестве проверки использовал строки начинающиеся на "[" - строки выводящиеся по команде группа и в списках магазинов очарок. Код:
CODE

var RemoveNextPrompt = 0;

function TechInput(){

var line=jmc.event;
var reg=/^\[/;//заменить на необходимый префикс

if(reg.test(line))
{
//Пришла строка из блока технологической информации - информацию выводим, а все остальное до промпта включительно убираем
RemoveNextPrompt=1;
jmc.woutput(1,line,"white");
jmc.DropEvent();
}
else if (RemoveNextPrompt ){//Здесь полагаю, что в технологической информации все строки начинаются с -->, а дальше [пустая строка и] промпт
var regprompt=/<.+hp/;//Шаблон для промпта, переписать на свой
if(regprompt.test(line))RemoveNextPrompt=0;//Получили промпт => больше ничего удалять не надо
jmc.DropEvent();
}
}

jmc.RegisterHandler('Incoming','TechInput()');

Этот код переносит все строки начинающиеся на "[" в окно 1. Все остальные строки до первого промпта включительно пропускает. Например, по команде "группа" выводится только первая строчка "группа того-то:", строки с квадратной скобкой выводятся в первое окно, а промпт и пустая строка (если отключен "компакт") удаляются. Для управления процессом используется глобальная переменная, которая принимает два состояния, соответствующие наличию подходящей информации и ее отсутствию. В более общем случае, формируется "машина состояний", где эта переменная будет соответствовать различным состояниям системы. Например, если хочется перенести только строки из команды "группа", и не переносить из магазина, то можно добавить дополнительное состояние системы, соответствующее получению строки "группа того-то:". И только уже из этого, дополнительного состояния, срабатывать на строку со скобками.

Автор: Фелей Aug 5 2017, 22:37
Мелкие исправления:

1. При закрывании дополнительных окон вывода через кнопку "X" в заголовке, в конфигурационном файле jmc.ini окно помечается как закрытое. Ранее это можно было сделать только через меню.
2. Поправлена работа с колесиком мыши в основном окне, и добавлена поддержка такой прокрутки в дополнительных окнах. Как и было задумано ранее (судя по коду), при нажатии на SHIFT и CTRL с одновременной прокруткой колесиком в главном окне, формируется отдельное окно прокручиваемого текста. Для дополнительных окон, при нажатом CTRL прокручивает на одну страницу.

https://github.com/Rrahh/jmc/releases/tag/3714

Автор: Фелей Aug 6 2017, 16:41
Срочное исправление - в прошлой версии (3.7.1.4) ошибся с компиляцией библиотеки ttcoreex.dll. Это может привести к пропаданию некоторых новых команд доступных в скриптах. Исправление + доработка прокрутки главного окна:

https://github.com/Rrahh/jmc/releases/tag/3715

P.S.: Если пропали команды (ругается что нет такой команды), то просто запустите файл ttcoreex.bat

Автор: хартэр Aug 22 2017, 17:34
привет, подскажите пожалуйста, как в новой жабе которая jmc3.7.15 вывести карту в отдельное окошко ? как вот тут на скринах https://github.com/konelav/jmc/releases/tag/3710

Автор: Фелей Aug 22 2017, 19:15
QUOTE
привет, подскажите пожалуйста, как в новой жабе которая jmc3.7.15 вывести карту в отдельное окошко ?

Карта выводится как и в 3.7.1.0. Если пройти по указанной Вами ссылке, то в описании маппера даже есть пример:

#mapper clear
#mapper add direction {восток,в,east,e} 1 0 0 {запад,з,west,w}
#mapper add direction {север,с,north,n} 0 1 0 {юг,ю,south,s}
#mapper add direction {вверх,вв,up,u} 0 0 1 {вниз,вн,down,d}
#mapper add flag {магазин} {$} {light green}
#mapper add flag {кузница} {%} {brown}
#mapper add room 1001 {Перекресток} {} {Деревня} {} {}
#mapper add exit 1001 {север} 1002 {}
#mapper add exit 1001 {юг} 1003 {}
#mapper add exit 1001 {восток} 1004 {}
#mapper add exit 1001 {запад} 1005 {}
#mapper add room 1002 {Северная улица} {} {Деревня} {} {}
#mapper add exit 1002 {юг} 1001 {}
#mapper add exit 1002 {запад} 1006 {}
#mapper add room 1003 {Южная улица} {} {Деревня} {} {}
#mapper add exit 1003 {север} 1001 {}
#mapper add exit 1003 {запад} 1007 {}
#mapper add room 1004 {Восточная улица} {} {Деревня} {} {}
#mapper add exit 1004 {север} 1008 {}
#mapper add exit 1004 {запад} 1001 {}
#mapper add room 1005 {Западная улица} {} {Деревня} {} {}
#mapper add exit 1005 {восток} 1001 {}
#mapper add room 1006 {Хижина} {} {Деревня} {} {}
#mapper add exit 1006 {восток} 1002 {}
#mapper add room 1007 {Закусочная} {} {Деревня} {} {магазин}
#mapper add exit 1007 {восток} 1003 {}
#mapper add room 1008 {Мастерская} {} {Деревня} {} {кузница,магазин}
#mapper add exit 1008 {юг} 1004 {}
#mapper print normal exits header flags w6 1001

В этом примере я только изменил окно вывода на шестое дополнительное окно. Чтобы запустить этот пример, откройте шестое окно (Меню->Вид->Окна вывода->Окно 6), скопируйте текст примера, вставьте в жабу. В результате в дополнительном окне будет нарисована красивая карта.

Автор: хартэр Aug 22 2017, 20:05
Я наверно немного не так написал, вопрос в том, можно ли встроенную в аладон карту вывести в отдельном окне ?smile.gif

Автор: Фелей Aug 22 2017, 20:12
Можно. Несложный и, пожалуй, единственный вариант это написать скрипт для обработки текста. Сейчас напишу ради интереса.

Автор: хартэр Aug 22 2017, 20:39
Буду очень благодарен smile.gif

Автор: Фелей Aug 22 2017, 23:36
Сделал два варианта - через встроенные скрипты и через внешние. Вывод везде в шестое дополнительное окно, которое необходимо самостоятельно открыть через меню.

Через встроенные скрипты:

CODE

#action COLOR {/^(&W\+&D-+&W\+) *(.*)/}={#if {$MMState==1}{#var MMState 0;#unaction {/^(&D\\|.*[&D]?\\|) *(.*)/}}{#var MMState 1;#wclear 6;#action {/.*/}{#var MMState 0;#unaction {/.*/}}{9};#action COLOR {/^(&D\|.*[&D]?\|) *(.*)/}{#woutput 6 {colorcodes} %0;#drop;#strcmp {%1} {} {}{#s jmc.ShowMe(jmc.FromColored('%1'))}}};#woutput 6 {colorcodes} %0;#drop;#strcmp {%1} {} {}{#s jmc.ShowMe(jmc.FromColored('%1'))}}


Просто скопировать и вставить в жабу. Есть неприятный момент - необходимо отключить вывод сообщений о присвоении переменной (#message var off), а иначе будет постоянно вылазить сообщение о смене значения переменной.

Через внешние скрипты:

CODE

var MMState=0;
var MapWindow=6; //Номер окна для вывода карты
var reg=/^(&W\+&D-+&W\+) *(.*)/; //Шаблон для начала и конца карты
var reg2=/^(&D\|.*[&D]?\|) *(.*)/;
var StrNum=0; //Для форматирования описания как без карты

function MapMove(){
var line=jmc.ToColored(jmc.event);
if(reg.test(line)){
if(MMState==0)jmc.Parse("#wclear "+MapWindow);
if(MMState==1)StrNum=0;
var m=reg.exec(line);
MMState=1-MMState; //При усложнении машины состояний заменить на case
jmc.woutput(MapWindow,jmc.FromColored(m[1]));
if(m[2]!="")jmc.ShowMe(jmc.FromColored(m[2]));
jmc.DropEvent();
}
else if(MMState){
if (reg2.test(line)){
StrNum=StrNum+1;
var m=reg2.exec(line);
jmc.woutput(MapWindow,jmc.FromColored(m[1]));
if(m[2]!="")
if(StrNum==1)jmc.ShowMe(jmc.FromColored("    "+m[2])); //Название клетки
else if(StrNum==2)jmc.ShowMe(jmc.FromColored("  "+m[2]));
else jmc.ShowMe(jmc.FromColored(m[2]));
jmc.DropEvent();
}
else{
MMState=0; //Если должна быть карта, а рамки нет, то сбрасываемся
}
}
}

jmc.RegisterHandler('Incoming','MapMove()');


Вставить код в текстовый файл, сохранить, и загрузить через Меню->Опции->Объекты JMC->Файлы скриптов

Работают почти одинаково, но развивать второй вариант куда проще. Например, во втором варианте добавил форматирование выводимого описания как при отсутствии карты.

Автор: хартэр Aug 23 2017, 18:43
у 2 варианта
Ошибка скриптов JMC
(null)
(null)
Строка:34 Ошибка:0 Scode:8002801d

Автор: Фелей Aug 23 2017, 19:10
Похоже, просто не подключены внешние скрипты. Надо выполнить следующие действия:
1. Запустить ttcoreex.bat, который лежит в каталоге жабы.
2. Выбрать Java Script. Это в Меню->Опции->Настройки->Скрипты. Должно быть установлено в JScript.

P.S. : Если не поможет, то попробуй запустить ttcoreex.bat от администратора. Этот файл я менял на автоматический запрос привилегий, но тестировал только на своем компьютере - мог упустить ошибки.

Автор: хартэр Aug 23 2017, 19:13
Во, большое Хоббитское пасиба smile.gif

Автор: Фелей Aug 23 2017, 19:20
Пожалуйста:)

Если будут какие-либо ошибки или предложения, то можно сюда о них написать - поправлю.

Автор: Ауст Aug 24 2017, 08:29
Сделай пожалуйста так чтоб размер output main window не мог равняться нулю, а то каждый раз плююсь поднимая его до конца и вспоминая что теперь прийдет править jmc.ini и перезапускать клиент

Автор: Фелей Aug 24 2017, 18:05
Что за output main window? Опиши пожалуйста поподробнее. Если имеется ввиду размер главного окна, то не вижу проблемы. Поднимаю нижний край до упора вверх, закрываю жабу, запускаю - запускается, опять как угодно разворачиваю, сбоев нет.

P.S. : Можно просто сказать какую настройку правишь в jmc.ini. Дальше наверное разберусь.

Автор: Ауст Aug 24 2017, 19:47
[Docbar]
CXFloat=200
CYFloat=100
CXHorz=200
CYHorz=25
CXVert=209
CYVert=100
Visible=1
Docking=61440
posX=20
posY=20
Title=output wnd 0

Автор: Фелей Aug 24 2017, 20:04
Делаю следующее:
1. Включаю показ окна 0
2. Докаю его наверх
3. Поднимаю нижнюю границу до упора вверх

Полностью сжать по высоте не получается - остается примерно одна строка текста. А у тебя, насколько понял, при такой последовательности сжимается в ноль. Если последовательность понял правильно, то скажи какая операционная система, чтобы мне на ней протестировать.

И версия жабы 3.7.1.*?

Автор: Ауст Aug 24 2017, 22:27
Все в порядке, ну относительно. Версия была 3,6* скачал последнюю с гитхаба попробовал запустить старые конфиги и получил совершенно не играбельный клиент, заново все переписывать лень, лучше останусь на том что было, не стану нарушать первое правило админа.
Спасибо за внимание, так или иначе.

Автор: Калевала Aug 25 2017, 08:22
Фелей, а можно сделать нормальный инсталяционный пакет для жабы? А то последняя версия с инсталятором по-моему была вообще 3.0. Понятно, что для опытного мудера это не проблема, но в целом это как-то не очень удобно.

Автор: Фелей Aug 25 2017, 18:42
QUOTE (Ауст @ Aug 24 2017, 22:27)
Версия была 3,6* скачал последнюю с гитхаба попробовал запустить старые конфиги и получил совершенно не играбельный клиент

Проверил на 3.6 и 3.5. Действительно, там есть такая недоработка. На 3.7 исправлено. То, что конфиги нормально не заработали - это бага, которую можно исправить. И кажется понял, в чем тут дело - по умолчанию 3.7.* импортирует триггера как TEXT, а надо как RAW. Соответственно, если в триггерах шла работа с ESC-последовательностями, то триггеры будут работать неправильно. Сейчас это поправлю.

QUOTE (Калевала @ Дата Aug 25 2017, 08:22)
Фелей, а можно сделать нормальный инсталяционный пакет для жабы? А то последняя версия с инсталятором по-моему была вообще 3.0. Понятно, что для опытного мудера это не проблема, но в целом это как-то не очень удобно.

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

Автор: Калевала Aug 25 2017, 23:43
А как же регистрация длл-ки?

Автор: Фелей Aug 26 2017, 16:20
Регистрация длл нужна только для внешних скриптов. Все остальное работает и без регистрации. Инсталлятор подумаю как лучше сделать.

Вот новая версия. В ней устранена ошибка с неправильной работой триггеров с ESC-последовательностями, написанные под старые версии жабы.

Попробуйте кто-нибудь у кого нормально не портировались триггера.
Удалил ссылку
P.S. : Стоп. Я кажется ошибся. Сейчас смотрю версию 3.5 и там на триггер подается текст без esc-последовательностей. Значит я зря поменял тип триггера по умолчанию. Сейчас удалю релиз.
А в чем, выражалась неиграбельность клиента? С чем именно возникла проблема?

Автор: Ауст Aug 27 2017, 18:25
Когда прогружается конфиг, в частности #action, он все разделения делит и пытается новую строку выполнить, тоесть
#act {}{;#act ;#act }
воспринимается как
#act {}{
#act
#act }
ну а
#hot
вообще не загрузились

Автор: Фелей Aug 27 2017, 22:07
Напиши пожалуйста строчку в #act полностью.

Автор: Ауст Aug 28 2017, 11:58
нашел место изза которого неверно читаются последующие строки загружаемого конфига


#variable {pr} {Y%h|{X%H {C%m|{X%M {y%v|{D%V *{W%t:%f {Y%g"{w.%s' {r%a{D*{X {G[%e] {C%r Ауст{X%c}

Пишет #incompatible bracers и дальше читает строки с добавлением {, что их отключает делая бессмысленными, так ведь.

Автор: Фелей Aug 28 2017, 18:22
Спасибо за информацию. Буду смотреть в чем тут дело.

P.S. : Сравнил версии 3.5.0.2, 3.6.1.0, 3.7.1.0, 3.7.1.5. На эту строчку они все реагируют неправильно. До версии 3.7.1.0 при каждом перезапуске добавляется дополнительная закрывающаяся скобка на конце строки. В версии 3.7.1.0 поведение изменилось - она игнорирует символ окончания строки и добавляет в значение параметра все что за ним стоит. Почему неправильно работают понятно - в функции поиска аргумента проверяется закрытие всех скобок "{". Откатить поведение до версии в 3.6 несложно. Но лучше сразу посмотрю как тут можно улучшить.

Автор: Ауст Sep 22 2017, 06:37
Клиент не желает понимать #hot с более чем одной модифицирующей клавишей, раньше все было нормально с кнопками типа #hot {ctrl+alt+}

Автор: Гирт Sep 22 2017, 15:59
На днях зашел на форум, захотелось вновь побегать по миру, поиграть.

Пытаюсь запустить JMC на Mac OS. Установил Wine. Ругается.

QUOTE
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\jmc\\jmc.exe") not found
err:module:LdrInitializeThunk Main exe initialization for L"C:\\Program Files\\jmc\\jmc.exe" failed, status c0000135


В Winetricks установил галочку напротив mfc40.dll. Все равно не помогает. Поможете решить проблему?

Автор: Гирт Sep 22 2017, 16:09
Простите, не увидел что уже другую библиотеку просит.

Запустил, появилось окно и сразу рухнул враппер.
Лог слишком большой, могу в личку выслать.

В Trello увидел карточку на доске с тем, что мне нужно: https://trello.com/c/dSDhroYj
Запилите пожалуйста если не сложно...

Автор: Фелей Sep 24 2017, 21:16
QUOTE (Ауст @ Sep 22 2017, 06:37)
Клиент не желает понимать #hot с более чем одной модифицирующей клавишей, раньше все было нормально с кнопками типа #hot {ctrl+alt+}

Исправил.
Также откатил изменение со скобками в командном файле, из-за которого файл рушился при использовании скобок в тексте. Теперь работает как в версиях до 3.7.
Так и не смог придумать как переделать, что было совместимо со старыми версиями и позволяло использовать скобку в тексте. В качестве обходного решения можно использовать внешние скрипты. Например, для задания промпта как у Ауста:
1. Пишем скриптовую функцию
CODE

function setprompt(){
jmc.send("промпт {Y%h|{X%H {C%m|{X%M {y%v|{D%V *{W%t:%f {Y%g"{w.%s' {r%a{D*{X {G[%e] {C%r Ауст{X%c")
}

2. Ставим алиас
CODE

#alias {установитьпромпт}{#s setprompt()}


QUOTE (Калевала @ Aug 25 2017, 08:22)

Фелей, а можно сделать нормальный инсталяционный пакет для жабы? А то последняя версия с инсталятором по-моему была вообще 3.0. Понятно, что для опытного мудера это не проблема, но в целом это как-то не очень удобно.

Добавил.

Новая версия https://github.com/Rrahh/jmc/releases/tag/3717

QUOTE (Гирт @ Sep 22 2017, 16:09)

Запилите пожалуйста если не сложно...

Не работал в Mac OS, но попробую. Только не могу сказать как быстро получится... и получится ли вообще

Автор: Сорин Sep 27 2017, 22:59
присоединяюсь к просьбе про мак. Это реальная большая проблема.

пс: нас таких http://myth.p0.ru/forum/7-1233-1

Автор: Калевала Sep 28 2017, 07:43
Под MAC переписать задача как мне думается не очень простая, хотя может там портирование какое есть.

Автор: Солост. Oct 2 2017, 21:55
удалил

Автор: Ауст Oct 7 2017, 20:06
А #unhighlight почему не работает? Или как стирать подсветки теперь

Автор: Фелей Oct 7 2017, 20:38
Действительно, посмотрел в коде - команды #unhighlight нет, проверил на версиях 3.6 и 3.5 - тоже нет.
Сам все время удалял через окно объектов, командой не пользовался. Похоже эту команду уже давно потеряли... ну или я что-то не понял))
Если потеряли, то сейчас добавлю.

Автор: Фелей Oct 8 2017, 11:18
QUOTE (Ауст @ Oct 7 2017, 20:06)
А #unhighlight почему не работает? Или как стирать подсветки теперь

Исправил. Новая версия https://github.com/Rrahh/jmc/releases/tag/3718

Автор: Ауст Oct 12 2017, 06:20
Очень напрягает следующая ситуация: когда добавляешь #act идентичный (буква в букву) тому что уже есть, он не заменяется, а добавляется. Измени, пожалуйста.

Автор: Фелей Oct 12 2017, 18:47
Не уверен что это неправильно. Если кто-то хочет на одно и тоже сделать несколько действий, то почему бы и нет? #multiaction это позволяет.
Надо подумать.

Автор: Ауст Oct 14 2017, 01:05
QUOTE (Фелей @ Oct 12 2017, 18:47)
Не уверен что это неправильно. Если кто-то хочет на одно и тоже сделать несколько действий, то почему бы и нет? #multiaction это позволяет.
Надо подумать.

Если мне нужен второй тригер, Я могу его добавить убрав из первого символ и\или заменить одно из словей на %1 например. Зато когда Я хочу сменить старый тригер, приходится сначала #unact потом #act, лишнее действие. В старых версиях идентичные тригера заменялись

Автор: Фелей Oct 14 2017, 07:20
QUOTE (Ауст @ Oct 14 2017, 01:05)
Если мне нужен второй тригер, Я могу его добавить убрав из первого символ и\или заменить одно из словей на %1 например. Зато когда Я хочу сменить старый тригер, приходится сначала #unact потом #act, лишнее действие. В старых версиях идентичные тригера заменялись

В этом утверждении можно спокойно поменять обе части и получится столь же логично:
Если мне нужно сменить старый триггер, я могу запустить #unact потом #act. Зато когда мне нужен второй триггер, приходится менять в первом символ и\или заменять одно из слов на %1, лишнее действие. wink.gif

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

https://github.com/Rrahh/jmc/releases/tag/3719

Автор: хартэр Oct 16 2017, 16:19
Привет, а есть ли возможность чтобы клиент научился воспроизводить *.wav файлы по команде #sound как это быол сделано в версии 3.30

"4) Команда #sound <имя файла> позволяет проиграть wav файл. Можно
использовать это в триггерах для озвучивания каких-либо событий.
Например, скрежет металла при удачном парировании или
звук смачного пинка =). Недостатком данной команды является то,
что она не позволяет проиграть несколько файлов одновременно.
Для этой цели используйте команду #multisound <имя файла>,
которая создает новый процесс для проигрывания файла.
Учтите, что это довольно медленный способ." (С)

Автор: Фелей Oct 16 2017, 19:20
А чем не устраивает команда #play?

Автор: хартэр Oct 16 2017, 20:12
Сори, профтыкал smile.gif

Автор: Тарол Nov 30 2017, 16:52
подскажите со шрифтом... с 10 могу только 17... хотелось бы 14 посмотреть

Автор: Фелей Nov 30 2017, 17:51
Никак не могу уловить смысл сказанного. Что такое 10, 17 и 14?

Автор: хартэр Nov 30 2017, 20:58
Видимо размер шрифта в клиенте, и да, действительно размер можно поставить или 10 или 17
14 у меня тоже не получилось поставить smile.gif
и еще вопрос, как скрыть текст в основном окне и вынести его в окно 2?
Например хочу вывести весь чат в окна но не хочу чтобы оно дублировалось в основном окошке smile.gif

Автор: Фелей Nov 30 2017, 21:45
Насчет шрифтов посмотрю.

Скрывается текст по разному, в зависимости от реализации скриптов.

1. Встроенные скрипты - командой #drop.
Пример ниже выводит все общение в окно №2, убирая из основного
CODE

#action COLOR {/[w|W]?(\w+) (болтае|произноси|говори|оре|вопи)(т:?|шь:?) (.*)/}{#drop;#woutput 2 {colorcodes} [$TIME]%0 %1%2 %3&w}


2. Внешними скриптами - функцией jmc.DropEvent().
Пример можно посмотреть в этой же теме
http://www.aladon.ru/forum/index.php?showtopic=3546&st=27#

P.S. Примеры для версии jmc 3.7

Автор: хартэр Nov 30 2017, 23:39
Пасиба smile.gif

Автор: Фелей Dec 1 2017, 17:50
Посмотрел насчет шрифтов в версиях 3.26, 3.5, 3.6, 3.7 - везде все нормально устанавливается. Пробовал менять от 10 до 17. Размер изменялся непрерывно, постепенно увеличиваясь.

Какую версию jmc используете? и на какой операционной системе? и какой шрифт?

Автор: Тарол Dec 2 2017, 03:19
3.7 жаба винда 7 максимальная
ну да отдельное бы окно, а то монитор большой и половина просто пустая

Автор: Фелей Dec 2 2017, 20:02
Я правильно понимаю, что шрифт менять не пробуете, а используете fixedsys? Если так, то можно просто изменить шрифт. Например, на consolas или courier. Я сам использую именно consolas, поэтому и не понял в чем проблема.

QUOTE

ну да отдельное бы окно, а то монитор большой и половина просто пустая

Не понял.

Автор: Тарол Dec 3 2017, 02:25
да меня больше интересует размер шрифта

Автор: Фелей Dec 3 2017, 09:43
fixedsys - это не векторный шрифт, поэтому у него проблемы с изменением размера. Если выбрать другой шрифт, например consolas, то он без проблем масштабируется.
Если при масштабировании шрифта появляется неприятное размытие, то это можно настроить следующим образом. Неободимо зайти в панель управления шрифтами - в общей панели управления набираете "шрифт" для русскоязычной windows или "font" для англоязычной. Выбираете пункт "шрифты" ("fonts") или, если пунктов слишком много, нажать на кнопку "показать все результаты" (может зависеть от версии windows) и дальше выбрать "шрифты". Появится панель управления шрифтами. Слева выбираете "настройка ClearType"?, и там проходите по пунктам настройки. Надеюсь, поможет.

Автор: Тарол Dec 4 2017, 18:37
благодарю за подсказки

Автор: хартэр Jan 3 2018, 21:20
Фелей, а можно тебя как то в ВК отловить и помучать на пару вопросов ?smile.gif

Автор: Фелей Jan 4 2018, 14:16
ВК не использую. А чем чат в Аладоне не нравится? Обращайся к Ррахху.

Автор: Колко Jan 12 2018, 15:41
Сделать возможность поставить тикер меньше чем на 10 секунд. Удобно при каче - поставил 3-ех секундный тикер и по срабатыванию тикера выпад и ходишь чаек попиваешь.

Автор: Фелей Jan 13 2018, 16:12
Если необходимо выполнять некоторое действие просто с некоторым периодом, то все уже реализовано. Для этого можно использовать циклы. Ниже приведен отрывок справки Nerevar, с полным текстом которой можно ознакомится по адресу http://nerevar.github.io/jmc/pages/command/
CODE

#loop

Syntax:
#<num>, #loop
Обе команды переданы под контроль отдельного цикла, каждой добавлена возможность задержки (в децисекундах, 1/10 секунды).

Эта команда повторяет заданную последовательность команд указанное число раз.

#<num>[:<delay>]
цикл от 1 до num.

#loop {<from>[,<to>][:<delay>]}
#loop начинает выполнять указанные команды в цикле, сохраняя текущее значение счетчика в переменной %0.
если указан второй параметр, то от from до to, иначе от from до 0.
Если delay не указан, считается нулем и цикл не задействует таймер, иначе ищется свободный таймер и цикл передается под его контроль.
Всего выделены под это дело 16 таймеров (0..15). если свободный таймер не найден, то и цикла не получится.
Может быть, позже будет выделено больше. Пока нет необходимости, 16 - это много.

#break {<tID>|all}
Прерывает цикл(ы). второй вызов убивает (обнуляет).

#abort {<tID>|all}
Убивает (обнуляет) цикл(ы) сразу.

#resume {<tID>|all}, #pinch [all]
Возобновляет цикл(ы), если он неактивен и работоспособен (есть первая/вторая граница, команда и задержка)

#llist, #tmlist
Список активных циклов.

Примеры:
#5 {sing}
В мад уйдет команда sing;sing;sing;sing;sing - Вы споете (sing) 5 песен.

#10 {eat bread;drink water}
Вы поедите хлеба (eat bread) и выпьете воды (drink water) 10 раз.

#loop {2,5} {взять все %0.сундук} Вы возьмете все предметы из 2-го, 3-го, 4-го и 5-го сундуков.


Например, для того чтобы постоянно каждые три 3 секунды выполнять выпад, можно набрать команду
CODE

#100000:30 выпад

Первое число задает количество повторений (100000 каждые три секунды будут длиться больше 3-х суток). Второй аргумент определяет период повторения в десятых долях секунды - в приведенном примере, 30 десятых дает 3 секунды.
Каждый цикл для своей работы требует отдельного таймера. Сейчас в jmc на эти цели выделено 16 таймеров, т.е. можно одновременно запустить до 16-ти независимых циклов, с разными периодами и командами.

Автор: Колко Jan 15 2018, 14:10
И еще у меня есть вредная привычка, заспамливать действия.
Бывает нажму разгром слишком много раз, команды запишутся в очередь на выполнение, а потом сбежать не могу.
Приходится в быстром порядку через #zap рвать связи и конектится по новой.
Может есть какая команда или сочетание клавишь, чтобы очередь команд чистить.

В http://nerevar.github.io/jmc/pages/command/ сказано что #wt 0 должна очищать очередь команд - реально же она это не делает.

Автор: Фелей Jan 16 2018, 20:02
Когда вы много раз нажимаете команду, например, тот же разгром, то задержка в их исполнении возникает не со стороны jmc, а со стороны сервера. Jmc отправляет команды сразу без задержек. В этом можно легко убедиться воспользовавшись сниффером. Принятые на стороне сервера команды находятся в буфере, связанном с открытым соединением между клиентом (jmc) и сервером (Аладоном). Клиент не имеет доступа к буферам находящимся на сервере, и отправленные команды просто так удалить невозможно. Когда вы разрываете соединение, буфер со всеми заспамленными командами становится недоступным. Все оставшиеся в нем команды по факту теряются, и при повторном соединении вы можете спокойно вводить новые. Это все я к тому, что нельзя сделать команду в jmc, позволяющую очищать заспамленные команды, т.к. они уже переданы на сервер. Могу лишь порекомендовать не спамить кучу команд разом.

Насчет команды #wt или #wait.
Они позволяют формировать очередь команд со стороны jmc. Если набрать команду
CODE

#wt 50; разгром

то, через 5 секунд на сервер будет отправлена команда "разгром". Особенность в том, что задержка в этом случае формируется со стороны клиента. Команды задерживаются в специальном буфере в jmc, к которому естественно есть полный доступ. Если до истечения указанных 5-ти секунд, набрать команду #wait cancel, то команда "разгром" отправлена не будет.
С описанием команды #wt 0 есть неточность - она не очищает очередь команд, а просто сбрасывает таймер и все задержанные команды мгновенно уходят на сервер. Это так и задумывалось. Неточность в справке.

Автор: Энерхан Apr 7 2018, 14:41
Ребята не убивайте сразу,но у меня есть два вопроса.
1.Возможно ли сделать какой то алиас или тригер для вывода информации о СТАТУСЕ группе(хп,манна и т.д.) в отдельное окошко?
2.Как сделать тригер-команду для вывода автоматического ГГ мол Вася призвал меня к себе в такую то комнату?.

Спасибо.

Автор: Фелей Apr 26 2018, 21:33
1. Проще всего через внешние скрипты
CODE

function group(l,t,n,h,hp,m,mp,v,vp,x){
var s='';
if (t=='Моб'){
s='[';
}else{
s='&Y[&w';
}
if (l<10){
s=s+' ';
}
s=s+l+' '+t;
if (t=='Моб'){
s=s+']';
}else{
s=s+'&Y]&w';
}
s=s+' '+n+' ';
if (h<hp/2){
s=s+'&R'+h+'&w';
}else{
s=s+h;
}
s=s+'/';
if (hp<10){
s=s+' ';
}
if (hp<100){
s=s+' ';
}
if (hp<1000){
s=s+' ';
}
s=s+hp+' &D|&w ';
if (m<10){
s=s+' ';
}
if (m<100){
s=s+' ';
}
if (m<1000){
s=s+' ';
}
if (m<mp/2){
s=s+'&C'+m+'&w';
}else{
s=s+m;
}
s=s+'/';
if (mp<10){
s=s+' ';
}
if (mp<100){
s=s+' ';
}
if (mp<1000){
s=s+' ';
}
s=s+mp+' &D|&w ';
if (v<10){
s=s+' ';
}
if (v<100){
s=s+' ';
}
if (v<1000){
s=s+' ';
}
if (v<vp/2){
s=s+'&Y'+v+'&w';
}else{
s=s+v;
}
s=s+'/';
if (vp<10){
s=s+' ';
}
if (vp<100){
s=s+' ';
}
if (vp<1000){
s=s+' ';
}
s=s+vp+' &D|&w ';
if (t=='Моб'){
if (x<4){
s=s+'&R'+x+'&w';
}else{
s=s+x;
}
s=s+'-ч';
}
jmc.showme(jmc.FromColored(s));
}

jmc.Parse("#alias {гр}{#action COLOR {/\\[(.?\\d+) (\\w+)\\] (.+?) (\\d+)\\/ *(\\d+).+?(\\d+)\\/ *(\\d+).+?(\\d+)\\/ *(\\d+).+?(\\d+)/}{#drop;#s group(%0,'%1','%2','%3',%4,%5,%6,%7,%8,%9)};#action TEXT {/группа/}{#action {/<\\d+hp/}{#unaction {*[(.?*};#unaction {/<\\\\d+hp/}};#unaction {/группа/}};груп}{default}");

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

2. Например так:
CODE

#action TEXT {%1 призывает тебя!} {#var prizval %1;#var priziv 1;#play 7.wav;#if {$nepriz=1} {#var war ВНИМАНИЕ!!};#if {$nepriz!=1} {#var {war} {=)};неприз};#action TEXT {/^(\|.{28}\|| ) *(\w.+)/}{#var place %1;#unaction {/^(\\|.{28}\\|| ) *(\\w.+)/}};#action TEXT {^[Видимые выходы: %1} {гг $war $prizval призвал меня "$place";#var priziv 0;#unaction {^[Видимые выходы: %1}}} {5} {default}


Это для версии 3.7+, для более ранних версий надо делать проверку на *эмо
Не работает, если призывают в темное место и не видите в темноте и без света

Автор: Колко May 24 2018, 14:20
Подскажите, а как сделать автоввод команды на коннект к серверу при открытии клиента?

Автор: Фелей May 24 2018, 18:33
Можно, например, вписать команду в файл скрипта через Parse. Что удобно, в этом случае к моменту вызова команды уже будут загружены все переменные, триггеры и алиасы из конфигурационного файла.
Ниже простейший пример.
CODE

jmc.Parse("#connect aladon.sovintel.ru 9000");

Строчку сохраните в отдельный файл и добавьте в список используемых скриптов (Меню->Опции->Объекты JMC->файлы скриптов)
Если закроете клиент и откроете снова, то сразу после загрузки конфигурационного файла будет выполнена команда #connect aladon.sovintel.ru 9000.
Если хотите не просто соединится с сервером, а еще и войти персонажем, то можно написать простейшие алиасы:
CODE

#alias {зайти} {#connect aladon.sovintel.ru 9000;#action {You select:[2]}{2j;#unaction {You select:[2]}};#action {Твое имя?}{%0;#unaction {Твое имя?}};#action {Пароль}{#variable myname %0;ВАШ_ПАРОЛЬ;#unaction {Пароль}};#action {Enter}{#cr;#unaction {Enter}}} {default}

#alias {зайтипоследним} {#connect aladon.sovintel.ru 9000;#action {You select:[2]}{2j;#unaction {You select:[2]}};#action {Твое имя?}{$myname;#unaction {Твое имя?}};#action {Пароль}{ВАШ_ПАРОЛЬ;#unaction {Пароль}};#action {Enter}{#cr;#unaction {Enter}}} {default}

После этого в том подключаемом файле, где писали строчку jmc.Parse("#connect aladon.sovintel.ru 9000");, заменяем ее на jmc.Parse("зайтипоследним");. Тогда каждый раз при открытии клиента вы будете входить последним персонажем, которым вошли с помощью алиаса 'зайти'. Соответственно, чтобы эта строчка сработала, необходимо хотя бы раз войти с помощью алиаса 'зайти' (чтобы инициализировалась переменная myname).

P.S.: алиас 'зайти' принимает один аргумент - имя персонажа. Например, 'зайти Колко'

Автор: Ауст Jul 18 2018, 06:46
Добавь пожалуйста в клиент регулятор громкости, просто так.

Автор: Калевала Nov 9 2018, 10:28
Все ж таки хотелось бы вернуться к выводу инфы в разные окна и так чтобы в главное окно не выводилось эта инфа с прокруткой. Неужто так трудно сие чудо запилить?

Автор: Калевала Nov 9 2018, 12:07
Да и еще, после обновления движка JScript в винде у меня перестали полностью запускать скрипты в жабе даже не знаю в чем тут может быть дело,
вообще команда #script перестала работать даже с VBA не пашет

Автор: Фелей Dec 29 2018, 19:32
QUOTE

Добавь пожалуйста в клиент регулятор громкости, просто так.


Добавил. Новая версия https://github.com/Rrahh/jmc/releases/tag/3720
Регулирование громкости в окне настроек Главное Меню->Опции->Настройки, там поле с соответствующим названием, в котором можно установить громкость в процентах от системной. Для сохранения совместимости с Windows XP, пришлось сделать анализ звукового файла и перекодирование. Разбираться со всеми возможными форматами не хотелось, поэтому регулирование громкости задействуется только для файлов без сжатия с глубиной звука 8 и 16 бит, для остальных файлов используется старый код со 100-процентной громкостью.

QUOTE

Все ж таки хотелось бы вернуться к выводу инфы в разные окна и так чтобы в главное окно не выводилось эта инфа с прокруткой. Неужто так трудно сие чудо запилить?


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

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

QUOTE

Да и еще, после обновления движка JScript в винде у меня перестали полностью запускать скрипты в жабе даже не знаю в чем тут может быть дело,
вообще команда #script перестала работать даже с VBA не пашет

Сейчас, наверное, уже не актуально, но отвечу для других пользователей с такой же проблемой. Больше похоже на то, что необходимо перерегистрировать библиотеку ttcoreex.dll. Это можно сдать либо запустив скрипт ttcoreex.bat, который лежит в папке жабы, либо вручную - выполнив от администратора команду regsvr32.exe /u ttcoreex.dll, а затем regsvr32.exe ttcoreex.dll

Автор: Калевала Jan 11 2019, 23:26
Актуально. Попробую на работе в понедельник, хотя у меня смутное ощущение, что я это уже делал. Почему бы если строка выбрасывается куда-то посредством команды woutput просто не выводить ее в главное окно?
Я гото в принципе вообще пойти на специализированный формат обмена сообщениями с клиентом жабы, но это к сожалению сделает ее узкоспециализированной под Аладон. А может можно какой-нибудь аддончик прикрутить к жабе специально для Аладона?
Формат обмена мы в принципе делали с Кроникисом когда он флэш-клиент допиливал для Аладона. Можно его развить. Там правда было в формате XML, сейчас наверное я бы предпочел JSON.

Автор: Калевала Jan 22 2019, 11:18
Получилось перерегистрировать ttcoreex.dll там переписан ttcoreex.bat по другим версиям под десятку не выходило ничего. Ну и да все заработало.

Автор: Фелей Jan 22 2019, 19:21
QUOTE

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

Не понял, проблема с ttcoreex.bat? С моим, который в инсталяционном пакете, или со старым без автоматического запроса привилегий? Поясни, пожалуйста, подробнее, чтобы понять где что поправить.

QUOTE

Почему бы если строка выбрасывается куда-то посредством команды woutput просто не выводить ее в главное окно?

Текущее решение более гибкое. Если пользователь хочет убрать строку из основного окна, то ему необходимо всего лишь добавить одну команду #drop (для встроенных скриптов) или jmc.DropEvent() (для внешних). Например, при выводе разговоров в отдельное окно, многим привычнее оставлять исходные строки в основном окне. Это я к тому, что вывод в дополнительное окно не подразумевает обязательного удаления из основного. И в текущей реализации клиента, для этих не связанных между собой действий предусмотрены отдельные функции, что кажется логичным.

Могу добавить дополнительную функцию, некую woutput2(), которая будет в конце вызывать drop строки из основного окна. Но, как мне кажется, это лишнее нагромождение дублирующих друг друга функций.

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

QUOTE

Я готов в принципе вообще пойти на специализированный формат обмена сообщениями с клиентом жабы, но это к сожалению сделает ее узкоспециализированной под Аладон. А может можно какой-нибудь аддончик прикрутить к жабе специально для Аладона?

Имел в виду, что в жабе можно вообще ничего не менять, и получить удобный вывод отладочной информации просто изменив вывод этой инфы со стороны самого аладона. Не знаю каким образом посылается сейчас, ниже будут лишь догадки, возможно мне непонятны какие-либо проблемы. Если возможно более подробно описать каким образом сейчас выводится отладочная информация, то это помогло бы мне лучше понять суть проблемы.
Итак, каким образом мне представляется решение:
Пусть сейчас вывод отладочной инфы идет через функцию send_to_char (char *str, CHAR_DATA *ch). Вводим еще одну функцию
CODE

const char *prefix = "PREFIX5953465";
void send_to_char_debug( const char *txt, CHAR_DATA *ch )
{
   if ( txt != NULL && ch->desc != NULL )
   {
       write_to_buffer( ch->desc, prefix, strlen(prefix) );
       write_to_buffer( ch->desc, txt, strlen(txt) );
   }
   return;
}

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

#action COLOR {/PREFIX5953465(.*)/}{#woutput 2 {colorcodes} %0;#drop}{1}{default}

Триггер выведет полученную строку с префиксом (которая послана с помощью новой функции) во второе окно, удалив из вывода в основное. Приоритет триггера лучше сделать повыше.

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

Не разбирался пока, на каком этапе в rom добавляется пустая строка и промпт. Похоже, что send_to_char в результате отправляет и с тем и другим. Поэтому надо вместо send_to_char взять функцию, которая отправляет только строку без промпта.

Автор: Фелей Jan 23 2019, 18:36
Разобрался с выводом. Необходимо вместо write_to_buffer использовать write_to_descriptor
CODE

const char *prefix = "PREFIX5953465";
void send_to_char_debug( const char *txt, CHAR_DATA *ch )
{
  if ( txt != NULL && ch->desc != NULL )
  {
      write_to_descriptor( ch->desc, prefix, 0 );
      write_to_descriptor( ch->desc, txt, 0 );
  }
  return;
}


При использовании такой функции, строчки будут посылаться без лишних пустых строк и промпта

Автор: Калевала Jan 26 2019, 13:22
QUOTE (Фелей @ Jan 22 2019, 19:21)


QUOTE

Не понял, проблема с ttcoreex.bat? С моим, который в инсталяционном пакете, или со старым без автоматического запроса привилегий? Поясни, пожалуйста, подробнее, чтобы понять где что поправить.


Да со старым проблема была, с твоим ок. Стоит внести в описание, что регистрировать под вынь 7,8,10 стоит твоим батом.

Вывод завтра посмотрю.

Автор: Элисса Mar 10 2019, 13:56
При попытке добавить скрипт с одной строкой
jmc.Parse("#connect aladon.sovintel.ru 9000");
jmc3720 выдаёт ошибку:

---------------------------
Ошибка скриптов JMC
---------------------------
(null)
(null)
Строка:0 Ошибка:0 Scode:8002801d

---------------------------
ОК
---------------------------

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

Автор: Фелей Mar 10 2019, 14:42
Эта ошибка возникает если не зарегистрирована библиотека ttcoreex.dll. Жабу ставила не через инсталлятор, а распаковав zip архив, верно? Для исправления необходимо запустить ttcoreex.bat файл в папке жабы. Если не поможет, то запусти ещё раз от администратора

Автор: Элисса Mar 10 2019, 14:50
Да, верно. После запуска батника, всё заработало. Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)