Онлайн игра Адамант Адан: Хроники Средиземья
0 Пользователей и 1 Гость просматривают эту тему.
Страницы: [1]

Bester

  • Ветеран
  • ****
  • Сообщений: 142
20 Янв 2014 в 06:26

Вопрос по жабе - не получается стригерить опр. строку

Иногда в жабе строчки приходят не отдельно, а вместе со строкой статуса. Т.е. вот так:



Тригера на них не срабатывают ни в какую, притом, что якорёк ^ я не ставил.

Не срабатывает даже {%0 тепло улыбнулись}

Ну и самый катарсис я испытал, когда не сработало {/[\n.]*Вы тепло улыбнулись/}

Такую строчку вообще возможно стриггерить???

petka

  • Герой
  • *****
  • Сообщений: 300
20 Янв 2014 в 10:37

Re: Вопрос по жабе - не получается стригерить опр. строку

Вобщем напишу поподробнее. Может Линдир что-то добавит.

Проблема известная. Жаба (как и новый клиент) получает строку во свой внутренний буффер и не начинает ее обрабатывать пока не получит символ конца строки (\n\r или что-то там). Беда в том, что этот символ иногда залипает.

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

Так вооот. В жабе есть спец настройка "Задержка незавершенных строк". По умолчанию она равна 100мс.
Она означает что если от сервера 100мс не приходят данные и при этом в буффере есть незавершенная строка, то эта строка сбрасывается как завершенная. Попробуй ее увеличить (5000 мс) и сдается мне это решит твою проблему.

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

Линдир

  • [Бессмертный]
  • Герой
  • *****
  • Сообщений: 1011
20 Янв 2014 в 13:28

Re: Вопрос по жабе - не получается стригерить опр. строку

Ну вообще мад поддерживает уже хрен знает сколько времени telnet GA и нормальные клиенты типа mmc его давно поддерживают :)
По хорошему надо встроить в новый.

Смысл в том, насколько я помню, строка должна заканчиваться этим символом. Если это не так, то тогда надо ждать продолжения какое-то время.

lrdx

  • Герой
  • *****
  • Сообщений: 328
20 Янв 2014 в 13:38

Re: Вопрос по жабе - не получается стригерить опр. строку

Ну вообще мад поддерживает уже хрен знает сколько времени telnet GA и нормальные клиенты типа mmc его давно поддерживают :)
По хорошему надо встроить в новый.

Смысл в том, насколько я помню, строка должна заканчиваться этим символом. Если это не так, то тогда надо ждать продолжения какое-то время.

А по моему наоборот, Telnet.GoAhead означает как раз то, что нужно вставить перевод строки, но сами данные не выводить(сделано это видимо для того, чтобы выводилось все одним махом, например удары в раунд). Так вот иногда бывает так, что символ перевода строки "залипает" где-то и приходит только со следующим текстом, поэтому что жаба, что новый клиент висит и ждет перевод строки. Почему конкретно вот это в жабе не срабатывает я не знаю, но, думаю, что в новом клиенте с этим все ок.

Ну и самый катарсис я испытал, когда не сработало {/[\n.]*Вы тепло улыбнулись/}

Такое думаю вообще не сработает ни в одном клиенте, т.к. везде идет построчное сравнение сабов.
Изменено

Линдир

  • [Бессмертный]
  • Герой
  • *****
  • Сообщений: 1011
20 Янв 2014 в 13:43

Re: Вопрос по жабе - не получается стригерить опр. строку

Посмотрел код, все правильно строка prompt заканчивается IAC GA
Для нового клиента это высылается всегда, а для других только если включен реж га

Вопрос только поддерживает ли новый клиент эту последовательность?

lrdx

  • Герой
  • *****
  • Сообщений: 328
20 Янв 2014 в 14:38

Re: Вопрос по жабе - не получается стригерить опр. строку

Посмотрел код, все правильно строка prompt заканчивается IAC GA
Для нового клиента это высылается всегда, а для других только если включен реж га

Вопрос только поддерживает ли новый клиент эту последовательность?

Я правильно понимаю, что IAC GA означает, что нужно выводить строку без перевода строки?
Или можно как-то поподробнее объяснить что в мадах означает этот символ.

petka

  • Герой
  • *****
  • Сообщений: 300
20 Янв 2014 в 15:07

Re: Вопрос по жабе - не получается стригерить опр. строку

Сейчас поглядел IAC GA поддерживается в новом клиенте.
Линдир, а можешь еще глянуть IAC ECHO?
Это режим не отображения символов при вводе пароля.
Там если залогиниться первый раз, то все нормально.
А если зарентиться, выбрать другого персонажа, ввести пароль, то режим ECHO не включается и все символы при вводе отображаются звездочками.

Линдир

  • [Бессмертный]
  • Герой
  • *****
  • Сообщений: 1011
20 Янв 2014 в 17:37

Re: Вопрос по жабе - не получается стригерить опр. строку

Ну а чего там смотреть, где-то это прописано, а где-то нет :) По сути бага

konelav

  • Гость
  • *
  • Сообщений: 1
11 Окт 2016 в 01:49

Re: Вопрос по жабе - не получается стригерить опр. строку

В JMC3.7 логика обработки строк вообще и триггеров в частности существенно переработана.
Никаких проблем быть не должно, тем более с реж га.
https://github.com/konelav/jmc/releases/tag/3710

Страницы: [1]