Mudlet: IREサーバーはMXPについてネゴシエートしません

作成日 2019年01月22日  ·  26コメント  ·  ソース: Mudlet/Mudlet

問題の簡単な要約/要求された機能の説明:

@ vadi2から、開発ブランチのmxpコードがIREサーバーで機能していないことが通知されました。 それで、私は今後問題を調査しました。

問題を再現する手順/機能を追加する理由:

  1. 最新の開発ブランチに参加する
  2. 接続する
  3. ??
  4. なぜmxpがオンになっていないのですか?!

エラー出力/機能の期待される結果

MXPがIREサーバーによってネゴシエートされているかどうかを確認するためのスクリプトを作成しました。 残念ながら、そうではありませんでした。 GMCPのみがサーバーによってネゴシエートされました。

マドレットのバージョン、オペレーティングシステム、解決/実装方法のアイデアなどの追加情報:

  1. 3.16.1以降の最新の開発ブランチ。
  2. サーバーがネゴシエートしなかった理由を確認するために、IREのTectonと話をしました。 それは携挙エンジンではなかったことがわかりました。 マッドレットユーザーは自動的にオンになるので、交渉は必要ないとのことでした。 しかし、ネゴシエーションコードは次のラプチャーアップデートに含まれる可能性があります(多分?)。

したがって、今夜は特にIREサーバー専用の回避策PRを作成して、IREサーバーに接続しているかどうかを確認することでオンになるようにする必要があると思います。

bug high regression

全てのコメント26件

これで元のコードが説明されるかもしれませんが、それだけではない可能性があり、デフォルトで問題を解決して、すべてのゲームに回避策を追加することはできません。

本当; ただし、問題は、Evenniaやそれをネゴシエートする他のMUDゲームにもフォールバックします。 @ vadi2 :laughing:だから、ホットポテトで遊んでいる可能性があります。 :man_shrugging:

Evenniaによると、mushclientは彼らのために働いています! それは選択である必要はないかもしれません。

面白い。 それで、MXPをデフォルトで先に進めるだけですか? (そして、この問題を参照するためにそこのどこかにコメントを置くために...)

いいえ、EvenniaとIREの両方で機能するソリューションを見つける必要があります。 イーブンニアがMXPが交渉される前に<>を逃がさないようにするため、そしてIREが何らかの形でMXPを交渉せずに機能させるために。

これは私たちがしなければならない難しいことです。 ユーザーはそれがどちらで機能するかを気にせず、Mudletが機能することを望んでいます:man_shrugging:

たぶん、ユーザーに対してmxpを有効にすることができるLua関数を作成します。 mxpを直接オフまたはオンにすることができるLua(レイジー)機能がないことに気づきました。 そのアイデアで、プロファイルにそれらを結合することができます。

同時に、マッドコーダーとマッドレットユーザーがエイリアスを作成してオフとオンを切り替えて簡単に観察できるように、この機能を使用すると便利です。

それでも、IREユーザーにとっては回避策です。 MUSHclientはどのように機能しますか?実際には、Evennia / ChatMUDとIREの両方ですぐに機能しますか?

image

私はそれがmushクライアントのデフォルトで「コマンド上」であったことに注意する必要があります。

ああ、それで、箱から出してIREが壊れました。

私は次の形でmushclientに似たようなものを実装しようと考えています:

1) 'はい/いいえ/オンコマンド'
2)また、どのオプションがどのサーバーに適しているかを説明する便利なツールチップを提供する必要があります。 たとえば、「はい」の場合:
「IREゲーム(アチャエア、アエトリア、スターモーンなど)をプレイしている場合は、このオプションを選択することをお勧めします。

3)これをXMLオプションに実装します(forced_mxp_negotiationオプションを放棄しないでください)。代わりに、これを使用してオプションを新しい変数にインポートします。 これは、アップデートで古いプロファイルを新しいプロファイルに変換することです。
4)各デフォルトプロファイルには、それぞれのゲームに合わせて有効化/無効化/コマンド調整できるXMLオプションがあります。

これではうまくいきません。物事を機能させ続けるためだけに(そして新しい機能を追加せずに)成長するにつれて、より多くのノブとフォブを必要とする複雑なクライアントを持つことはできません。

MXPを自動検出して有効にするのはどうですか?

したがって、[#zの形式でmxpを検出し、ネゴシエーションも検出しますか?

ええ基本的に、IREの回避策を追加します(修正されるまで)。

MXPの実装がどれほど広範であるかを考えると、彼らが交渉しないことに驚いています。そうだと確信していますか?

mushclientまたはIRE?

IRE

私が集めたものから、それは彼らの設定によって有効にすることができます。 ただし、現時点ではmxpのネゴシエーション実装はありません。 私がこれについてTectonと直接連絡したとき、彼はそれが次のraptureengineアップデートで実装されるかもしれないと言います。 (次のアップデートがいつになるかわかりません)。

わかりました-エンジンが強制を開始した場合の自動検出オプションを追加しましょう(以前のように... ha)

これらを変更する前に、これまたは同じコードの前にこの自動検出を行いましたか?

いや、サーバーがネゴシエートせずにMXPがオンになっていると想定したことを思い出してください。これが、IREが機能した理由です。

その後
1)デフォルトでは、mxpをオンのままにします(初期化時にmMxpをfalseに設定)。明らかに、IREは(esc)[4zによってオンにできます。
2)泥サーバーがネゴシエートされた場合、mMXPはtrueに反転します。 (別名コード0オープンライン)

良い?

私はそう思います-MXPは、適切な交渉によって、またはマジックストリングをスキャンすることによってオンにできると言っています。 それ以外の場合はオフになり、 <>は正常に表示されます。 いいですね。

魔法の自動検出。 :p明日は魔法のパッチPRを作ります。

MXPを知らない/気にしないMUDがあることを忘れないでください。たとえば、リスト内の1つの値を強調表示するために、たまたま< >を使用した場合に出力を操作します。そのため、HTML / XMLの観点からは、タグがオンになっていないように見えます。 なんてこった! または、少なくとも、デフォルトではオンにしないでください...! :see_no_evil:

次の行の後に何かをTBuffer::translateToPlainText(std::string& data, const bool isFromServer)に入れると、自動検出マジックを起動できるはずです。

                case static_cast<quint8>('z'):

これは、すべてのMXP制御コードシーケンスをインターセプトしますが、条件が正しい場合にのみそれらに作用します。 サーバーデータ(および対応するリプレイ)のみがコードをくすぐるように、おそらくisFromServerで起動をゲートする必要があります。そうすることで、 feedTriggers( ... )からの誤検知を防ぐことができます。ユーザー/パッケージャーのスクリプトによる

@SlySvenありがとう。 私はそれを徹底的に調べます。

このページは役に立ちましたか?
0 / 5 - 0 評価