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



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

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


Ньюб
*

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



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


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

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



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


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


Ньюб
*

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



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


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

Группа: Администраторы
Сообщений: 1881
Пользователь №: 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


Ньюб
*

Группа: Участники
Сообщений: 74
Пользователь №: 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


Ньюб
*

Группа: Участники
Сообщений: 74
Пользователь №: 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


Ньюб
*

Группа: Участники
Сообщений: 74
Пользователь №: 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
хартэр
Отправлено: Aug 22 2017, 17:34
Quote Post


Мидл
***

Группа: Участники
Сообщений: 192
Пользователь №: 888
Регистрация: 20-December 04



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


--------------------
Нас невозможно сбить с пути.
Нам пофигу куда идти.
PMEmail PosterICQAOLYahooMSN
Top
Фелей
Отправлено: Aug 22 2017, 19:15
Quote Post


Ньюб
*

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



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), скопируйте текст примера, вставьте в жабу. В результате в дополнительном окне будет нарисована красивая карта.
PMEmail Poster
Top
хартэр
Отправлено: Aug 22 2017, 20:05
Quote Post


Мидл
***

Группа: Участники
Сообщений: 192
Пользователь №: 888
Регистрация: 20-December 04



Я наверно немного не так написал, вопрос в том, можно ли встроенную в аладон карту вывести в отдельном окне ?:)


--------------------
Нас невозможно сбить с пути.
Нам пофигу куда идти.
PMEmail PosterICQAOLYahooMSN
Top
Фелей
Отправлено: Aug 22 2017, 20:12
Quote Post


Ньюб
*

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



Можно. Несложный и, пожалуй, единственный вариант это написать скрипт для обработки текста. Сейчас напишу ради интереса.
PMEmail Poster
Top
хартэр
Отправлено: Aug 22 2017, 20:39
Quote Post


Мидл
***

Группа: Участники
Сообщений: 192
Пользователь №: 888
Регистрация: 20-December 04



Буду очень благодарен :)


--------------------
Нас невозможно сбить с пути.
Нам пофигу куда идти.
PMEmail PosterICQAOLYahooMSN
Top
Фелей
Отправлено: Aug 22 2017, 23:36
Quote Post


Ньюб
*

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



Сделал два варианта - через встроенные скрипты и через внешние. Вывод везде в шестое дополнительное окно, которое необходимо самостоятельно открыть через меню.

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

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 22 2017, 23:37
PMEmail Poster
Top
хартэр
Отправлено: Aug 23 2017, 18:43
Quote Post


Мидл
***

Группа: Участники
Сообщений: 192
Пользователь №: 888
Регистрация: 20-December 04



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


--------------------
Нас невозможно сбить с пути.
Нам пофигу куда идти.
PMEmail PosterICQAOLYahooMSN
Top
Фелей
Отправлено: Aug 23 2017, 19:10
Quote Post


Ньюб
*

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



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

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

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

Topic Options Страницы: (7) 1 [2] 3 4 ... Последняя » Reply to this topicStart new topic

 



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