Многопользовательский мир АЛАДОН



Страницы: (2) 1 [2]   ( Перейти к первому непрочитанному сообщению ) Reply to this topicStart new topic

> Новый JMC, Есть еще энтузиасты )
Фелей
Отправлено: Jul 19 2017, 21:32
Quote Post





Группа: Участники
Сообщений: 20
Пользователь №: 2167
Регистрация: 26-February 09



Может я что-то не так понял... Можно пример сообщений при которых не убирается прокрутка? Пробовал и с #promptdrop и через триггер на промпт - нигде не было прокрутки. И в том и другом случае строка приглашения убирается или переносится полностью, включая перенос строки.
PMEmail Poster
Top
Калевала
Отправлено: Jul 19 2017, 22:32
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1816
Пользователь №: 55
Регистрация: 15-April 04



Ок. Завтра напишу.


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Фелей
Отправлено: Jul 21 2017, 22:28
Quote Post





Группа: Участники
Сообщений: 20
Пользователь №: 2167
Регистрация: 26-February 09



Поправил кое-какие ошибки и добавил опцию залипания прокрутки главного окна (как в wireshark).
https://github.com/Rrahh/jmc/releases/tag/3713
PMEmail Poster
Top
Калевала
Отправлено: Jul 24 2017, 11:49
Quote Post


Хозяин Хелльстада
******

Группа: Администраторы
Сообщений: 1816
Пользователь №: 55
Регистрация: 15-April 04



Не совсем понятен смысл этого. Если прокрутка не до конца окна, то промпт не видно, а если до конца, то идет прокрутка окна.
По поводу прокрутки. Я тут поковырялся и вспомнил, что у меня там не тригером был отлов тех.информации, а скриптом. В функции 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;

}

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


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Фелей
Отправлено: Jul 24 2017, 21:37
Quote Post





Группа: Участники
Сообщений: 20
Пользователь №: 2167
Регистрация: 26-February 09



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. Все остальные строки до первого промпта включительно пропускает. Например, по команде "группа" выводится только первая строчка "группа того-то:", строки с квадратной скобкой выводятся в первое окно, а промпт и пустая строка (если отключен "компакт") удаляются. Для управления процессом используется глобальная переменная, которая принимает два состояния, соответствующие наличию подходящей информации и ее отсутствию. В более общем случае, формируется "машина состояний", где эта переменная будет соответствовать различным состояниям системы. Например, если хочется перенести только строки из команды "группа", и не переносить из магазина, то можно добавить дополнительное состояние системы, соответствующее получению строки "группа того-то:". И только уже из этого, дополнительного состояния, срабатывать на строку со скобками.
PMEmail Poster
Top
Фелей
Отправлено: Aug 5 2017, 22:37
Quote Post





Группа: Участники
Сообщений: 20
Пользователь №: 2167
Регистрация: 26-February 09



Мелкие исправления:

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

https://github.com/Rrahh/jmc/releases/tag/3714
PMEmail Poster
Top
Фелей
Отправлено: Aug 6 2017, 16:41
Quote Post





Группа: Участники
Сообщений: 20
Пользователь №: 2167
Регистрация: 26-February 09



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

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

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

Это сообщение отредактировал Фелей - Aug 6 2017, 16:43
PMEmail Poster
Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic Options Страницы: (2) 1 [2]  Reply to this topicStart new topic

 



[ Script Execution time: 0.0354 ]   [ 13 queries used ]   [ GZIP включён ]