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



Страницы: (7) « Первая ... 5 6 7   ( Перейти к первому непрочитанному сообщению ) Reply to this topicStart new topic

> Новый JMC, Есть еще энтузиасты )
Фелей
Отправлено: May 24 2018, 18:33
Quote Post


Ньюб
*

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



Можно, например, вписать команду в файл скрипта через 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.: алиас 'зайти' принимает один аргумент - имя персонажа. Например, 'зайти Колко'

Это сообщение отредактировал Фелей - May 24 2018, 18:40
PMEmail Poster
Top
Ауст
Отправлено: Jul 18 2018, 06:46
Quote Post


Ньюб
*

Группа: Участники
Сообщений: 33
Пользователь №: 1136
Регистрация: 13-June 05



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


--------------------
Иной
PMEmail PosterICQ
Top
Калевала
Отправлено: Nov 9 2018, 10:28
Quote Post


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

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



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


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Nov 9 2018, 12:07
Quote Post


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

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



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


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Фелей
Отправлено: Dec 29 2018, 19:32
Quote Post


Ньюб
*

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



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
PMEmail Poster
Top
Калевала
Отправлено: Jan 11 2019, 23:26
Quote Post


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

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



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


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Калевала
Отправлено: Jan 22 2019, 11:18
Quote Post


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

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



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


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


Ньюб
*

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



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 взять функцию, которая отправляет только строку без промпта.
PMEmail Poster
Top
Фелей
Отправлено: Jan 23 2019, 18:36
Quote Post


Ньюб
*

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



Разобрался с выводом. Необходимо вместо 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;
}


При использовании такой функции, строчки будут посылаться без лишних пустых строк и промпта
PMEmail Poster
Top
Калевала
Отправлено: Jan 26 2019, 13:22
Quote Post


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

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



QUOTE (Фелей @ Jan 22 2019, 19:21)


QUOTE

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


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

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


--------------------
Кодерус Аладонус
PMEmail PosterUsers Website
Top
Элисса
Отправлено: Mar 10 2019, 13:56
Quote Post


Ньюб
*

Группа: Участники
Сообщений: 34
Пользователь №: 1751
Регистрация: 28-June 07



При попытке добавить скрипт с одной строкой
jmc.Parse("#connect aladon.sovintel.ru 9000");
jmc3720 выдаёт ошибку:

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

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

После этого при каждом запуске с подключённым скриптом Жаба выдаёт ту же ошибку, скрипт не выполняет.
PMEmail Poster
Top
Фелей
Отправлено: Mar 10 2019, 14:42
Quote Post


Ньюб
*

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



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


Ньюб
*

Группа: Участники
Сообщений: 34
Пользователь №: 1751
Регистрация: 28-June 07



Да, верно. После запуска батника, всё заработало. Спасибо!
PMEmail Poster
Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Topic Options Страницы: (7) « Первая ... 5 6 7  Reply to this topicStart new topic

 



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