@ vadi2通知我,开发分支上的mxp代码不适用于IRE服务器。 因此,我从此开始研究这个问题。
我创建了一个脚本来检查IRE服务器是否已经协商了MXP。 不幸的是,事实并非如此。 服务器仅协商了GMCP。
因此,我想今晚我应该专门针对IRE服务器进行变通,以便通过检查我们是否连接到IRE服务器来将其打开。
这也许可以解释原始代码-但它们可能不是唯一的代码,并且我们不能默认破坏事情并为其中的每个游戏添加解决方法。
真的; 但是,问题将落在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实际上都有效吗?
我应该注意,默认情况下在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谢谢。 我会仔细看看的。