BE教程

【麦仁丝课堂】第一期 玩家序数(UID)统计系统

Mir***Lv.2 注册会员 发表于 2023-1-18 · 最后回复 2023-6-2 IP:浙江省 3,036 6
AI 速览2026-09-26 10:02 生成

命令方块进阶教程:用标签与计分板为每位玩家分配唯一UID

这是麦仁丝课堂第一期教程,讲解如何用命令方块搭建玩家序数统计系统,为每个进入服务器的玩家分配一个各不相同的数字,也就是常说的UID。教程给出循环加连锁有条件的命令方块组结构,分跟踪未统计玩家、递增虚拟实体分数并赋值、添加已统计标签并取消跟踪三步,并汇总了所用指令、计分板与实体标签。适合已了解命令方块基础、想为服务器做玩家编号的玩家阅读。

  • 需要掌握命令方块与计分板基础
  • 教程基于命令方块循环加连锁有条件结构
  • 原发布于网易论坛,作者已转驻苦力怕论坛
  • 视频版教程尚未发布
本卡片由 AI 阅读本帖后生成,可能存在疏漏,请以帖子正文为准。
本帖最后由 Mirence 于 2024-6-15 18:46 编辑

命令方块进阶教程之

玩家序数统计系统

导语:玩家序数统计系统的功能是给予每一个玩家对应的数字,也就是很多服务器中所说的UID,有利于更好地分辨和定位玩家。
95240ECF-626E-41A6-8BFF-DFE0E668D266.jpeg


玩家序数统计系统的简要内容如下表:
难度
★
主要指令
/tag, /scoreboard
用途
服务器


玩家序数统计系统的主要流程如下图:

【麦仁丝课堂】玩家序数统计系统 思维导图

【麦仁丝课堂】玩家序数统计系统 思维导图



正文:
    这里的命令方块组结构采用的是简单的“循环开启+若干连锁有条件”类型。

第一步:跟踪一个未被统计过的玩家。
    我们可以随机为一个未被统计过的玩家添加一个实体标签t1,用于跟踪这个玩家*。因为一次只能给予一个玩家一个序数,所以为避免两个未被统计过的玩家同时上线,这里采用随机玩家@r作为目标选择器的变量。
    可以将以下指令写入第一个“循环 开启”命令方块中(t2是已统计的玩家拥有的标签):
  1. tag @r[tag=!t2] add t1
复制代码
*跟踪:当一个命令方块不足以对一个玩家执行完所有命令,而且两个命令方块中的目标选择器可能无法选择到同一个玩家时,可以先用一个命令方块标记这个玩家,以便后面更多的命令方块可以都对该玩家执行命令,麦仁丝将这种方法称为“跟踪”。如上文我用@r作为目标选择器的变量,如果不对这个随机玩家进行“跟踪”,且所有命令方块都用同一个目标选择器“@r”的话,那么这明显是错误的。除了可以通过实体标签跟踪外,还可以通过计分板、盔甲架(实体)等进行跟踪。

第二步:给予跟踪的玩家玩家序数(UID)
    首先,我们需要一个虚拟实体来记录当前玩家拥有的最高的序数,即上一次给予玩家的序数。当第一个命令方块成功执行后(也就是当游戏中存在未被统计过的玩家时),在给予序数之前,我们可以为虚拟实体e1在计分板se(专门统计虚拟实体分数的计分板,无初始分数)上的分数加1分,然后再将e1在se上的分数赋值给被跟踪玩家在计分板s1上的分数(即让被跟踪玩家在s1上的分数等于e1在se上的分数)。s1就是专门用来统计各个玩家的玩家序数的计分板。此时这个被跟踪玩家的玩家序数就能比上一个玩家高一分了,实现了每一个玩家在s1的分数各不相同。
    我们可以将以下指令写入第二个“连锁 有条件”命令方块中:

  1. scoreboard players add e1 se 1
复制代码
       我们可以将以下指令写入第三个“连锁 有条件”命令方块中:
  1. scoreboard players operation @a[tag=t1] s1 = e1 se
复制代码

第三步:取消跟踪玩家
    给予了被跟踪玩家序数之后,这个玩家已经成为被统计过的玩家(可以理解为注册过的玩家),最后我们只要在给予被跟踪玩家一个表示已统计的标签t2,再去掉被跟踪玩家的跟踪标签t1,所有命令就执行结束了。
    我们可以将以下指令写入第四个“连锁 有条件”命令方块中:

  1. tag @a[tag=t1] add t2
复制代码
       我们可以将以下指令写入第五个“连锁 有条件”命令方块中:
  1. tag @a[tag=t1] remove t1
复制代码
       当又有一个新玩家进入游戏时,他(她)又会被跟踪,并在s1上给予其比上一个被跟踪的玩家高1的分数,以此推类……于是便实现了每一个玩家对应一个分数,这就是各个玩家的玩家序数(UID)。

玩家序数统计系统 思维流程图:

【麦仁丝课堂】玩家序数统计系统 流程图

【麦仁丝课堂】玩家序数统计系统 流程图

思维导图注释:
循环:第一个命令方块为重复命令方块
添加: 添加实体标签
删除:删除实体标签
设置:计分板指令
e:s:(虚拟)实体e在计分板s上的分数

玩家序数统计系统 指令内容汇总:

【麦仁丝课堂】玩家序数统计系统 指令内容汇总

【麦仁丝课堂】玩家序数统计系统 指令内容汇总

①tag @r[tag=!t2] add t1     循环 开启
②scoreboard players add e1 se 1     连锁 有条件
③scoreboard players operation @a[tag=t1] s1 = e1 se     连锁 有条件
④tag @a[tag=t1] add t2     连锁 有条件
⑤tag @a[tag=t1] remove t1     连锁 有条件


玩家序数统计系统 事物名称汇总:
计分板:2个
s1:玩家序数计分板
se:虚拟实体计分板
└ e1:最高序数

实体标签:2个
t1:用于跟踪一个未统计玩家
t2:已统计玩家
虚拟实体:1个
e1: se: 最高序数

    那么,本期教程就到这里结束了。如果真正掌握了玩家序数统计系统并且能够灵活运用命令方块的话,实际上可以发现教程中的一些内容仍然是可以简化和调整的。但麦仁丝更加喜欢清晰地表达,也就是清晰在前,简化在后。本期教程作为命令方块进阶教程的第一期教程,也是一次试验,所以内容是比较简单的,以后还会有许多比较复杂的内容,希望这种教学方式能够让大家更好地理解教程的内容。
    感谢大家的支持!!!

(本期教程最早于2021年8月9日发布于网易我的世界论坛,现麦仁丝已转驻苦力怕论坛,将停止在网易我的世界论坛上的发布教程)

点此前往 麦仁丝课堂 目录


点此前往 命令方块进阶教程 食用指南

(本期视频版教程尚未发布)





回复 6 最早 最新 只看楼主
您需要登录后才可以回帖 登录 | 立即注册
本版积分规则