yytatghtgh
版本1.12 单人地图


如何用 命令方块设置NPC对话


如何显示 任务提示信息 等常用的技巧

⊙v⊙
心大基础少...

对话也分一次型和可重复型的...差别就是循环使用的要设置归位。

一次型的设置为只激活一次。也可以生成掉落物,玩家检到...被成功clear背包后执行say hi。

靠近就触发对话等的用execute @e[tag=marker] ~ ~ ~ execute @a[type=player,r=5] ~ ~ ~ say hi
不用实体marker的话,可考虑利用刷怪笼检测附近玩家,在生成点生成实体激活踏板等...

左击触发对话等的用1血实体,检测不到其存在时say hi,结束后归位。
右击触发对话等的用scoreboard的stat.talkedToVillager检测分数,大于等于1时say hi,结束后分数归位。


低端的用say,高端用tellraw。
tellraw配合点击事件和记分版就能做一个高端对话出来。
显示任务提示的话,tellraw,title的actionbar,或者scoreboard的setdisplay,sidebar。

不如说,你要哪种触发方式,哪种显示方式...那么多,总不能让我把全部都告诉你吧

等常用技巧...不举例,根本不知道你在问哪些。
非要问的话我的常用技巧是wiki,data get,execute,blockbench,mcfunction,reload,f3+t,f3+b,f3+g...

不动要塞
简单的
npc面前放个踏板/按钮    下面命令方块 /say 说话

复杂的
检测位置,背包,计分板,物品,靠近,标题

pineapple_
心…………

补充一个,CustomNameVisible:1,修改CustomName也可以实现NPC对话
不过玩家如果不注意看,就看不见了,不如say或者tellraw来的直接

yytatghtgh
之前一位大大教的 指令
靠近时会说 你好,但是只能加一组
再想加一组的时候就刷屏了,估计标签冲突什么的,不太好用

比如一个场景里有几个NPC,怎么能靠近他们时,都能说话
还想加一些任务提示什么的,不知到怎么设计,
能想到的办法就只有踩踏板,用命令放块打字了


/tellraw @a[x=-406,y=66,z=-642,dx=10,dy=8,dz=10,tag=!def] {"text":"你好"}
/scoreboard players tag @a[tag=def] remove def
/scoreboard players tag @a[x=-406,y=66,z=-642,dx=10,dy=8,dz=10] add def

yytatghtgh
/tellraw @a[x=-406,y=66,z=-642,dx=10,dy=8,dz=10,tag=!def] {"text":"你好"}
/scoreboard players tag @a[tag=def] remove def
/scoreboard players tag @a[x=-406,y=66,z=-642,dx=10,dy=8,dz=10] add def

还有这段指令怎么不能调整范围呢,我改了几次后面的 dx=10,dy=8,dz=10  好像没什么变化

⊙v⊙
  1. /execute @e[tag=npc_1] ~ ~ ~ tellraw @a[r=2,tag=!talking] ...
  2. /execute @e[tag=npc_1] ~ ~ ~ scoreboard players tag @a[r=2,tag=!talking] add talking
  3. /execute @e[tag=npc_1] ~ ~ ~ scoreboard players tag @a[r=4,rm=3,tag=talking] remove talking
复制代码

放在function里并通过/gamerule gameLoopFunction循环执行。function还有一个好处是方便管理

首先要给你那个npc一个tag标签,可以用/scoreboard players tag @e[type=...,r=...,c=1] add npc_1进行标签添加
比如npc_1,然后
命令依次意思为
以标签为npc_1的实体和其所在位置执行,让范围2格内没有talking标签的玩家执行tellraw。
以标签为npc_1的实体和其所在位置执行,让范围2格内没有talking标签的玩家添加talking标签。
以标签为npc_1的实体和其所在位置执行,让范围3格外,4格内有talking标签的玩家移除talking标签。

那么,简单来讲就是
对进入npc_1范围内的玩家进行一次tellraw,同时给予玩家一个talking标签,防止循环执行tellraw。


当玩家离开npc_1范围外时,去除玩家的talking标签,当玩家再次进入npc范围时,就能再次tellraw。

因为是function,所以理论上不会刷屏
这么做有个好处是不用记坐标...


然后是tellraw  http://www.mcbbs.net/thread-205332-1-1.html,点击事件
因为教程是旧的,1.12的话注意转义  http://www.mcbbs.net/thread-700975-1-1.html
因为点击事件后面填的runcommand可能不够写后续的tellraw,所以改为run另一个function。
那个function里面填上 tellraw @s ...这样就好









其他你可能需要的技巧
https://commandtutorials.neocities.org/

第一页 上一页 下一页 最后一页