Mudlet: IRE服务器无法协商MXP

创建于 2019-01-22  ·  26评论  ·  资料来源: Mudlet/Mudlet

问题摘要/请求的功能描述:

@ vadi2通知我,开发分支上的mxp代码不适用于IRE服务器。 因此,我从此开始研究这个问题。

重现问题的步骤/添加功能的原因:

  1. 在最新的开发分支上
  2. 连接
  3. ??
  4. 为什么MXP没有打开?

错误输出/功能的预期结果

我创建了一个脚本来检查IRE服务器是否已经协商了MXP。 不幸的是,事实并非如此。 服务器仅协商了GMCP。

额外信息,例如Mudlet版本,操作系统以及有关如何解决/实施的想法:

  1. 从3.16.1开始的最新开发分支。
  2. 我已经与IRE的Tecton进行了交谈,以了解为什么服务器没有为此进行谈判? 事实证明,它不是在狂喜引擎中。 他说,该功能会为Mudlet用户自动打开,因此不需要协商。 但是谈判代码可能会在下一个提速更新中(也许吗?)。

因此,我想今晚我应该专门针对IRE服务器进行变通,以便通过检查我们是否连接到IRE服务器来将其打开。

bug high regression

所有26条评论

这也许可以解释原始代码-但它们可能不是唯一的代码,并且我们不能默认破坏事情并为其中的每个游戏添加解决方法。

真的; 但是,问题将落在Evennia和也为此进行谈判的其他MUD游戏上, @ vadi2 :laughing:因此,您可能正在玩热土豆。 :man_shrugging:

据Evennia称,mushclient为他们工作! 它可能不一定是一个选择。

有趣的。 所以我们只是默认使用MXP进行下去吗? (并在其中放置注释以引用此问题...)

好吧,不,我们必须找到一种适用于Evennia和IRE的解决方案。 为了使Evennia不能在与MXP进行谈判之前逃脱<> ,并且让IRE在不进行协商的情况下以某种方式使MXP工作。

这是我们必须要做的难事。 用户不在乎它是否可以在一个或另一个上运行,他们希望Mudlet可以工作:man_shrugging:

也许创建一个可以为用户启用mxp的Lua函数。 我注意到我们没有Lua(懒惰)功能,该功能不允许我们直接打开或关闭mxp。 有了这个想法,我们就可以将它们组合在一起。

同时,具有该功能非常有用,以便泥浆编码器和Mudlet用户可以创建别名以将其打开和关闭以轻松观察它。

对于IRE用户,这仍然是一种解决方法。 MUSHclient如何做到这一点-它对于开箱即用的Eveneven / ChatMUD和IRE实际上都有效吗?

image

我应该注意,默认情况下在Mush Client中它是“ on command”的。

好的,所以IRE坏了了。

我正在考虑尝试以以下形式在mushclient中实现类似的功能:

1)'是/否/按命令'
2)它还应提供有用的工具提示,说明哪个选项适合于哪个服务器。 例如,对于“是”:
“如果您正在玩IRE游戏(例如,ach蝶,aetolia,starmourn等),建议选择此选项。

3)将其实现为XML选项(不要放弃force_mxp_negotiation选项),而是将其用于将选项导入新变量。 这是在更新中将旧的配置文件转换为新的配置文件。
4)每个默认配置文件都将具有XML选项,该选项可以是为每个相应游戏启用/禁用/命令定制的选项之一。

这不会做,我们不能有一个复杂的客户端,随着它的增长,它需要更多的旋钮和表链才能保持正常工作(并且不添加任何新功能)。

我们如何自动检测并启用MXP呢?

因此,我们要检测[#z]形式的mxp并检测协商?

是的。 基本上,为IRE添加一种解决方法(直到他们修复它)。

令他们惊讶的是,鉴于他们的MXP实施范围广泛,他们没有就此进行协商-您非常确定是这种情况吗?

mushclient还是IRE?

爱尔兰

从我收集到的信息可以通过他们的配置启用。 不过,到目前为止,他们还没有为mxp协商实现。 当我直接与Tecton沟通时,他说这可能会在下一个提速引擎更新中实现。 (我不知道何时会是下一个更新)。

好的-我们为引擎开始强制添加一个自动检测选项(就像我们之前... ha)

在修改它们之前,我们已经在此或相同代码之前进行了自动检测?

不,记得我们假设MXP在服务器无需协商的情况下就处于打开状态-这就是IRE工作的原因。

然后
1)默认情况下,我们将mxp保持打开状态(在初始化时将mMxp设置为false),显然IRE可以通过(esc)[4z
2)如果并且应该协商任何泥浆服务器,则mMXP将翻转为true。 (AKA代码0开行)

好的?

我想是的-您是说可以通过适当的协商或通过我们扫描魔术字符串来打开MXP。 否则关闭,并且<>显示确定。 听起来不错。

神奇的自动检测。 :p我明天将制作一个神奇的补丁PR。

请记住,那里的MUD甚至都不知道/不在乎MXP,因此,如果碰巧使用< >来表示它们的输出,例如某种形式的高亮显示列表中的一个值,则会破坏它们的输出。因此从HTML / XML的角度来看,它好像没有打开标签。 哦! 或者,至少,默认情况下它不应该为开...! :see_no_evil:

您应该可以通过在行后的TBuffer::translateToPlainText(std::string& data, const bool isFromServer)放置一些东西来触发自动检测魔术:

                case static_cast<quint8>('z'):

它将拦截所有MXP控制代码序列,但仅在条件合适的情况下才对其进行操作。 您应该用isFromServer触发,以便只有Server数据(和相应的Replays)才会使您的代码发痒-这样做可以防止feedTriggers( ... )产生误报

@SlySven谢谢。 我会仔细看看的。

此页面是否有帮助?
0 / 5 - 0 等级