hhttll
我这里有一个命令方块,我要让它用tellraw告诉一个区域的人某个人的名字,前后要加方括号。但是如果是 /tellraw @a[x=1,y=1,z=1,r=100] {text:"[ @p ]"} 的话,会输出 [ hhttll ],前后会多出一个空格。
但是如果是 /tellraw @a[x=1,y=1,z=1,r=100] {text:"[@]"} 的话,会输出 [@p],就无效了。


我希望输出的是 [hhttll] ,前后没有空格,我该怎么做?


我的MC版本是1.7.2,需要在服务器上使用。


回答目前没有方法的是不可能拿到金粒的。请先确保有效再告诉我。




pca006132
tellraw @a[x=1,y=1,z=1,r=100] [{text:"["},{selector:"@p"},{text:"]"}]
试试

hhttll
....没用...那个原json信息应该是大括号吧。。。我改成大括号还是没用。。

hhttll
pca006132 发表于 2015-7-18 15:08
tellraw @a[x=1,y=1,z=1,r=100] [{text:"["},{selector:"@p"},{text:"]"}]
试试

还有我这个是172

hhttll
pca006132 发表于 2015-7-18 15:08
tellraw @a[x=1,y=1,z=1,r=100] [{text:"["},{selector:"@p"},{text:"]"}]
试试

....没用...那个原json信息应该是大括号吧。。。我改成大括号还是没用。。

爱心魔王FHC
1.8已实验,可行
tellraw @a[x=1,y=1,z=1,r=100] {text:"[",extra:[{selector:"@p"},{text:"]"}]}
1.7却不行,因为1.7貌似没有加入@p选择器在tellraw指令中

hhttll
FHC红石 发表于 2015-7-18 19:39
1.8已实验,可行
tellraw @a[x=1,y=1,z=1,r=100] {text:"[",extra:[{selector:"@p"},{text:"]"}]}
1.7却不 ...

都说了我是1.7.2。。。那么1.7.2有没有什么办法呢,或者有没有什么办法可以用一个命令仿冒一个人说话?

langyo
问题①:如何才能实现用一个命令仿冒一个人说话?
回答:有办法的,不过暂时只能以直接加真实ID来使用
详情参见:json的详细解释

例子:
/tellraw @a {text:"<",extra:[{text:"此人ID "},{text:">"},{text:"内容,可以根据要求加上color等标签,详情上面的链接 "}]}效果:(假设是你)
<hhttll>!@$%^&*()_+

1.7.2只能像这样手动修改指令手动写(不过反着后面说话内容也会要改的,所以这种指令到1.8也是很常用)

问题②:选择器在tellraw中输出时如何将玩家名的前后空格去掉?
回答:1.7.2中因为没有引入selector(选择器)参数,所以暂时没办法。不过,到了1.8,这将可行。
(= =你只能先升级服务器啦= =这没办法只能二选一)
/tellraw {text:"<",extra:[{selector:"@p"},{text:">"},{text:"body "}]}



(本来想过用score来间接实现的,但是发现1.7.2连score都不是支持的太好= =)

(这简直是我回答过的最难的一道题,游戏不升级真可怕啊)

(但是,还是厚皮脸地求采纳= ={:10_502:})


langyo
langyo 发表于 2015-7-19 02:04
问题①:如何才能实现用一个命令仿冒一个人说话?
回答:有办法的,不过暂时只能以直接加真实ID来使用
详情 ...

对不起,我有个错误要说明下:
里头所有的"<"、">"都应该改成"["、"]"………………

= =

langyo
hhttll 发表于 2015-7-18 15:15
还有我这个是172

补充:问题②

回答②:不知道这可不可以……
/tellraw @a[1,1,1,100] {text:"[",extra:[{text:"@p"},{text:"]"}]}
可以试试……说不定能成……

hhttll
langyo 发表于 2015-7-19 02:04
问题①:如何才能实现用一个命令仿冒一个人说话?
回答:有办法的,不过暂时只能以直接加真实ID来使用
详情 ...

非常感谢您回答,但是我还是要说一下这个@p在1.7.2的原理是把所有的 “空格+@p+空格” 替换为 “空格+人名+空格”,也就是说它先解析所有的选择器,把解析结果替换到原来的“空格+@p+空格” 位置。也就是说/tellraw @a {text:" @p "} 实际上解析@p不是由tellraw执行的,而是在执行前命令就被解析成了/tellraw @a {text:" hhttll "} 。而1.8的Selector是tellraw完成的。

其实我做这个是要仿冒玩家说话,我的服务器里面显示格式是 [权限组 - 玩家名] 谈话内容。 也就是我只需要去掉玩家名后面的那个空格,所以我试过 “ @p \b” 用\b插入一个退格符,但是在mc里面居然显示一个框框,里面写着backspace...也是真够坑爹的。

hhttll
langyo 发表于 2015-7-19 02:08
补充:问题②

回答②:不知道这可不可以……

这个真的不行,详情看我上面那个回复。

langyo
hhttll 发表于 2015-7-19 12:38
这个真的不行,详情看我上面那个回复。

1.我看你签名里都开始求了
2.既然你说到了\b,我就又想到了一种,你可以试试= =
/tellraw @a[1,1,1,100] {text:"[",extra:[{text:" @p "},text:"\b"]}
/tellraw @a[1,1,1,100] {text:"[",extra:[{text:" @p "},text:" \b\b"]}

你再试试吧= =………………

hhttll
langyo 发表于 2015-7-19 12:44
1.我看你签名里都开始求了
2.既然你说到了\b,我就又想到了一种,你可以试试= =
/tellraw @a[1,1,1,100]  ...


hhttll
langyo 发表于 2015-7-19 12:44
1.我看你签名里都开始求了
2.既然你说到了\b,我就又想到了一种,你可以试试= =
/tellraw @a[1,1,1,100]  ...

我签名档昨天就开始了

langyo

你图挂了,能重新发吗?

hhttll
langyo 发表于 2015-7-19 13:29
你图挂了,能重新发吗?


langyo

我………………
= =