MCDReforged/MCDReforged

关于玩家ID

Closed this issue · 14 comments

Gu-ZT commented

MCDR读取的是玩家在聊天栏显示的ID,而非玩家本身的ID,一旦为玩家加上队伍前缀,MCDR就无法识别该玩家
-7a74a961cc26d76f

这个我知道,如果队伍格式是多服务端统一的话之后可能会考虑做解析

这个队伍前缀好像是完全可以自定义的样子呀,没有一个固定的格式,我觉得解析不动

感觉可以正则表达式提取<>内容
然后split空格
提取空格后的第一位,前提是队伍前缀不能有空格😂
队伍前缀有空格这方案就GG

你无法保证所有人都按照这一个规范设置队伍前缀,我也不打算做出这样子的约束

你无法保证所有人都按照这一个规范设置队伍前缀,我也不打算做出这样子的约束

的确,这东西除非官方对队伍系统做出改动,目前来看,没戏

image
前缀后缀甚至可以没有空格,很难解决的问题啊

前缀会在加入游戏时显示吗,如果会提取玩家加入游戏时ID,当有info时,提取<>内容并判断是否存在玩家ID(?)

前缀会在加入游戏时显示吗,如果会提取玩家加入游戏时ID,当有info时,提取<>内容并判断是否存在玩家ID(?)

会比较混就是

感觉不如向MCDR注册(改一下解析器)方便

我意思就是改解析器 :)

建议往config里分类一个高级设置
然后把解析器的正则放里面允许用户自定义

大佬们好,关于这个问题我想献丑提供一下我的解决思路

21605150891_ pic_hd

不过我不确定能否得到服务器前缀列表,或者有更简洁的方法

放下代码

import re

info_content_ls = ["Jerry_FaGe left the game",
                   "前缀 Jerry_FaGe left the game",
                   "前缀Jerry_FaGe left the game"]

for info_content in info_content_ls:
    if re.search(r'(.*) left the game', info_content):
        player = re.search(r'(.*) left the game', info_content).group(1)
        print("带前缀的标准玩家名: %s" % player)  # 得到带前缀的标准玩家名
        # TODO 通过读取存档文件或者指令之类的方式构造服务器已有的前缀列表,循环判断并截掉前缀
        # 得到不带前缀的真实玩家名
    else:
        print("匹配不到")

wontfix解决啦
看1.0.0,自己写一个info_reactor吧

于 MCDR v1.0 以后你可以通过自定义 Server Handler 来处理个性化的服务器输出,见文档 https://mcdreforged.readthedocs.io/en/latest/customize/handler.html

借助于此,你可以实现一个适用于你的服务器的专用的 Handler,从而解决该 issue